猿问

KeyListener 未检测到按键

我有一个游戏,我希望能够在按下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 */ }

}


隔江千里
浏览 117回答 1
1回答

海绵宝宝撒

修复了问题。编码addKeyListener(new MyKeyListener());不正确,应该是addKeyListeners(new MyKeyListener());
随时随地看视频慕课网APP

相关分类

Python
我要回答