Может ли кто-нибудь помочь мне заставить работать диалоговое окно "Игра окончена!"?
Я пытался заставить эту змеиную игру работать, но моя единственная проблема заключается в том, что когда змея ударяется о стену или врезается в себя, я хочу, чтобы она отображала сообщение "Игра окончена! Ваш счет (независимо от того, что это за счет)"
Но по какой-то причине я просто не могу понять этого. Может быть, я упускаю что-то очевидное из этого? Я только недавно начал учиться кодировать, так что если это что-то нубишное, что я пропустил, пожалуйста, не давайте мне слишком много дерьма за это, я новичок во всем этом.
Вот что у меня есть до сих пор:
<html lang="en">
<body background="blue.jpg">
<голова>
<meta charset="UTF-8">
в <название&ГТ;простая игра Змейка будет</название&ГТ;
Игра Змейка
холст {
дисплей: блок;
положение: абсолютное;
граница: 1px solid #000;
маржа: авто;
топ: 0;
дно: 0;
справа: 0;
слева: 0;
}
</head>
<форма>
Имя: <input type="text" name="firstname" id="fn">
Фамилия: <input type="text" name="lastname" id="ln">
</форма>
Используйте клавиши со стрелками, чтобы переместить вашу змею к еде!
<тело>
<скрипт>
вар
COLS = 26,
Строк = 26,
Пусто = 0,
Змея = 1,
Фрукты = 2,
Слева = 0,
ВВЕРХ = 1,
Справа = 2,
Вниз = 3,
KEY_LEFT = 37,
KEY_UP = 38,
KEY_RIGHT = 39,
KEY_DOWN = 40,
холст,
СТХ,
keystate,
кадры,
счет;
сетка = {
ширина: null,
высота: ноль,
Оболочки: нуль,
init: функция(d, c, r) {
этот.ширина = c;
этот.высота = r;
эта сетка = [];
для (var x=0; x < c; x++) {
это.Оболочки.толчок([]);
для (var y=0; y < r; y++) {
это.Оболочки[х].толчок(д);
}
}
},
набор: функция(val, x, y) {
это._grid[x][y] = val;
},
get: функция(x, y) {
верните это._grid[x][y];
}
}
змея = {
направление: ноль,
последнее: null,
_queue: нуль,
init: функция(d, x, y) {
это.направление = д;
этот._очередь = [];
это.вставить(Х, Y);
},
вставка: функция(x, y) {
этот._очередь.unshift({x:x, y:y});
этот.последнее = это._queue[0];
},
удалить: функция() {
верни это._queue.поп();
}
};
функция setFood() {
var пустой = [];
для (var x=0; x < grid.width; x++) {
для (var y=0; y < grid.height; y++) {
если (грид.получим(х, г) === пусто) {
пусто.push({x:x, y:y});
}
}
}
var randpos = empty[Math.round(Math.random()*(empty.длина - 1))];
сетки.набор(фрукты, randpos.х, randpos.г);
}
функция main() {
canvas = document.createElement("холст");
canvas.width = COLS*20;
canvas.height = ROWS*20;
СТХ = холст.метода getcontext("2D с");
document.body.appendChild(холст);
ctx.font = "12px Helvetica";
кадры = 0;
keystate = {};
document.addEventListener("keydown", функция(evt) {
keystate[evt.keyCode] = true;
});
document.addEventListener("keyup", функция(evt) {
удалить keystate[evt.keyCode];
});
в этом();
петля();
}
функция init() {
результат = 0;
grid.init(пусто, COLS, строки);
var sp = {x:Math.floor(COLS/2), y:строки-1};
змея.метод init(до, СП.х, СП.г);
grid.set(змея, sp.x, sp.y);
setFood();
}
функция циклической () {
обновление();
рисовать();
окна.метод requestAnimationFrame(петли, полотно);
}
обновление функций() {
рамки++;
if (keystate[KEY_LEFT] && snake.direction !== вправо) {
змея.направление = влево;
}
if (keystate[KEY_UP] && snake.direction !== вниз) {
змея.направление = вверх;
}
if (keystate[KEY_RIGHT] && snake.direction !== влево) {
змея.направление = вправо;
}
if (keystate[KEY_DOWN] && snake.direction !== UP) {
змея.направление = "вниз";
}
если (кадры%5 === 0) {
ВАР ПХ = змея.последние.х;
ВАР Нью-Йорк = змея.последние.г;
переключатель (змейка.направление) {
дело осталось:
в NX--;
перерыв;
дело:
НЙ--;
перерыв;
дело правое:
в NX++;
перерыв;
дело закрыто:
Йорк++;
перерыв;
}
if (0 > nx || nx > grid.width-1 ||
0 &ГТ; Нью-Йорк || Нью-Йорк &ГТ; решетки.высота-1 ||
grid.get(nx, ny) === змея
) {
вернуть
;
}
if (grid.get(nx, ny) === фрукты) {
счет++;
setFood();
} еще {
ВАР хвост = змея.удалить();
grid.set(пустой, tail.x, tail.y);
}
grid.set(SNAKE, nx, ny);
змея.вставка(ПХ, ПУ);
}
}
функция draw() {
ВАР tст = холст.ширина/сетки.ширина;
ВАР че = холст.высота/сетки.высота;
для (var x=0; x < grid.width; x++) {
для (var y=0; y < grid.height; y++) {
переключатель (грид.получим(Х, Y)) {
дело пустое:
СТХ.свойства fillstyle = "#ФФФ";
перерыв;
чехол змеиная:
ctx.fillStyle = "#0ff";
перерыв;
случае фрукты:
ctx.fillStyle = "#ff0";
перерыв;
}
СТХ.fillRect(х*TW, по г*е, Вт, е);
}
}
ctx.fillStyle = "#000";
ctx.fillText("SCORE:" + score, 10, canvas.height-10);
}
главный();
</script>
</body>
</html>
Sunasara Imdadhusen
Приятная и интересная игра с использованием java-скрипта. я постараюсь решить вашу проблему. Не могли бы вы, пожалуйста, сообщить мне, что эта игра разработана вами :)
Member 10799836
К сожалению, нет, нас попросили найти руководство в интернете, а если понадобится, то и учебник. Однако коробка game over, которую я хочу реализовать, не находится ни в том, ни в другом, так что я полностью потерян!