У меня есть встроенная игра, и я хочу иметь возможность приостановить игру, когда нажата клавиша P .Однако во время игры KeyListener
, похоже, не обнаруживает нажатие клавиши P .
Правильно ли введен мой код?Разместил ли я addKeyListener
в нужном месте?
Есть аналогичные вопросы по SO, однако все они, похоже, используют JFrame
, тогда как я использую Графическая библиотека ACM .Не уверен, что это имеет значение.
Основной игровой цикл:
@Override
public void run() {
addKeyListener(new MyKeyListener());
displayStartScreen();
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
while (lives > 0) {
drawBall();
playGame(); // additional game loop
if (brickCounter == 0) {
removeAll(); // removes all game objects
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
brickCounter = 100;
}
}
}
if (brickCounter > 0) {
removeAll();
printGameOver();
}
}
Дополнительный игровой цикл:
private void playGame() {
getBallVelocity();
while (true) {
moveBall();
updateUI();
if (ball.getY() >= getHeight()) {
lives--;
break;
}
if (brickCounter == 0) {
break;
}
}
}
Класс KeyListener:
private class MyKeyListener implements KeyListener {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_P) {
System.out.println("Key 'P' has been pressed!"); // test
}
}
@Override
public void keyReleased(KeyEvent e) { /* Empty body */ }
@Override
public void keyTyped(KeyEvent e) { /* Empty body */ }
}