我已经构建了一个游戏,并且希望能够在按下 P键时暂停游戏。但是,在游戏运行时,KeyListener
似乎没有检测到已按下 P键。
我的代码正确吗?我将addKeyListener
放在正确的位置了吗?
关于SO也有类似的问题,但是它们似乎都在使用JFrame
,而我正在使用ACM Graphics Library。不确定是否会有所不同。
主游戏循环:
@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 */ }
}
答案 0 :(得分:1)
解决了问题。代码
1
不正确,应该是
addKeyListener(new MyKeyListener());