2012-08-07 35 views
0

我對遊戲編程有點新,我決定在Java中做一個小實驗。我使用Swing/AWT API通過在JPanel上繪圖來實現遊戲。但是,我不確定如何在遊戲中實現「傳球時間」。有沒有人有任何想法呢?在Java中每秒更新遊戲x次

謝謝!

回答

1

你要尋找的被稱爲遊戲循環。關於這方面有很多可用的文檔。這裏有一個簡單的一個:

private boolean isRunning; 

public void gameLoop() 
{ 
    while(isRunning) //the loop 
    { 
     doGameUpdates(); 
     render(); 
     Thread.sleep(1000); //the timing mechanism 
    } 
} 

的想法是,while循環中的代碼遍地執行,將睡執行之間的1秒。這是實施「時間流逝」的一種方式。例如,如果您的對象具有X位置,並且在while循環中放置了object.X += 1,則對於循環的每次迭代,對象的X位置都會前進1,即每秒1次。

這是一個非常基本的遊戲循環,它有一些問題,但它會做,如果你是初學者。一旦你變得更有經驗,查找變量和固定的時間步遊戲循環。

但是,您必須在單獨的線程中運行此代碼,以便顯示屏實際上得到更新。

+0

我認爲睡眠時間在毫秒內,所以你必須引入'1000'而不是'1'。 – 2012-08-07 15:15:03

+0

如果使用swing,這個想法根本不好,Thread.sleep使用毫秒而不是秒。 – bestsss 2012-08-07 15:15:18

+6

如果你在事件調度線程上這樣做,沒有什麼會重新繪製,你的整個UI會凍結 – Robin 2012-08-07 15:15:47