我对Python中的类概念真的很陌生,所以请原谅我缺乏理解......我正在尝试根据我前面看到的YouTube教程制作基本且简单的RPG格斗。我认为你的角色的健康状况将基于“90 +等级* 10”。这很好用,直到我试图调整我的角色,发现水平增加但健康状况与我第一次加载程序时保持一致。我理解为什么会这样做,但有没有办法几乎绕过并根据级别进行更新?
这是一些代码
class Player:
def __init__(self):
self.level = 1
self.maxhealth = 90 + self.level * 10
self.health = self.maxhealth
PlayerIG = Player()
答案 0 :(得分:2)
将health
定义为函数,而不是属性
class Player:
def __init__(self):
self.level = 1
self.maxhealth = 90 + self.level * 10
def health(self):
return 90 + self.level * 10
PlayerIG = Player()
print(PlayerIG.health())
或提供更新health
的功能,并在您升级时调用它。
class Player:
def __init__(self):
self.level = 1
self.update_health()
def update_health(self):
self.health = 90 + self.level * 10
def level_up(self):
self.level += 1
self.update_health()
答案 1 :(得分:0)
__init__
仅在您实例化类时运行。我猜你正在更新玩家PlayerIG.level +=1
的等级。如果你这样做__init__
没有再次运行,因此maxhealth没有更新,所以你需要一个升级方法。
class Player:
def __init__(self, level): # allows you to create a player of level != 1
self.level = level
self.maxhealth = 90 + self.level * 10
self.health = self.maxhealth
def level_up(self):
self.level += 1
self.maxhealth += 10
PlayerIG = Player(1) # creates a player of level 1 and maxhealth 100
PlayerIG.level_up() # PlayerIG is now level 2 with a maxhealth of 110