在python中处理基于文本的游戏的类

时间:2017-04-18 21:52:49

标签: python python-3.x class

我尝试创建一个函数,以便在统计数据增加或减少时提高最大hp。我试过改变self.maxHpCalc()播放器。**将变量=(int)移动到orc类中我可以想到的每个原因并且没有运气。取决于我如何改变它我得到自我/玩家没有属性强度,maxHp或maxHpCalc没有定义。

char *base = (char *) 0;

我改变的一切让我玩家/自己目前没有属性力量

1 个答案:

答案 0 :(得分:0)

这里有一些固定的代码,有一个小的驱动程序来练习这些类。

请注意以下更改

  1. 函数maxHpCalc应该是绑定方法,如果它是对player实例中包含的数据进行操作的话。因此,它应该有self参数,并且应该引用该自引用中的strengthdefense
  2. 致电_maxHpCalc时,您应该参考self。我使它成为一个绑定方法,它需要一个实例来处理。我添加了一个下划线表示它是一种私人方法。
  3. 您应该在设置maxHpCalcstrength的值后调用defense ,否则在调用该函数时不会定义它们。
  4. player.maxHp毫无意义。 player是一个类,没有静态 属性maxHp,您需要一个实例来访问该属性。我创建了一个实例并引用它。
  5. 代码:

    class player:
        def __init__(self, hp=1, maxHp=1, strength=4, defense=5):
            self.hp = hp
            self.strength = strength
            self.defense = defense
            self.maxHp = self._maxHpCalc()
    
        def _maxHpCalc(self):
            return self.strength + self.defense
    
    class orc(player):
        def __init__(self, hp, maxHp, strength , defense):
            super().__init__(hp, maxHp, strength, defense)
    
    p = player()
    o = orc(1,2,3,4)
    
    print(p.maxHp)
    print(o.maxHp)
    

    我还要问,为什么要包含一个构造函数参数maxHp,如果你不使用它但是从其他参数计算它?