Вот класс игрока.
class Character():
def __init__(self, name, territory):
self.waterScore = 1
self.airScore = 1
self.landScore = 1
self.tribe = ""
if territory == 1: #Water tribe
self.airScore = 0
self.landScore = 1
self.waterScore = 2
self.tribe = "Water"
if territory == 2: #Air tribe
self.landScore = 0
self.waterScore = 1
self.airScore = 2
self.tribe = "Air"
if territory == 3: #Land tribe
self.waterScore = 0
self.airScore = 1
self.landScore = 2
self.tribe = "Land"
self.name = name
self.tribeScore = 0
if self.tribe == "Land":
self.tribeScore = self.landScore
elif self.tribe == "Water":
self.tribeScore = self.waterScore
elif self.tribe == "Air":
self.tribeScore = self.airScore
class Player(Character):
def __init__(self, territory):
super().__init__("Player", territory)
self.dead = False
if self.dead:
print("You have died.")
time.sleep(2)
print("So long...")
time.sleep(2)
sys.exit(0)
def setTribeScore(self): #This is the problem area
if self.tribe == "Water":
self.tribeScore = self.waterScore #These three are working
elif self.tribe == "Air":
self.tribeScore = self.airScore
elif self.tribe == "Land":
self.tribeScore = self.landScore
if self.landScore <= -2 or self.airScore <= -2 or self.landScore <= -2: #this one isn't doing anything
self.dead = True
Вот где вызывается "setTribeScore ()":
"""
An enemy and the player are passed into the following function, as well as which tribe skill is at stake. The function checks whether the winner or the loser is the player in order to set their tribe score.
"""
def winFight(winner, loser, stake):
x = getattr(winner, stake)
setattr(winner, stake, x + 1) #the attack that the winner used gets increased
y = getattr(loser, stake)
setattr(loser, stake, y - 1)
if not isinstance(winner, Player):
del winner
loser.setTribeScore()
print("You lost! Your attributes are {} for land, {} for water, and {} for air.".format(getattr(loser, "landScore"), getattr(loser, "waterScore"), getattr(loser, "airScore")))
elif not isinstance(loser, Player):
del loser
winner.setTribeScore()
print("You won! Your attributes are {} for land, {} for water, and {} for air.".format(getattr(winner, "landScore"), getattr(winner, "waterScore"), getattr(winner, "airScore")))
Когда я бегу по игровому циклу, игрок никогда не сможетумереть, даже когда счет племени падает ниже -1. Однако, как показывает отладка печати, оценка в племени обновляется, поэтому я знаю, что сама функция выполняет что-то . В чем может быть проблема?