2014-08-28 122 views
-1
import java.awt.Canvas; 

public class GSM extends Canvas implements Runnable { 

//The game state manager 

public final long secondNS = 1000000000; 
public final long frameNS = secondNS/60; 
public boolean running = true; 
public long now = System.nanoTime(); 
public long startTime = now; 
public long lastFrame = now; 
public long lastSecond = now; 
public int frames = 0; 

public void run() 
{ 

    System.out.println("Program started."); 
    while(running) 
    { 
     now = System.nanoTime(); 
     if(now - lastFrame >= frameNS) 
     { 
      lastFrame = now; 
      frames++; 
     } 
     if(now - lastSecond >= secondNS) 
     { 
      lastSecond = now; 
      System.out.println(frames); 
      frames = 0; 
     } 
    } 
} 

public static void main(String[] args) 
{ 
    new GSM(); 
} 
} 

剛開始製作遊戲引擎,但程序馬上終止。有人可以指出錯誤嗎?我知道有一些缺失,這將是超級明顯的,我要facepalm,我感謝你的幫助。謝謝!程序在運行前終止?

+2

你真的需要從學習基礎開始。即使是一個簡單的遊戲引擎也是一個複雜的軟件,你還沒有專業知識。從更簡單的項目開始,繼續前進。 – chrylis 2014-08-28 22:54:56

+1

你知道即使你創建了一個'Thread'來運行你的'Runnable',它不會在屏幕上顯示任何GUI,因爲它是一個'Canvas',對吧?而且,你正忙着在你的'while'循環中等待,這是一件壞事。 – 2014-08-28 23:08:35

回答

1

GSM實現Runnable,但你不能真正創建一個線程它在運行,因此run()方法永遠不會被調用

+0

我該怎麼做? – user2603506 2014-08-28 22:51:30

+0

Paul的回答有個例子 - 'new Thread(new GSM())。start();' – rdowell 2014-08-28 22:54:47

1

你正在創建一個新的GSM,但你永遠不會調用運行。我假設你試圖啓動一個線程,但這需要你使用一個Runnable和一個線程對象。如果這是你想要做的Oracle has a tutorial on it