Python 交换玩家

Python 交换玩家,python,python-3.x,Python,Python 3.x,我制作了一个程序来计算玩家当前的健康状况并在它们之间切换。我需要在球员之间切换的帮助。这就是我到目前为止所做的: class Player(): def turn(life): players = ['Player 1', 'Player 2'] life = 100 for player in players: while life >= 0: print (life)

我制作了一个程序来计算玩家当前的健康状况并在它们之间切换。我需要在球员之间切换的帮助。这就是我到目前为止所做的:

class Player():

    def turn(life):
        players = ['Player 1', 'Player 2']
        life = 100
        for player in players:
            while life >= 0:
                print (life)
                print ("+, -, or end turn")
                choice = input("> ")

                if choice == "+":
                    print ("Damage taken")
                    healing = int(input("> "))
                    life += healing
                elif choice == "-":
                    print ("Damage taken")
                    damage = int(input("> "))
                    life -= damage
                elif choice == "end turn" or "end":
                    return

            else:
                print ("You lose!")

play = Player()
play.turn()

我以前也有过类似的经历。我建议你做一些与你可能想要的答案稍有不同的事情。我建议您查看游戏设计模式的参考资料,而不是为这个单独的问题寻找解决方案

虽然我认为最初的学习曲线可能有点高,但我认为如果你学会使用游戏机制的适当设计模式,你会发现构建你想要的东西要容易得多

有几种不同的资源可供选择。我使用(我与这个人没有联系),但我也有C++背景。我会环顾四周,寻找对你来说最直观的方法,并尝试一下

祝你一切顺利

以下是一个开始:

class Player:
    def __init__(self, name, health=100):
        self.name = name
        self.health = health

    def hit(self, n):
        assert n >= 0
        self.health -= n

    def heal(self, n):
        assert n >= 0
        self.health += n

    @property
    def is_dead(self):
        return self.health <= 0

class Game:
    def __init__(self):
        self.players = [Player("Adam"), Player("Bert")]

    def turn(self, me, him):
        # fill this in!

    def play(self):
        a, b = self.players
        while True:
            self.turn(a, b)
            if b.is_dead:
                print("{} won!".format(a.name))
                break
            else:
                # swap players
                a, b = b, a

if __name__ == "__main__":
    Game().play()
职业玩家:
def u u init u u;(self,name,health=100):
self.name=名称
自我健康
def命中(自身,n):
断言n>=0
自我健康-=n
def heal(自我,n):
断言n>=0
自我健康+=n
@财产
def已死亡(自身):

返回自我健康。你似乎误解了课程。请重新阅读或继续本教程。为什么一个
播放器
包含两个
播放器
?为什么两个
玩家
只有一个
生命
?你似乎定义了一个更适合游戏的职业,而不是一个玩家。游戏类当然可以维护玩家列表,还可以有一个变量
currentPlayer
,用于跟踪当前玩家是谁,但这些变量应该是类成员变量(例如在
\uuuuuu init\uuuuuu
中初始化),而不是在
回合()中声明
。这个问题需要我们提供的更多帮助。我们喜欢帮助别人,但有时你需要先帮助自己,比如读一本关于语言的书,在线文档,或者询问你认识的人。一旦你更好地理解了这个主题,我们邀请你编辑这个问题,修正明显的错误,然后重新打开它。