Python 为什么我的玩家对象更新分数,但不';t跟踪它是否';她还活着吗?

Python 为什么我的玩家对象更新分数,但不';t跟踪它是否';她还活着吗?,python,methods,constructor,updating,Python,Methods,Constructor,Updating,这是玩家课程 class Character(): 定义初始(自我、姓名、地域): self.waterScore=1 self.airScore=1 self.landScore=1 self.tribe=“” 如果领土=1:#水部落 self.airScore=0 self.landScore=1 self.waterScore=2 self.tribe=“水” 如果领土=2:#空中部落 self.landScore=0 self.waterScore=1 self.airScore=2 s

这是玩家课程

class Character():
定义初始(自我、姓名、地域):
self.waterScore=1
self.airScore=1
self.landScore=1
self.tribe=“”
如果领土=1:#水部落
self.airScore=0
self.landScore=1
self.waterScore=2
self.tribe=“水”
如果领土=2:#空中部落
self.landScore=0
self.waterScore=1
self.airScore=2
self.tribe=“空气”
如果领土=3:#土地部落
self.waterScore=0
self.airScore=1
self.landScore=2
self.tribe=“土地”
self.name=名称
self.tribeScore=0
如果self.tribe==“土地”:
self.tribeScore=self.landScore
elif self.tribe==“水”:
self.tribeScore=self.waterScore
elif self.tribe==“空气”:
self.tribeScore=self.airScore
职业球员(角色):
定义初始(自我、地域):
超级()。_初始__(“玩家”,地域)
self.dead=False
如果self.dead:
打印(“你已经死了。”)
时间。睡眠(2)
打印(“再见…”)
时间。睡眠(2)
系统出口(0)
def setTribeScore(self):#这是问题所在
如果self.tribe==“水”:
self.tribeScore=self.waterScore#这三个都在工作
elif self.tribe==“空气”:
self.tribeScore=self.airScore
elif self.tribe==“土地”:
self.tribeScore=self.landScore

如果self.landScore您的
播放器中的这些代码行。\uuuu init\uuuu

if self.dead:
    print("You have died.")
    time.sleep(2)
    print("So long...")
    time.sleep(2)
您预计这将在何时执行?我在这里得到的是,从你的提问中,你似乎希望每当你将
self.dead
设置为
True
(当
landScore
airScore
watercore
小于或等于-2时)时,都会执行这个命令


事实并非如此。
播放机中if语句的主体。只有在创建播放机对象时(毕竟是在
方法中),并且只有在
self.dead
True
时,才会执行,默认情况下,您硬编码为
False

我不确定您的任何代码是如何工作的,因为您有一个无条件的
系统。退出(0)
播放器的
\uuuu初始\uuuuu
中有用于调试的;谢谢。当
setTribeScore()
self.dead
属性更改为
True
。是的。问题是,当您执行
self.dead=True
时,这就是您实际所做的一切-在
播放器中没有发生神奇的绑定。\uuuu init\uuuu
方法并在
self.dead
变量设置为
True
时触发if语句。我将在稍后更新我的答案,并给出一个建议。那么,我可以做些什么来执行该行呢?您介意再分享一点代码吗?特别是关于游戏循环和角色轮流、进行攻击等。如果你对游戏进行更多的解释,我可能会建议其他构建代码的方法。我只需在
玩家中移动If语句。
战斗(玩家、敌人、选择)
后,将
移动到你的游戏循环中。这样你就可以检查玩家是否每回合都被击败。