Я делаю игру Snake, используя HTML и javascript.
Игра работает, нажимая клавиши со стрелками для перемещения змеи.
Работает нормально 90% времени. Однако иногда, когда я очень быстро ввожу 2 клавиши, регистрируется только одна клавиша. Например, если я нажму кнопку «Вверх» и «Влево» с задержкой <10 мс, змея пойдет только вверх, а не влево. </p>
Я не уверен, почему это происходит, поэтому я не знаю, с чего начать.
Мой слушатель событий:
window.onkeydown = function (e){
var keys = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
}
var dx = 0;
var dy = 0;
switch (keys[e.keyCode]){
case 'left':
dx = -1;
break;
case 'up':
dy = 1;
break;
case 'down':
dy = -1;
break;
case 'right':
dx = 1;
break;
default:
return;
}
Возможно ли, что моя проблема будет исправлена путем изменения на addEventListener?
Другая теория, которая у меня есть, заключается в том, что браузер думает, что я ввожу 2 клавиши одновременно, поэтому мне придется кодировать их для постановки в очередь.
Или, возможно, Javascript не читает входные данные, когда выполняет логику?
Может кто-нибудь дать мне подсказку?