В моей школе в качестве задания я должен сделать улучшенную версию игры "ЗМЕЯ".
(Я не буду добавлять дальнейшее описание, так как это очень известно)
У меня проблемы с вводом данных с клавиатуры.
Ниже приведены краткие сведения о моем коде.
КОД
Вступительная часть
private final int DELAY = 500; //500ms every event
timer = new Timer(DELAY, this);
timer.start();
Часть ввода с клавиатуры (ПРОБЛЕМА)
int key=e.getKeyCode();
if ((key == KeyEvent.VK_LEFT) && (!rightDirection)) {
leftDirection = true;
upDirection = false;
downDirection = false;
}
if ((key == KeyEvent.VK_RIGHT) && (!leftDirection)) {
rightDirection = true;
upDirection = false;
downDirection = false;
}
if ((key == KeyEvent.VK_UP) && (!downDirection)) {
upDirection = true;
rightDirection = false;
leftDirection = false;
}
if ((key == KeyEvent.VK_DOWN) && (!upDirection)) {
downDirection = true;
rightDirection = false;
leftDirection = false;
}
ИСПРАВИТЬ
Моя программа неправильно обрабатывает несколько быстрых вводов.
Например, предположим, что змея двигалась вправо.
оооооо (->)
Если я быстро нажимаю «вверх» и «влево» во время ЗАДЕРЖКИ (которая составляет 500 мс),
затем голова змеи уходит влево и движется по ее телу.
оооооо (‹-)
Как мне изменить часть ввода с клавиатуры, чтобы решить эту проблему?
УСЛОВИЕ
Профессор дал код шаблона для частей ввода с клавиатуры, подобных этому.
private class TAdapter extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
//Keyboard input part (PROBLEM)