我想在两个玩家之间轮流玩一个tictactoe游戏。为什么这个代码行不通?

2024-04-28 20:45:47 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么这个代码行不通?如果这不是最好的解决方案,请解释为什么这不起作用,以及什么是最好的解决方案。这是我的第一场比赛。在

def players():
    marks = 'o', 'x'
    player1 = None
    player2 = None
    mark = input("Who are you? ").lower()
    if mark == 'o':
        player1 = 'o'
        player2 = 'x'
    else:
        player1 = 'x'
        player2 = 'o'
    for i in range(21):
        if player1 == True:
            print(player1)
            player1 = False
        else:
            print(player2)
            player1 = True

range(21)行代码只是为了测试它是否有效。没有。当我输入'x'时,它只返回'o'然后一遍又一遍地返回True。我要它一遍又一遍地说“x”和“o”。在


Tags: 代码nonetrueinputifdefrange解决方案
1条回答
网友
1楼 · 发布于 2024-04-28 20:45:47

{cd2>{cd2>你为什么不被打印。在

你应该做的是添加第三个变量来存储轮到谁来播放。在您尝试的时候使用一个简单的布尔变量是很好的,但是让我向您展示一种方法,它可以很容易地扩展到包含多个玩家的游戏,方法是遍历一个玩家列表。在

还要注意,函数的前三行是未使用的,因此可以删除它们。在

def players():
    mark = input("Who are you? ").lower()

    if mark == 'o':
        player1 = 'o'
        player2 = 'x'
    else:
        player1 = 'x'
        player2 = 'o'

    # We keep both a list of players and the index of the next to play
    players = [player1, player2]
    turn = 0

    for i in range(21):
        print(players[turn])

        # The modulo operator allows us to cycle over our list
        turn = (turn + 1) % len(players)

players()

这是我截短的输出,因为我们在几行之后得到了这个想法。在

^{pr2}$

相关问题 更多 >