while ループを再開しようとしています。ブール型の変数 keepGoing を宣言しました。int 変数 x がウィンドウから外れている場合、keepGoing は false に変更されます。次に、reset() メソッドは keepGoing=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 ループを含む 2 番目のクラス:
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();
}
}
}
}
};