這是一個設計問題,我將盡可能清晰地將其框架化,但我不確定要將該問題稱爲我面臨的問題。包裝收集元素
我正在研究視頻遊戲,設置和玩遊戲涉及多個步驟。我想用某種對象來包裝每一個步驟,以保持一切清潔。
我選擇將遊戲流程分解爲會話,回合和產生。一場比賽是最高的比賽級別,您可以配置哪些球員處於活動狀態(通過加入畫面),然後開始一輪比賽。您可以在單個會話中播放多個回合,並且每個回合將繼承全局會話數據。同樣,你可以在每一輪中多次死亡和重生,並繼承本輪和會話的數據。
所以想象一下免費的。
- 會話1
- 會話2
- 輪
- B輪
- 菌種1
- 菌種2
- 回合Ç
- 會議3
菌種1將有來自B輪對數據的訪問和會話2
這似乎是一個非常簡潔的設計。我可以將會話範圍的數據保存在一個地方,並在整個會話中保持該對象的活動狀態,每一輪都分支並繼承這些數據。
現在有趣的問題。就像我之前說過的,會話包含一羣玩家(加入遊戲並在整個會話期間處於活動狀態的玩家)。這一輪ALSO需要保留一些關於每個玩家的額外數據,但是這些數據只存在於一輪(例如最後的重生點或當前得分)內。我想要遵循相同的模式,並創建另一個類,這將持有這一輪特定的數據。
這裏發生故障的地方在於維護集合。因爲會話包含了玩家的權威列表,並且每輪都提供了額外的附加數據,如果該輪只更新了SessionPlayer的成員?本輪是否有自己的選手列表,每個選手都有輪次數據和一個指向會話級數據的指針?它們是否應該包含具有匹配ID的單獨集合?
這似乎是可以用巧妙的設計模式解決的問題,但我一直無法找到。
總結:如何臨時包裝一個包含集合的對象,同時包裝該集合的所有元素?
我希望我解釋得很對。謝謝您的幫助!
如何具有'Player'對象攜帶本人所有必要的數據? (如當前會話/輪/產卵,HP,彈藥等等) –
這就是你有多個會話,並在同一時間循環發生一個MMOG? – tcarvin
@tcarvin:不是MMOG,而是與本地合作的遊戲。想想像超級粉碎兄弟 – deemen