2012-01-10 39 views
0

我在OpenGL(GLUT)和C++中編寫遊戲戰艦。如何在OpenGL(GLUT)和C++中進行遊戲邏輯?

我知道該怎麼做,以圖形的東西(如顯示領域和預定義的船舶), 但是,我應該把我的遊戲代碼,如:

  • 如果鍵左按下選擇離開一個字段並顯示它
  • 如果船舶放置然後顯示船體

觀光等地方對船舶(字段之間的切換)我無法在顯示做()函數,但如果船舶放置它必須是由display()函數繪製,對嗎?

我不知道把遊戲邏輯放在哪裏。

回答

2

你所尋找的是基本的,經典game loop。實際上,您的遊戲運行在一個巨大的循環中。在這個循環中,您處理用戶輸入,對用戶輸入做出反應,運行AI,並更新視頻/音頻作爲響應。當然,這是一個非常簡單的考慮,但它足以應付戰艦。

概念,或多或少:

while(Game.IsRunning) 
{ 
    Input = GetInput(); 
    Game.Update(Input); 
    Display(Game); 
} 

如果你實際上做,而不是實時事件驅動的,那麼你需要讓你的更新,考慮到自上次傳遞時間更新以及玩家輸入。我會保持這個簡短,並限於你所問的內容。

1

GLUT提供的功能來攔截鼠標鍵盤事件,如

void keyboardDown(unsigned char key, int x, int y); 
void mouseClick(int button, int state, int x, int y); 
void mouseMotion(int x, int y); 

您可以重新實現這些功能,讓你的程序的自定義行爲。

例如,如果您想在用戶按「s」後畫一條船,那麼在您的keyboardDown函數中,可以將全局標誌設置爲1.然後,在顯示函數中,您可以檢查該標誌。如果它是1那麼你會畫你的船。

當然這取決於你如何放置/移動你的船:)

如需進一步信息,看看在documentation