2013-05-18 109 views
2

我會如何在Java中像在Java中一樣在while循環中實現一個計時器?while while循環中的計時器

while (game not ended) { 
//do something 
(wait 5 seconds) 
} 

難道是像這樣?:(java.util.Timer

int delay = 1000; //milliseconds 

    while (game not ended) { 
     //do something 
     new Timer(delay, taskPerformer).start(); 
    } 
+1

你爲什麼要這樣做?你的目標是什麼? –

+0

搜索「[java]遊戲事件循環」。 Java中的Timer是一個*異步*事件源,不適用於遊戲循環 - 但也可能是遊戲應該以異步風格編寫的情況。 (什麼樣的遊戲呢?現有的*遊戲事件循環是什麼樣子的?它使用的是用戶界面的Swing嗎?) – user2246674

+0

@AndrewThompson它用於使用AI的swing俄羅斯方塊遊戲。代理可以解決最有效的棋子緩衝。我希望每個動作都能在gui中進行一段時間的設定,這樣標記就可以看到每個動作在播放時......毫不拖延地只看到最後一步。 –

回答

1

不要堵塞EDT(事件指派線程) - 的圖形用戶界面將「凍結」當這種情況發生。而不是調用Thread.sleep(n)執行重複任務的Swing Timer或長時間運行的任務執行SwingWorker。有關更多詳細信息,請參閱Concurrency in Swing

2

你可以使用Threadstaticsleep()方法。

while (game not ended) { 
    //do something 
    Thread.sleep(5000); 
}