我正在將一款遊戲從Ruby移植到C++。有一個主要的渲染循環來更新和繪製內容。現在讓我們說,在遊戲中,你想要選擇一個項目另一個屏幕。在原始代碼中完成的方式是做Item item = getItemFromMenu();
getItemFromMenu
是一個函數,它將打開菜單,並有自己的更新/渲染循環,這意味着在整個過程中玩家有另一個屏幕打開,你在嵌套渲染循環。我覺得這是一個不好的方法,但我不知道爲什麼。另一方面,它非常方便,因爲我可以用一個函數調用打開菜單,所以代碼是本地化的。 任何想法,如果這是一個糟糕的設計或沒有? 我毫不猶豫地張貼在gamedev,但由於這是主要是一個設計問題我張貼在這裏嵌套渲染循環是不好的做法嗎?
編輯:一些僞代碼給你一個想法:
通常的循環中的主要部分代碼:
while(open) {
UpdateGame();
DrawGame();
}
現在
內UpdateGame()我會做這樣的事情:
if(keyPressed == "I") {
Item& item = getItemFromInventory();
}
而且getItemFromInventory()
:
while(true) {
UpdateInventory();
if(item_selected) return item;
DrawInventory();
}
我一直掙扎在VB.NET應用了類似的事實是,在渲染循環,以保持GUI從凍結和崩潰和死亡,但也避免了污穢樣-的「進度窗口」執行'DoEvents'引入線程。這意味着我的進度窗口中只有一個會一次更新。我並不介意,而且它可以避免線程。但它感覺噁心。我離開它現在... – 2012-01-16 22:23:49
一個壞事,我可以用這個看到的是在你有這樣的遊戲循環,取決於它是如何做的所有的地方可能重複的代碼。 – Xeo 2012-01-16 23:04:14
你可以顯示你想要的僞代碼嗎? – 2012-01-16 23:08:32