2012-04-07 125 views
2

我在Flash中製作了一個基於回合的RPG遊戲,AS3作爲語言,不過我敢肯定,無論您使用哪種語言,都可以幫助我。管理數據,類或數組的最佳方法是什麼?

基本上,我的想法是把我所有的武器數據放在一個多維數組上。現在,如果我想在我的廣告資源中添加武器,很簡單,我只需使用inventoryArray.push(weaponArray[1])簡單,我只是將武器添加到我的廣告資源中。

我一直在尋找設計模式,而且似乎大多數OOP設計正在使用類並從一個超類繼承。 Component-->Weapon-->Sword-->LongSword.

我應該怎麼做,把所有的數據放在一個數組中,或者使用繼承樣式,一個類包含單個武器?

任何想法都歡迎!我基本上知道如何製作遊戲本身,只是我不知道我應該遵循的一些模式。

+0

這是一個橫向項目嗎?如果是這樣,我會把它變成一個學習會議。花上一天或四天的時間閱讀設計模式,找到最適合AS3的設計模式,然後選出適合您遊戲的設計模式。你會發現你需要像Laurent所說的至少一些繼承。 – 2012-04-08 07:29:50

+0

是的,這是一個學習課程。我能夠創造遊戲沒有問題,但我已經決定把自己投入OOP的黑暗深淵。 – Secret 2012-04-08 09:02:37

回答

2

遊戲中的大多數對象都有一些共同的屬性 - 例如,也許它們都會有一個ID,一個名稱和一個描述。

如果你不使用繼承,你會讓所有的類都有這個重複的信息,這會讓你的遊戲難以維護。

如果你使用繼承,你可以在一個基類(可能是抽象的)類中擁有所有這些公共屬性,並讓所有其他類繼承它。所以是的,你看到的設計模式是要走的路。

此外,您應該創建一個Inventory類,而不是方法。這將允許您在將對象添加到清單時分派事件。然後,前端可以收聽此事件,並且例如更新清單圖形。一般來說,您絕對不應該爲通用的Flash對象(數組,對象等)用於潛在複雜的對象,如庫存,角色等。使用您自己的自定義類可以讓您在遊戲變得更加複雜時輕鬆擴展它們。

+0

深層次模式是這種東西的最佳方式嗎?複合材料呢? – Secret 2012-04-07 13:49:26

+0

這兩種模式不是相互排斥的。您很可能需要類的層次結構,並且您可能還想使用組合模式(爲避免簡單,我會避免使用)。 – 2012-04-08 06:11:22

+0

好的,謝謝。只是另一個簡單的問題,但我劍類下的所有東西只是簡單地改變數據(例如將重量和損傷改變爲另一個值)。每一個「劍」武器只會改變數據的優先級?我希望得到諸如所有「劍」武器列表之類的東西,但我想添加一個新武器會更容易,因爲我只需要添加另一個班級而不是更改我的列表。對不起,如果我的問題有點模棱兩可。 – Secret 2012-04-08 09:13:00

1

我想說繼承的構成是要走的路。

有一個基本的遊戲對象類可以擴展到武器,戒指,舵,盾牌,藥水等等。這些都有一套可以通過繼承來管理的限制(比如你可以放置武器的事實手和庫存)。但是所有這些能力(它們如何影響角色)都應該通過構圖來完成。每次你給窗扇,手,頭等物品添加物品時,他們都會通過構圖來影響角色。所以當你處理角色的動作時,你不會遍歷每一個對象,你只需要使用像攻擊這樣的複合函數,它具有應用角色動作一部分的清單的所有功能。


您可以看到的其他設計模式是裝飾模式。我發現結果與作文非常相似。 「雖然裝飾模式允許我們在沒有子類的情況下爲對象增加責任,但是合成模式的目標不同:構建類以便以相同方式處理相關對象,並且可以將多個對象視爲一個對象。裝飾圖案的source

例如: http://www.as3dp.com/2011/06/well-armored-warrior-decorator-for-beginners/