В моето училище, като задача, трябва да направя подобрена версия на играта "SNAKE".
(Няма да добавя допълнително описание, тъй като това е много известно)
Имам проблеми с въвеждането от клавиатурата.
Нещата по-долу са обобщение на моя код.
КОД
Начална част
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 ms),
след това змията се насочва наляво и се движи по тялото си.
оооооо (‹-)
Как трябва да променя частта за въвеждане на клавиатурата, за да разреша този проблем?
СЪСТОЯНИЕ
Професорът даде шаблонен код за частите за въвеждане на клавиатурата като тази.
private class TAdapter extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
//Keyboard input part (PROBLEM)