Я пытаюсь сделать небольшую игру pacman, чтобы тренировать свои навыки JavaScript. Чтобы переместить pacman, я использую функцию события onkeyup, связанную с функцией перемещения.
Тем не менее у меня проблема. Каждый раз, когда pacman умирает (или заканчивается игра), я всегда использую окно предупреждения, чтобы предупредить пользователя о том, что произошло. Тем не менее, после того, как я нажму кнопку OK, чтобы заставить pacman двигаться снова, я должен щелкнуть окно браузера, чтобы оно реагировало на события клавиатуры.
Каким-то образом я считаю, что это проблема с фокусировкой окон, тем не менее, пытался использовать некоторый фокус вокруг (в основном после окна оповещения) и, похоже, не сработал.
Может ли кто-нибудь дать мне общие указания о том, что может быть решением для этого?
PS: В конструкции игры я использую изображения, созданные на лету, имея на странице только 2 текстовых тега с идентификаторами.
РЕДАКТИРОВАТЬ: код, связанный в onkeyup:
функция muda_sentido (событие)
{
//baixo
if(event.keyCode == 40)
{
pacman_status = status[2];
imagem_pacman.src = "Imagens/pacmanb.gif";
imagens[pacman_pos[0]][pacman_pos[1]].src = "Imagens/pacmanb.gif";
}
//direita
else if(event.keyCode == 39)
{
pacman_status = status[0];
imagem_pacman.src = "Imagens/pacmand.gif";
imagens[pacman_pos[0]][pacman_pos[1]].src = "Imagens/pacmand.gif";
}
//cima
else if(event.keyCode == 38)
{
pacman_status = status[3];
imagem_pacman.src = "Imagens/pacmanc.gif";
imagens[pacman_pos[0]][pacman_pos[1]].src = "Imagens/pacmanc.gif";
}
//esquerda
else if(event.keyCode == 37)
{
pacman_status = status[1];
imagem_pacman.src="Imagens/pacmane.gif"
imagens[pacman_pos[0]][pacman_pos[1]].src = "Imagens/pacmane.gif";
}
}
Содержимое html - это двойной тег h2 (его нельзя добавить в формат кода, так как он выглядит испорченным в программе предварительного просмотра) с идентификатором.
А вокруг программы у меня что-то вроде:
alert («Пакман умер!»)
И проблема после этого.
2 РЕДАКТИРОВАТЬ: удалось захватить кусок кода, который находится в окне предупреждения (просто изменил его, чтобы искать его только в одном месте):
функция pacman_morreu ()
{
alert("O pacman morreu!");
if(pacman_vidas==0)
{
alert("Game Over!");
reinicia_tabuleiro();
}
else
{
pacman_vidas--;
vidas.innerHTML = "Número de vidas: "+ pacman_vidas;
}
pintaEcra();
}
Функции, перечисленные внутри кода, будут выполнять только операции с матрицами (на самом деле ничего особенного).
РЕДАКТИРОВАТЬ 3: По запросу, здесь идет:
функция reinicia_tabuleiro ()
{
pacman_vidas = 3;
vidas.innerHTML = "Número de vidas: 3";
pontuacao.innerHTML = "Pontuação: 0";
pontos = 0;
for(i=1;i<24;i++)
{
for(j=1;j<24;j++)
{
if(tabuleiro[i][j] == 0)
tabuleiro[i][j] = 2;
}
}
}