我對遊戲編程有點新,我決定在Java中做一個小實驗。我使用Swing/AWT API通過在JPanel上繪圖來實現遊戲。但是,我不確定如何在遊戲中實現「傳球時間」。有沒有人有任何想法呢?在Java中每秒更新遊戲x次
謝謝!
我對遊戲編程有點新,我決定在Java中做一個小實驗。我使用Swing/AWT API通過在JPanel上繪圖來實現遊戲。但是,我不確定如何在遊戲中實現「傳球時間」。有沒有人有任何想法呢?在Java中每秒更新遊戲x次
謝謝!
你要尋找的被稱爲遊戲循環。關於這方面有很多可用的文檔。這裏有一個簡單的一個:
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次。
這是一個非常基本的遊戲循環,它有一些問題,但它會做,如果你是初學者。一旦你變得更有經驗,查找變量和固定的時間步遊戲循環。
但是,您必須在單獨的線程中運行此代碼,以便顯示屏實際上得到更新。
也許你應該看看線程在Java中:http://www.javaworld.com/jw-04-1996/jw-04-threads.html 創建,致力於重新繪製和處理遊戲循環(見對方的回答)一個新的線程。
編輯:本教程可能是有用的:http://zetcode.com/tutorials/javagamestutorial/
關於編輯,你可以參考一個具體的教程 – Blunderchips 2017-11-22 12:43:30
我認爲睡眠時間在毫秒內,所以你必須引入'1000'而不是'1'。 – 2012-08-07 15:15:03
如果使用swing,這個想法根本不好,Thread.sleep使用毫秒而不是秒。 – bestsss 2012-08-07 15:15:18
如果你在事件調度線程上這樣做,沒有什麼會重新繪製,你的整個UI會凍結 – Robin 2012-08-07 15:15:47