1

たとえば、「クリーチャー」クラスがある場合:

class Creature:
    def __init__(self,name,hp,damage):
        self.name = name
        self.hp = hp
        self.damage = damage

オークを作成したい場合は、orc = Creature(0,0,'orc',20,4). ただし、複数のタイプのクリーチャー (トロール、オーガなど) の場合、これは非現実的です。クリーチャーの各タイプの統計を覚えておく必要があり、クリーチャーを作成するたびに、それらのさまざまな統計をすべて入力する必要があります。

これを簡単に行う方法はありますか?たとえばorc = Creature(orc)、 を実行すると、その名前、hp、およびダメージが自動的に割り当てられます。これは、別のファイル/コードの一部、たとえば辞書で定義しました。

これは可能ですか?

編集:継承とそれに付随するすべてのものについては知っていますが、親の属性を設定値に設定するだけの子クラスを作成することは「良くない」とどこかで読みましたが、正確な理由は思い出せません.

4

2 に答える 2

1

いつでもプロトタイプを使用できます。

proto = {
  "orc" : (200, 300, 0)
  "troll" : (500, 300, 0)
  "wolf" : (100, 100, 0)
  ...
}

class Creature:
    def __init__(self, name):
        self.name = name
        self.hp = proto[name][0]
        ...

もちろん、上記は完全でも安全でもありません。ただし、重要なのは、同じ「タイプ」のオブジェクトを多数作成する必要がある場合は、デフォルト値を別の場所に置いておくことです。

于 2013-06-02T12:14:50.487 に答える
1

あなたは間違いなく継承を使いたいです。

オブジェクト指向言語でゲームを作成する前に、OOP に関するチュートリアルを読む必要があります。

于 2013-06-02T12:04:30.667 に答える