为什么我的播放器对象更新分数,但不跟踪它是否还活着?

问题描述 投票:0回答:1

这里是播放器类别。

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,玩家也永远不会死亡。但是,部落分数does会更新,如打印调试所示,所以我知道函数本身正在执行something。可能是什么问题?

python methods constructor updating
1个回答
0
投票

Player.__init__中的这些代码行:

if self.dead:
    print("You have died.")
    time.sleep(2)
    print("So long...")
    time.sleep(2)

您确切希望何时执行?

© www.soinside.com 2019 - 2024. All rights reserved.