我正在和Swing一起玩游戏。
它以main
方法开头,每次用户想要开始新游戏时都会等待while(true)
。
为了重新开始游戏,我有一个菜单,允许您返回主菜单并开始另一个游戏。问题是最后一场比赛没有结束,参加请愿的while(true)
方法的main
被卡在执行游戏的功能中。
如果我完成上一场正常比赛,那么该功能结束,while(true)
方法的main
已准备好参加更多新游戏。
如何强制上一场比赛结束?
答案 0 :(得分:2)
使用break
退出while(true)
循环。
while (true) {
System.out.println("Choose a game mode 1-start normal, 2-start hard, 3-exit");
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
if (input.equals("3")) {
break;
} else if (input.equals("2")) {
startGameInHard();
} // else if ...
}
答案 1 :(得分:1)
一种方法可能不是while(true)
,而是while(condition)
条件可能是您的功能逻辑:
while(!gameRestarted || lastGameFinished)
答案 2 :(得分:0)
Swing是一个IoC(控制反转)框架,这意味着您应该在创建主窗口后让main
返回。
如果您需要在游戏处于活动状态时运行线程,则应在用户启动游戏时启动新的Thread
。
如果用户通过在当前游戏正常结束之前开始新游戏来中断游戏,则需要告诉当前游戏它应该完成,然后你只需为新游戏产生一个新线程。