Python 井字游戏

Python 井字游戏,python,tic-tac-toe,Python,Tic Tac Toe,我已经为Tic-Tac-Toe游戏编写了一个代码 下面是代码的作用: 获取播放器1的名称 获取播放器2的名称 询问播放机1是否需要X或O 如果他选择了X,那么玩家2将获得O,反之亦然 打印空板 要求两名玩家逐个输入行和列,并打印更新后的棋盘。 如果一名球员没有重复前一名球员的位置,那么在比赛结束前一切都会正常进行,没有任何问题 如果一个玩家重复前一个玩家的位置,则会显示一条消息,说明前一个玩家已经占据该位置,并让他再次猜测 现在,在这一点之后,如果我猜除前一个玩家已经使用的索引之外的任何索引

我已经为Tic-Tac-Toe游戏编写了一个代码

下面是代码的作用:

  • 获取播放器1的名称
  • 获取播放器2的名称
  • 询问播放机1是否需要
    X
    O
  • 如果他选择了
    X
    ,那么玩家2将获得
    O
    ,反之亦然
  • 打印空板
  • 要求两名玩家逐个输入行和列,并打印更新后的棋盘。
    • 如果一名球员没有重复前一名球员的位置,那么在比赛结束前一切都会正常进行,没有任何问题
    • 如果一个玩家重复前一个玩家的位置,则会显示一条消息,说明前一个玩家已经占据该位置,并让他再次猜测
  • 现在,在这一点之后,如果我猜除前一个玩家已经使用的索引之外的任何索引,它将覆盖前一个玩家的位置

    发生这种情况时终端的屏幕截图:

    我确定问题出在函数
    enterguess(turncount)
    中,但还没有发现它。知道问题出在哪里吗

    代码:
    您遇到的问题是,尽管您回忆起了
    enterguess
    ,但没有返回它。因此,它只是不断地调用
    enterguess
    ,直到给出有效的输入,然后忽略所有这些,并转到最终的返回语句,该语句仍然具有错误的猜测

    添加返回语句:

    def enterguess(turncount):
        def guess(name):
            return (int(input("\n" + players[name] + ", Enter row number: ")),
                    int(input(players[name] + ", Enter column number: ")))
    
        if turncount % 2 == 0:
            (row, col) = guess('player1')
    
            try:
                if board[row - 1][col - 1] in [sym['player1'], sym['player2']]:
                    print "\n" + players['player2'] + " already took that spot! Please guess again."
                    return enterguess(turncount)
            except:
                print "\nPlease enter the indexes between 1 and 3."
                return enterguess(turncount)
    
        else:
            (row, col) = guess('player2')
    
            try:
                if board[row - 1][col - 1] in [sym['player1'], sym['player2']]:
                    print "\n" + players['player1'] + " already took that spot! Please guess again."
                    return enterguess(turncount)
            except IndexError:
                print "\nPlease enter a number between 1 and 3."
                return nterguess(turncount)
    
        return (row - 1, col - 1)
    
    可能重复的
    def enterguess(turncount):
        def guess(name):
            return (int(input("\n" + players[name] + ", Enter row number: ")),
                    int(input(players[name] + ", Enter column number: ")))
    
        if turncount % 2 == 0:
            (row, col) = guess('player1')
    
            try:
                if board[row - 1][col - 1] in [sym['player1'], sym['player2']]:
                    print "\n" + players['player2'] + " already took that spot! Please guess again."
                    return enterguess(turncount)
            except:
                print "\nPlease enter the indexes between 1 and 3."
                return enterguess(turncount)
    
        else:
            (row, col) = guess('player2')
    
            try:
                if board[row - 1][col - 1] in [sym['player1'], sym['player2']]:
                    print "\n" + players['player1'] + " already took that spot! Please guess again."
                    return enterguess(turncount)
            except IndexError:
                print "\nPlease enter a number between 1 and 3."
                return nterguess(turncount)
    
        return (row - 1, col - 1)