Working On Classes For A Text Based Game In Python
i'm trying to create a function to raise max hp whenever a stat is increased or decreased. i have tried changing self.maxHpCalc() player.** moving the variables = (int) into the
Solution 1:
Here's some fixed code, with a small driver program to exercise the classes.
Note the following changes
- The function
maxHpCalcshould be a bound method, if it is to operate on data contained in aplayerinstance. Therefore it should have aselfparameter and should referencestrengthanddefensefrom that self reference. - When calling
_maxHpCalcyou should referenceself. I made it a bound method and it needs an instance to work on. I added an underscore to indicate it's a private method. - You should call
maxHpCalcafter setting the values ofstrengthanddefense, otherwise they are not defined at the point the function is called. player.maxHpmakes no sense.playeris a class and has no static propertymaxHp, you need an instance to access that property. I create an instance and reference that.
code:
classplayer:
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
classorc(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)
I also have to ask, why include a constructor parameter maxHp if you don't use it but calculate it from other parameters?
Post a Comment for "Working On Classes For A Text Based Game In Python"