在python中为基于文本的游戏编写类

2024-09-29 20:14:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个函数,每当属性增加或减少时,都可以提高最大生命值。我试过换衣服自我.maxHpCalc()player.**将变量=(int)移到orc类中,这是我能想到但一直没有运气的原因。根据我如何改变它,我得到自己/玩家没有属性强度,maxHp或maxHpCalc没有定义。在

class player:
    def __init__(self, hp = 1 , maxHp = 1, strength = 4, defense = 5):
        self.hp = hp
        self.maxHp = maxHpCalc()
        self.strength = strength
        self.defense = defense

    def maxHpCalc():
        player.maxHp = player.strength + player.defense

class orc(player):
    def __init__(self, hp, maxHp, strength , defnese):
        super().__init__(hp, maxHp, strength, defense)
print(player.maxHp)

我所改变的一切都给了我球员/自我目前没有属性力量


Tags: 函数self属性initdefstrengthclassint
1条回答
网友
1楼 · 发布于 2024-09-29 20:14:53

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

请注意以下更改

  1. 如果函数maxHpCalc要对player实例中包含的数据进行操作,则它应该是一个绑定方法。因此它应该有一个self参数,并且应该从该自引用引用中引用strength和{}。在
  2. 调用_maxHpCalc时,应该引用self。我把它变成了一个绑定方法,它需要一个实例来处理。我添加了一个下划线来表示它是一个私有方法。在
  3. 您应该在设置strength和{}的值之后调用maxHpCalc,否则在调用函数时不会定义它们。在
  4. player.maxHp没有意义。player是一个类,没有静态 属性maxHp,您需要一个实例来访问该属性。我创建一个实例并引用它。在

代码:

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)

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

相关问题 更多 >

    热门问题