2013-10-28 37 views
1

我一直在研究一些關於能力的事情......就像DOTA,LoL和其他MOBA/MMORPG遊戲一樣。如果我在開始時會選擇角色選擇遊戲,並且在遊戲中它會有法術/能力等等。C#XNA - 能力/法術

這樣做的正確方法是什麼?我是否應該製作一個Champion類,具有所有的值和紋理,或者初始化爲Game1.cs,例如Champion champ = new Champion(texture, name, Q-ability name, Q-cooldown, Q-damage, Q-manacost) - 但這需要TONS的不同聲明...

我應該製作Champion文件夾並製作一個獨立的類商場?而且還有能力 - 我正在考慮編寫一個枚舉以保持它們,或者將列表或其他變量更好地工作?謝謝!

+0

看看這些:http://sourcemaking.com/design_patterns –

+0

複合戰略模式很適合這個問題http://www.codeproject.com/Articles/119877/Patterns-In-Practice-Strategy - 合成 –

回答

3

對於這樣的遊戲,我建議使用實體系統(http://entity-systems.wikidot.com/)。這些可以讓你創建單獨的咒語,異能,玩家,角色等類,並將它們組合成高度可配置的實體。我將流行的Ash實體框架移植到了C#,它可在https://github.com/DavidArno/Ash.NET處獲得,這對您可能很有用。

0

除了大衛阿諾建議的實體系統之外,如果我想這樣做,我會選擇一個Hero類,然後在其中添加一個能力列表。能力都是一樣的,不同的是他們的因素。例如,一個技能可以造成多少傷害,等等。這樣你必須實例化你的所有冠軍和他們的能力。

+0

組合和合並屬性。像射箭,子彈或火球多少不一樣,都有速度,方向,傷害,距離......只有動畫/紋理不同。然後你可以有一些簡單的枚舉來說明什麼樣的武器,所以你會知道如何處理它們。聽起來很簡單,但項目很快就會瘋狂增長。 –

+0

這是數據階段,你必須將它提供給你的系統,我認爲它沒有繞道。而且我向你保證,實體系統不會有任何魔法。這只是將部件放在一起的包裝,您仍然必須聲明所有不同的屬性。 – MahanGM