好的,我有一个永不终止的游戏循环-

public void run() {
    setup();
    addMouseListeners();
    int Turns = NTURNS;
    int TotalBricks = NBRICKS_PER_ROW * NBRICK_ROWS;
    while ((Turns>0) && (TotalBricks>0)) {
        moveBall();
        checkForCollision();
        pause(DELAY);
    }
    System.exit(0);
}


-即使我有这种方法在每次错过球时都会减小Turns值:

private void checkForCollision() {
    GObject collider = getCollidingObject();
    if (collider !=null) {
        if (collider == Paddle) {
            vy= -vy;
        }
        else {
            vy= -vy;
            remove(collider);
            TotalBricks = TotalBricks - 1;
        }
    }
    if((ball.getX()>=(WIDTH-BALL_RADIUS)) || (ball.getX()<=0)) {
        vx = -vx;
    }
    if(ball.getY()<=0) {
        vy = -vy;
    }
    if(ball.getY()>=HEIGHT) {
    Turns = Turns -1;
    remove(ball);
    newBall();
    }

}


再加上这个

private int Turns;


在底部,以确保在这两种方法之间共享变量。
无论球错过多少次,比赛都不会停止。
我想念什么?
谢谢

最佳答案

您要声明两次Turns变量,一次是整个类,一次是run()方法。由于还要检查在Turns方法中声明的run()变量的值,因此它不会减少,因为checkForCollision()中使用的变量不是在while循环中检查的变量。

run()中,这是:

int Turns = NTURNS;


需要是:

Turns = NTURNS;

关于java - 计数器不递减或在Breakout中不被读取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11624575/

10-11 05:12