好的,我有一个永不终止的游戏循环-
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/