【问题标题】:Simple 2 Players Tic Tac Toe Python简单的 2 人井字游戏 Python
【发布时间】:2019-10-14 17:35:58
【问题描述】:

我正在设置一个 2 人井字游戏(这是一项家庭作业)。但我不明白我犯了什么错误。

def start_move(board, letter, move):
    board[move] = letter


def next_player(board, player_1_letter):
    #determine 2 players' letter position
    if player_1_letter == "X":
        player_2_letter = "O"
    else:
        player_2_letter = "X"

def if_board_full(board):
    #if the board is full, back to "True"
    for i in range(1, 10):
        if free_space(board, i):
            return False
    return True

print("Welcome to tic tac toe !!!")

while True:
    #renew the board
    the_board = [" "] * 10
    player_1_letter, player_2_letter = input_letter()
    turn = first_turn()
    print(turn + " will go first.")
    gamestarts = True

    while gamestarts:
        if turn == "Player who choose O.":
            gameboard(the_board)
            move = firstplayermove(the_board)
            start_move(the_board, player_1_letter, move)

            if winner(the_board, player_1_letter):
                gameboard(the_board)
                print("Congratulationsss!!!!" + player_1_letter + " has won!")
                gamestarts = False
            else:
                if free_space(the_board):
                    gameboard(the_board)
                    print("Tie!")
                    break
                else:
                    turn = "Player who choose X"

        else:
            #player 2's turn
            move = next_player(the_board, player_2_letter)
            start_move(the_board, player_2_letter, move)

            if winner(the_board, player_2_letter):
                    gameboard(the_board)
                    print("Player 2 has won!!! Congratulations!")
                    gamestarts = False
            else:
                if free_space(the_board):
                    gameboard(the_board)
                    print("Tie!!!")
                    break

                else:
                    turn = "Player who choose O"

    if not play_again():
        break

我希望游戏(代码)没问题(对我来说)......但它一直在说。

Traceback(最近一次调用最后一次):文件 “C:\Users\ASUS\Desktop\Python\projectdemo.py”,第 122 行,在 start_move(the_board, player_2_letter, move) 文件“C:\Users\ASUS\Desktop\Python\projectdemo.py”,第 51 行,在 start_move board[move] = letter TypeError: 列表索引必须是整数或切片,而不是 NoneType

【问题讨论】:

    标签: python


    【解决方案1】:

    在第 50 行,您设置了 move = next_player(the_board, player_2_letter)。函数next_player() 没有返回任何值,所以move 没有得到值。

    next_player() 更改为:

    def next_player(board, player_1_letter):
        #determine 2 players' letter position
        if player_1_letter == "X":
            player_2_letter = "O"
        else:
            player_2_letter = "X"
        return player_2_letter
    
    

    【讨论】:

      【解决方案2】:

      您尚未将move 定义为board[move] 中的任何内容。它不知道如何处理它。

      【讨论】:

        猜你喜欢
        • 2019-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        • 1970-01-01
        相关资源
        最近更新 更多