我正在用 Swing 做游戏。
它从一个main
方法开始,while(true)
每次用户想要开始一个新游戏时都会等待。
为了重新开始游戏,我有一个菜单,可让您返回主菜单并开始另一个游戏。问题是最后一场比赛没有完成,参加请愿while(true)
的main
方法卡在执行比赛的函数中。
如果我 FINISH 上一场比赛正常玩,则函数结束,while(true)
该main
方法的 准备参加更多的新游戏。
如何强制结束最后一场比赛?
用于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 ...
}
一种方法可能是不拥有while(true)
,而是拥有while(condition)
where 条件可能是您的功能逻辑:
while(!gameRestarted || lastGameFinished)
Swing 是一个 IoC(控制反转)框架,这意味着您应该main
在创建主窗口后让您返回。
如果您需要在游戏处于活动状态时运行线程,您应该Thread
在用户开始游戏时启动一个新线程。
如果用户在当前游戏正常完成之前通过启动新游戏来中断游戏,您需要告诉当前游戏它应该完成,然后您只需为新游戏生成一个新线程。