我想在面向對象的編程風格中製作RPG。我有oo編程經驗,但從未與大量的類和子類合作過。我從這個 http://members.gamedev.net/emmanuel_deloget/ 開始,創建類似於它的我自己的結構。問題是我不明白結構如何使用。你是否爲類似比賽的事物創建靜態類並使用它們,或者你是否從單個種族類創建了一個對象?這讓我感到困惑,因爲我會假設你創建了一個單獨的種族類,並且當'Main'類初始化時創建了所有的單個類,但是上面的圖表並沒有顯示任何用於初始化這些對象的方法,除了構造函數。但是因爲種族會有不同的成員變量值,我將如何使用上面的圖表來初始化一個種族對象?或者這個圖表不完整? (如果它不完整,那麼這就是我所認爲的混淆)如何使用RPG類層次結構?
0
A
回答
3
強烈建議:不要使用繼承層次結構來表示RPG中的對象。
改爲使用組合而使用prototype-based programming對象來定義對象屬性和行爲。
簡單的原因是,無法在繼承式類層次結構中表示覆雜RPG的行爲。
舉一個例子,假設你在遊戲中有一個鐵魔像。它需要有:
- 關於什麼是能夠造成破壞(即衝擊非常抗拒,非常耐火,很容易生鏽或酸)
- 「鐵」材料的性能「大型人形」在戰鬥和行動方面的屬性(不能飛行,可以行走,可以被斬首,可以使用超大型武器和裝甲)
- 魔法效果的「人造結構」的屬性(不容易受到恐懼,不是生活,神奇地動畫)
- 「半智能怪物」的屬性與人工智能和行爲的相互關係(敵對玩家,在瞄準球員等)
所有這些類型的屬性理論上可以混合和匹配。所以你將永遠無法定義一個包含它們的簡單繼承heirarchy。甚至不要嘗試,只是讓你的鋼鐵魔像成爲相關屬性的組合。
我從實施RPG對象模型的經驗中發表意見 - 如果您有興趣,請查看Tyrant(我多年前寫的一個roguelike遊戲)的源代碼。我從一個繼承層次開始,但最終不得不將整個代碼重構爲基於原型的模型。
相關問題
- 1. 類層次結構
- 2. 類層次結構
- 3. PHP類層次結構 - 層次結構中的最高類
- 4. 如何設計類層次結構
- 5. 如何迭代類層次結構?
- 6. IDE如何獲得類層次結構
- 7. 如何處理類層次結構
- 8. findContours使用層次結構
- 9. 如何使用每個類層次結構策略的表來管理nhibernate中的多級類層次結構?
- 10. 類層次結構 - 在RPG遊戲,類重疊(VB.Net)數據設計
- 11. 擴展類層次結構
- 12. C++類層次結構
- 13. Json Net層次結構類
- 14. Automapper和類層次結構
- 15. LESS CSS類層次結構
- 16. Common Lisp類層次結構
- 17. CSS - 類層次結構?
- 18. NSObject的類層次結構
- 19. 類層次結構(C++)
- 20. 如何用抽象類使用protobuf序列化層次結構
- 21. 如何在一個層次結構類中使用std :: is_base_of?
- 22. 如何使用集合實現類別層次結構
- 23. 如何在需要層次結構時使用案例類?
- 24. 如何使用RestSharp反序列化類層次結構?
- 25. 層次結構
- 26. 使用Linq構建樹層次結構
- 27. 如何實現調用層次結構
- 28. 如何構建層次結構?
- 29. 如何使用sql定義層次結構中的層數?
- 30. 父類和子類的層次結構
這個問題太廣泛了,無法回答。 – 2011-02-07 18:50:19