不幸的是,當前的設計很爛:)
我不會說什麼,我會建議實際上是最佳的解決方案,因爲在遊戲設計中,通常存在「沒有最好」解決方案,但我認爲這會讓你覺得適當。
較大的UML here.
alt text http://yuml.me/1924128b
比方說,你有你的基本類Game
。這是抽象類,它包裝了所有的遊戲邏輯,並且是一種瑞士刀。
您應該創建另外兩個類 - UI
和State
(顯然,它封裝了遊戲的UI操作並存儲當前的遊戲狀態)。讓你的Game
類擁有UI
和State
實例。
現在,你的Game
類應該有基本的方法來控制你的遊戲。他們可能是簡單的和update(...)
方法,這部分實際上有點棘手。如果你的遊戲是實時的,你將不得不每隔Y毫秒更新你的狀態,所以你的update(...)
應該被循環調用。
如果您的遊戲實際上不是實時的,那麼您的更新應該只在用戶做某件事情時纔會發生,或者實際上知道您需要更改某些內容。你可以在這裏實現一個消息隊列,並且update(...)
調用將簡單地刷新所有這些消息。
現在,方法。創建一些課程並稱之爲Backend
- 讓這個課程囊括你所有的繪圖可能性。 這裏有一件非常酷的事情 - 你可以讓你的Backend
成爲一個抽象超類,並創建一些具體後端,它來自Backend
。這實際上會讓你有機會用簡單的代碼操作來切換你的Backends
。
之後,你應該將Backend
實例傳遞給你的方法,它會做相應的圖紙,它的邏輯可以寫成下面的方式:
foreach (const Object& object, game_state) {
object->render(backend); // Or something like that
}
過去的事情說了,你的遊戲狀態。你可以有一個簡單的結構來保存你當前的所有對象,分數等等。讓每個對象訪問那個結構,一切都會好的。
其實,有很多事情要考慮,如果你想,我可以寫更多關於這個遊戲的設計方法和大家分享一些技巧:)
你應該先設計再編程的遊戲。另外,這個遊戲是在一個控制檯,在2D,3D ..? – Alerty 2010-06-12 18:19:46
這聽起來更像是尋找現有的示例遊戲。遊戲開發通常由性能要求驅動,而不是設計的美感。 – Dummy00001 2010-06-12 18:26:40
嘿,你是如何製作這個令人敬畏的圖表的? – 2010-06-12 18:34:28