所以我正在尝试为游戏编写代码,让我在游戏失败时开始游戏。我使用while循环(标记为“第0循环”)来使游戏重新开始。我使用一个计时器,当游戏结束时它会自动停止。然后,为了防止第0个循环运行,我有一个空的内循环(标记为“第一循环”),直到游戏结束。一旦游戏结束,我会使用另一个内循环(标记为“第二循环”)来“聆听”箭头键按下(这不是此问题的焦点)。
这是我的问题。出于某种原因,当第一个循环中没有print语句时,第二个循环不运行 。如果我在第一个循环中放置任何print语句,则第二个循环将在游戏结束时运行。让第一个循环保持空状似乎不会退出,因此它会阻止代码进展。为什么会这样? (注意:我尝试在第一个循环中放入其他而不是print语句,而第二个循环没有运行)
以下是重要代码的概述:
// zeroth loop
while (true) {
//...
Timer timer = new Timer(speed, null);
timer.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//...
if (endGame) {
timer.stop();
}
}
});
timer.start();
// first loop
while (!endGame) { /* empty loop */ }
boolean arrowKeyNotPressed = true;
// second loop
while (arrowKeyNotPressed) {
System.out.println("second loop");
//...
// arrowKeyNotPressed = false;
}
}
答案 0 :(得分:0)
您的空循环可能会消耗所有可用的CPU。您可以添加睡眠以避免占用CPU周期:
while (!endGame) {
Thread.sleep(100); //milliseconds
}