2012-08-10 26 views
2

我正在研究一羣擁有一羣怪物的iPhone遊戲。每個怪物都有一個名字,最多4種不同的攻擊,以及一些代表其狀態的精靈。我設立了一個怪物課,它運作得非常好。我已經設法讓兩個怪物戰鬥,所有的爵士樂和它的作品。我的遊戲雖然會有一組預定義的怪物,但它們都有不同的統計數據,我很努力想出實現這個目標的最佳方法。到目前爲止,我有兩個想法。最常見的實現預定義類的方法。

思路:

  • 使一個類,其唯一目的是定義在所有使用怪物類遊戲中可用的怪物。
  • 爲我需要的每個怪物分類怪物類。儘管他們中沒有人真的會給怪物類添加任何東西。

第二種方法的好處是,在兩個不同的怪物(如進化樹)之間建立關係會更容易。

你們認爲最好的方法是什麼?我傾向於第二種方法。我錯過了另一種方法嗎?

+0

如果你從你的Monster類共享了一些示例代碼,以及一些使用Monster對象的代碼,它將會有所幫助。 – 2012-08-10 17:56:37

+0

@AaronKurtzhals我相信他問的不是一個示例代碼本身的方法。 – NSPunk 2012-08-10 17:59:04

+2

聽起來好像這些應該和你描述它們的方式不同。如果只有它們的屬性的值發生變化,那麼這種類型會定義同一類的多個對象。只有當你開始有不同的行爲和不同的**類型**時,課程才能發揮作用。 – 2012-08-10 18:07:05

回答

2

這種問題的一個常見模式是創建一個factory class,這與您的第一個想法很接近。你創建了一個單獨的類,叫做MonsterFactory,它的任務是製造其他地方使用的Monster類的實例。如果你正確地構建工廠,它甚至可以很好地處理進化樹。

工廠的另外一個好處是它可以提取存儲關於怪物信息的細節。例如,您可以將前五個或十個怪物的信息硬編碼到該程序中進行測試,但稍後會重新實現工廠在磁盤上使用數據庫或文件來處理大量怪物。只要你的工廠API保持不變,你的Monster類不需要關心這些細節;全部在工廠。

+0

啊,這看起來很有希望。我也喜歡從數據庫或文件中讀取數據的想法。我知道必須有一種方法來像這樣抽象它。謝謝。 – CaldwellYSR 2012-08-10 18:18:25

-1

即使他們中沒有人真的會給怪物類添加任何東西。

第二個方法的好處是,它會更容易使兩個不同的怪物之間的關係(如進化樹)

回答了你自己的問題。

相關問題