我已經使用C++編程了一段時間,並且我非常熟悉語法。我正在嘗試使用Allegro製作紙牌遊戲。我明白我需要爲遊戲邏輯做的一切,而不是。讓我感到困惑的是如何推動遊戲。我是基於循環的應用程序的新手。我習慣了VB.Net中基於事件的編程。我只是不確定正確的方式,例如切換球員並在沒有很多ifs和bools的情況下舉起「事件」。此外,我現在有一個布爾數組來檢查哪個牌正在玩。而且我的遊戲每次都會遍歷整個布爾數組,這對我來說似乎很混亂。另外,如果我想從我的菜單循環到我的設置循環,那麼沒有一個大布爾怎麼做呢? 謝謝遊戲編程結構
遊戲編程結構
回答
大多數遊戲框架都提供了你需要實現(兩者都被稱爲一個循環)兩種方法:
- 更新
- 繪製
的Update
是你應該把所有的東西,它應該檢查用戶輸入,狀態的變化,時間間隔的行動等。例如,物理,Butto nPressed等等。沒有什麼能阻止你在這裏處理事件(看看BoostLibrary Signals)。
void Game::update() {
if(pushedButton) {
this->cardsOnTable->add(this->hand->remove(0));
this->activePlayer = nextPlayer();
}
}
Draw
應該只顯示屏幕上當前的基礎狀態。所以你必須確保你的基礎狀態/模型很容易訪問。
void Game::render() {
this->table->render();
this->cardsOnTable->render();
this->hand->render();
// ...
flipBuffers();
}
可以解決你的菜單/ SettingsMenu問題與Scenes
和SceneManager
(可以是一個Stack)。因此,不要直接將邏輯放入Game
,而要將其放入Scenes
。您還可以在管理器中推送/彈出場景。
void Game::update() {
this->sceneManager->activeScene->update();
}
void MenuScene::update() {
if(settingsMenuItemSelected) {
game->sceneManager->push(new SettingsMenuScene));
// now the next time Game::update() is called
// the active scene of the SceneManager will be
// the settings menu. And once it is closed/cancelled
// it will pop itself from the manager and we are back
// in the regular menu
}
}
如果你想開始更先進的東西,你可以嘗試「事件」存儲到一個巨大的名單,當你進入Game::update
方法解僱所有事件 - 這是VB如何可以確保您能」從另一個線程修改控件而不是UI線程 - 但我不認爲這是你會用C++做的事情。
這些是很多不同的問題。我的第一個建議是尋找類似遊戲的在線源代碼。如果您需要代碼幫助,請將其與問題一起發佈。
你很可能需要有一堆的IFS和循環會是這樣的:
while(1){
initYourLevel();
while(levelNotOver){
//do things
}
}
然後這一切都取決於你想要做什麼,你的問題是一種模糊的給我。開始尋找tutorials來圍繞人們如何做事。這裏有很多示例代碼!
希望幫助
一般來說,你可能想看一本關於編程習語和設計模式的書,這裏已經討論過其他問題。即使不與遊戲直接相關,他們也會幫助你。
遊戲引擎是狀態機的一個很好的例子(狀態在遊戲中,狀態在設置和子狀態) - 你可以通過條件分支等方式來完成。,但是如果它變得更大,就不要失去理智。在基於模板的多態類(請參閱您最喜歡的C++模式手冊),基於模板的(boost.statechart),...
有什麼常見的是,使用中央循環時,您轉發事件到一些處理程序(代表狀態或子狀態),這些處理程序將執行適合當前情況的處理程序。需要改變行爲(例如從遊戲到選項)?切換處理程序。您還需要包裝和抽象當前的遊戲狀態 - 不需要顯式處理例如遊戲狀態。卡在每個地方。將物品包裹在例如一個內部處理它的卡牌或球員管理員。
也可以使用容器和算法C++免費給你,你可以例如管理std::map
s或std::set
s的卡或玩家。當你達到標準庫的限制時,檢查一下提升。
- 1. 遊戲:一般結構和遊戲項目結構
- 2. 遊戲編程
- 3. 遊戲編程
- 4. Android遊戲開發結構
- 5. 遊戲結構設計
- 6. cocos2d iphone遊戲結構
- 7. Android遊戲編程
- 8. Unity遊戲編程
- 9. Java遊戲編程課程?
- 10. 遊戲架構
- 11. Java中的遊戲編程?
- 12. iPhone網絡遊戲編程
- 13. 遊戲編程文學
- 14. 編程遊戲控制器
- 15. C編程棋盤遊戲
- 16. iPhone 2D遊戲編程
- 17. Java遊戲編程庫
- 18. Python編程骰子游戲?
- 19. 物理OO遊戲編程
- 20. 多人遊戲編程
- 21. 多人遊戲編程
- 22. 哪個遊戲編程API?
- 23. Java:用於多選遊戲的結構
- 24. 遊戲中關卡的數據結構
- 25. 遊戲的空間數據結構
- 26. Laravel的遊戲網站結構
- 27. 在遊戲中放置防禦結構
- 28. C#2D遊戲中對象的結構
- 29. php遊戲/杯子的數據結構
- 30. 遊戲人生 - 數據結構
什麼是大布爾? 「長長的布爾」? ;) – 2009-10-24 23:29:46