大家好,我是 Java 新手,我正在 Uni 上一门课程。我的任务是编写一个小游戏,该游戏会生成玩家会猜到的随机 nr。在猜测玩家应该可以选择再次播放或等待并自动返回主菜单。
首先我尝试thread.sleep(5000)
了但它卡住了,因为它正在等待用户输入(nextLine)。然后一个朋友告诉我定时器和定时器任务,我用过,现在我的游戏几乎可以工作了。
唯一的问题是当我从我run()
的方法调用一个新方法时,在后台运行的旧(再次播放 Y/N)线程没有结束。因此,当我的菜单在 5 秒后出现时,我的第一个输入再次连接到播放 Y/N 选项而不是主菜单选项。以下是kod部分:
public void tryAgain() {
Timer timer = new Timer();
Task timerTask = new Task();
int y = 1;
String yesNo = sc.nextLine();
System.out.println("Try again Y/N");
Statistics.setGames(games);
timer.schedule(timerTask, 5000);
do {
try {
yesNo = sc.nextLine();
if (yesNo.equals("Y") || yesNo.equals("y")) {
guesses = 0;
y = 2;
timerTask.cancel();
playGame();
} else if (yesNo.equals("N") || yesNo.equals("n")) {
y = 3;
timerTask.cancel();
Statistics.setGames(games);
menu.showMainMenu();
} else {
System.out.println("Wrong input, try Y or N:");
}
} catch (Exception e) {
sc.next();
System.out.println("Wrong input, try Y or N:");
}
} while (y == 1);
}
和 :
import java.util.TimerTask;
class Task extends TimerTask {
play menu = new play();
public void run() {
Statistics.getGames();
menu.menu.showMainMenu();
cancel();
}
}