簡體   English   中英

Java計時器到期時,重新啟動Java計時器

[英]Start Java Timer new when the Java Timer is expired

因此,基本上,我嘗試通過編寫基於回合的Game來回歸Java

到現在為止,您只能通過按一個按鈕(x)開始新一輪

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);

讓我解釋一下代碼:如果玩家按下o,則開始新的回合,輪到下一位玩家了。 但是,除此之外,每一輪都有一個倒計時,如果倒計時到期,則自動開始新一輪

我設法做所有事情,但是我不明白是以下問題:計時器結束並開始新的一輪,但是我如何管理它自動為下一輪開始新的計時器? 到現在為止,只有在按下該鍵時它才起作用,但是我希望它也可以在上一輪的倒計時結束時啟動一個新計時器。

我希望你能解決這個問題,我的英語真的很差希望能得到一些建議

您應該將代碼的三個方面分開考慮:實際的回合結構,回合可以終止並可以開始新的回合,游戲的用戶界面,可以按按鈕的位置以及游戲的計時邏輯。

在您的回合結構類中,您將有一個startNextTurn方法,該方法取消可能的暫掛計時器並啟動一個新計時器。 在用戶界面類中,您將調用該方法-不要在用戶界面中執行計時器邏輯,而要在turn結構中執行。

與其直接使用TimercancelTimer將其封裝到提供兩個方法的類中: cancelTimerstartTimer 計時器關閉將調用startNextTurn 根據您的需求,您甚至可以將它們合並為restartTimer方法。

設計這些抽象單元時,請考慮以下問題:哪種數據和邏輯屬於同一類? 一個操作必須完成才能完成? 例如,僅在啟動計時器時才開始新的轉彎,因此需要用一種方法封裝新的轉彎,並且觸發新的轉彎的兩個事件(用戶輸入和計時器)都將重用相同的邏輯。

您可能需要研究Timer固定延遲執行 這將使您安排重復任務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM