当Java计时器过期时启动Java计时器新建

当Java计时器过期时启动Java计时器新建,java,timer,Java,Timer,所以基本上,我试图通过编程一个基于回合的游戏回到Java 到目前为止,您只能通过按下按钮(x)开始新一轮 让我解释一下代码:如果玩家按o,新一轮开始,轮到下一个玩家。然而,除此之外,每一轮都有倒计时,如果倒计时结束,新一轮将自动开始 我设法做到了一切,但我不明白的是以下问题: 计时器结束,新一轮开始,但我如何管理它自动为下一轮启动新计时器?到目前为止,它只会在按键时启动,但我希望它在上一轮倒计时结束时也会启动一个新的计时器 我希望你明白这个问题,我的英语真的很差 如果能得到一些建议,那就太好了。

所以基本上,我试图通过编程一个基于回合的游戏回到Java

到目前为止,您只能通过按下按钮(x)开始新一轮

让我解释一下代码:如果玩家按o,新一轮开始,轮到下一个玩家。然而,除此之外,每一轮都有倒计时,如果倒计时结束,新一轮将自动开始

我设法做到了一切,但我不明白的是以下问题: 计时器结束,新一轮开始,但我如何管理它自动为下一轮启动新计时器?到目前为止,它只会在按键时启动,但我希望它在上一轮倒计时结束时也会启动一个新的计时器

我希望你明白这个问题,我的英语真的很差
如果能得到一些建议,那就太好了。您可能需要查看一下
计时器。这将允许您安排重复任务

您应该将代码中的三个问题分开:您的实际回合结构、回合可以结束和新回合可以开始的位置、游戏的用户界面、他可以按下按钮的位置以及游戏的计时逻辑

在turn结构类中,您将有一个
startNextTurn
方法,该方法取消一个可能的挂起计时器并启动一个新计时器。在用户界面类中,您可以调用该方法-不要在用户界面中执行计时器逻辑,让turn结构执行

不要直接使用
计时器
,而是将其封装到提供两种方法的类中:
cancelTimer
startTimer
;计时器将启动
startNextTurn
。根据需要,您甚至可以将它们组合成
restartTimer
方法


在设计这些抽象单元时,请思考以下问题:什么样的数据和逻辑属于一起?要完成一个操作需要做什么?例如,启动一个新回合只有在计时器启动时才完成,因此需要用一个方法封装,触发新回合的两个事件(用户输入和计时器)都将重用相同的逻辑。

是的,我应该从一开始就将其结构化。它起作用了,我爱你:-P还有一个问题要问你,你似乎对计时器的东西很了解:-P你能给我一个关于如何显示计时器剩余时间的链接/提示吗?你需要一个不同的方法。如果需要倒计时,可以定期更新某种显示,即多次调用更新任务,并使用目标时间计算剩余时间。搜索“JavaSwing倒计时”可能会得到很好的结果。顺便说一句,如果成功了,不要忘记向上投票并接受
if (x.getKeyChar() == 'o') {      

            TimerRounds.cancel();
            // methods to start the next round //
            TimerRounds = new Timer();
            // Timer Method
            Timer Rounds.schedule(new TimerTask() {
                public void run() {
                    System.out.println("Time is over, next round is started");
                 //methods to start the next round //
                  //Timer has to start from the beginning again//
                     //already tried to start the timer here, didn´t work//
                }
            }, 3000);