3

app-engine-patchを使用してGoogleAppEngineのDjangoでターンおよびテキストベースの戦略ゲームを作成しています。単純化された概念は、各プレイヤーのビルドがいくつかの異なるユニットと建物でベースを改善し、他のプレイヤーとポイントを争うことができるというものです。

私の質問は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として設定し、飛行機の攻撃力と寿命を取得するときにユニット名を識別子として使用できます。ただし、プレイヤーモデルはユニット「飛行機」が実際にまだ存在するかどうかを知らないため、これはあまり動的な設計ではありません。プレイヤーモデルに、既存のユニット/建物モデルを何らかの形で反映させたいと思います。

これはウェブベースのゲームでの私の最初の試みなので、私は完全に軌道に乗っていないかもしれません、誰かがこれについて入力しましたか?それを行うためのより良い方法はありますか?

4

1 に答える 1

2

Unitクラスから派生するのはどうですか?

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

そうすれば、ドキュメントUserに従って、クラスは自動的にairplane_setコレクション(まあ、実際にはクエリ)を取得します

編集

または、次のようにAirplaneクラスを実装することもできます。

class Airplane(db.Model):
    unit = ReferenceProperty(Unit)
    amount = IntegerProperty()
    user = db.ReferenceProperty(User)
于 2010-10-28T17:17:13.360 に答える