3

我正在使用app-engine-patch在Google App Engine上創建一個基於Django的輪迴和基於文本的策略遊戲。簡化的概念是,每個玩家可以建造幾個不同的單位和建築物,以提高他們的基礎並與其他玩家爭奪積分。Django/GAE中基於瀏覽器的策略遊戲。模型建議?

我的問題涉及到Django模型的設計,在我看來,該建築和單位,這將有不同的攻擊力,生命,因此,應該像自己的模型,所以:

class Unit(db.Model): 
    name = db.StringProperty() 
    type = db.ReferenceProperty(UnitType) 
    targets = KeyListProperty(UnitType) 
    attack = db.IntegerProperty() 
    life = db.IntegerProperty() 
    price = db.IntegerProperty() 

然後,我的問題是如何最簡單地設置特定單位/建築物的玩家數量。作爲一個例子,玩家應該能夠購買15架飛機。

然後,我可以在播放器模型中將「飛機」設置爲IntegerProperty,並在獲得飛機的攻擊強度和壽命時使用單位名稱作爲標識符。然而,這不會是一個非常動態的設計,因爲玩家模型不知道單位「飛機」是否實際存在。我希望玩家模型在某種程度上反映現有的單元/建築模型。

這是我第一次嘗試基於網絡的遊戲,所以我可能完全偏離軌道,有沒有人對此有任何意見?有沒有更好的方法來做到這一點?

回答

2

如何從Unit類派生?

class Airplane(Unit): 
    owner = db.ReferenceProperty(User) 

這樣,你的User類將自動獲得一個airplane_set收集(當然,查詢真)根據documentation

編輯

或者你可以實現一個飛機類這樣:

class Airplane(db.Model): 
    unit = ReferenceProperty(Unit) 
    amount = IntegerProperty() 
    user = db.ReferenceProperty(User) 
+0

感謝您的回答。這可能會起作用,但這不意味着購買15架飛機會造成15架飛機物體?當我真正需要知道的是金額時,這不是一種浪費嗎? – 2010-10-28 17:53:14

+0

@allmanheten,好點,我已經更新了我的答案。 – 2010-10-28 18:23:37

+0

謝謝,我會嘗試這種方法。 :) – 2010-10-28 19:02:08