我正在尝试重新启动 while 循环。我已经声明了布尔类型的变量 keepGoing。如果 int 变量 x 不在窗口内,则 keepGoing 更改为 false。然后reset() 方法必须保持Going=true。它可以工作,但 while 循环不起作用。
带有 reset() 和 checkWin() 的类:
private void reset() {
b.x = 250;
b.y = 100;
b.keepRunning = true;
a.keepGoing = true;
System.out.println(a.keepGoing);
}
public void checkWin() {
if (b.keepRunning) {
if (b.getX() < -10) {
a.score++;
JOptionPane.showMessageDialog(okno, "Player " + p.getScore()
+ " - Computer " + a.getScore(), "Oh, well...",
JOptionPane.INFORMATION_MESSAGE);
b.keepRunning = false;
a.keepGoing = false;
System.out.println(a.keepGoing);
reset();
} else if (b.getX() > 599) {
p.score++;
JOptionPane.showMessageDialog(okno, "Player " + p.getScore()
+ " - Computer " + a.getScore(), "Good!",
JOptionPane.INFORMATION_MESSAGE);
b.keepRunning = false;
a.keepGoing = false;
System.out.println(a.keepGoing);
reset();
}
}
}
带线程的第二类,keepGoing 和 while 循环:
Runnable intel = new Runnable() {
public void run() {
while (keepGoing) {
while (getY() < board.ball.getY()) {
System.out.println(keepGoing + " " + getY());
try {
if (y == 220) {
} else {
y += 1;
Thread.sleep(10);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
while (getY() > board.ball.getY()) {
System.out.println(keepGoing + " " + getY());
try {
if (y == 0) {
} else {
y -= 1;
Thread.sleep(10);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
};