我的 tic tac toe python 游戏有问题

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

问题是在显示获胜者之后,它并没有摆脱循环。它要求玩家说出他想把 X 放在哪里。如果你们能帮助我,我将非常感激。 我想让它开始游戏。可玩回合制,当有人获胜时会显示获胜者并询问他们是否想再次玩

import random

try:
    print("Welcome to Tic Tac Toe \n======================")
    Running = 1

    while Running == 1:
        possible_numbers = [1,2,3,4,5,6,7,8,9]
        game_board = [["1","2","3"],["4","5","6"],["7","8","9"]]

        def print_game_board():
            print("+---+---+---+")
            print(f"| {game_board[0][0]} | {game_board[0][1]} | {game_board[0][2]} |")
            print("+---+---+---+")
            print(f"| {game_board[1][0]} | {game_board[1][1]} | {game_board[1][2]} |")
            print("+---+---+---+")
            print(f"| {game_board[2][0]} | {game_board[2][1]} | {game_board[2][2]} |")
            print("+---+---+---+")

        GG = False
        def check_for_winner():
            if game_board[0][0] == game_board[0][1] == game_board[0][2]:
                print(f"{game_board[0][0]} has won the game")
                GG = True
            elif game_board[1][0] == game_board[1][1] == game_board[1][2]:
                print(f"{game_board[1][0]} has won the game")
                GG = True
            elif game_board[2][0] == game_board[2][1] == game_board[2][2]:
                print(f"{game_board[2][0]} has won the game")
                GG = True
            elif game_board[0][0] == game_board[1][0] == game_board[2][0]:
                print(f"{game_board[0][0]} has won the game")
                GG = True
            elif game_board[0][1] == game_board[1][1] == game_board[2][1]:
                print(f"{game_board[0][1]} has won the game")
                GG = True
            elif game_board[0][2] == game_board[1][2] == game_board[2][2]:
                print(f"{game_board[0][2]} has won the game")
                GG = True
            elif game_board[0][0] == game_board[1][1] == game_board[2][2]:
                print(f"{game_board[0][0]} has won the game")
                GG = True
            elif game_board[0][2] == game_board[1][1] == game_board[2][0]:
                print(f"{game_board[0][2]} has won the game")
                GG = True
        print_game_board()
        print("You are going to play as X")
        turn = 0
    
        while G

G == False:
            if (turn % 2) == 0 :
                user_input = int(input("What number do you wanna put your X? 1-9 "))
                possible_numbers.remove(user_input)

                if user_input == 1:
                    game_board[0][0] = "X"
                elif user_input == 2:
                    game_board[0][1] = "X"
                elif user_input == 3:
                    game_board[0][2] = "X"
                elif user_input == 4:
                    game_board[1][0] = "X"
                elif user_input == 5:
                    game_board[1][1] = "X"
                elif user_input == 6:
                    game_board[1][2] = "X"
                elif user_input == 7:
                    game_board[2][0] = "X"
                elif user_input == 8:
                    game_board[2][1] = "X"
                elif user_input == 9:
                    game_board[2][2] = "X"

                turn += 1
                print_game_board()
                check_for_winner()
                
            
            if (turn % 2) == 1 :
                print("Now it's computer turn")
                comp_choice = random.choice(possible_numbers)
                possible_numbers.remove(comp_choice)

                if comp_choice == 1:
                    game_board[0][0] = "O"
                elif comp_choice == 2:
                    game_board[0][1] = "O"
                elif comp_choice == 3:
                    game_board[0][2] = "O"
                elif comp_choice == 4:
                    game_board[1][0] = "O"
                elif comp_choice == 5:
                    game_board[1][1] = "O"
                elif comp_choice == 6:
                    game_board[1][2] = "O"
                elif comp_choice == 7:
                    game_board[2][0] = "O"
                elif comp_choice == 8:
                    game_board[2][1] = "O"
                elif comp_choice == 9:
                    game_board[2][2] = "O"

                print("Computer has played its turn")
                print_game_board()
                check_for_winner()
                turn += 1
           
        wanna_play = input("do you wanna play another round? yes/no ").lower()
        if wanna_play == "yes":
            Running = 1
        else:
            print("Thanks for playing")
            quit()

except (ValueError, TypeError):
    quit()
python python-3.x if-statement while-loop logic
1个回答
0
投票

这里有很多代码,但你遇到的是范围问题。我会将其缩小,以便您可以清楚地看到问题。考虑这段代码:

def outer_function():
    GG = False

    def inner_function():
        GG = True

    print(GG)

outer_function()

它将打印

False
,因为
GG = True
没有在外部函数中将
GG
设置为
True
,它会隐藏它。

相反,尝试

return
设置一个值:

def outer_function():
    GG = False

    def inner_function():
        return True

    GG = inner_function()
    print(GG)

outer_function()

因此,如果有获胜者,

check_for_winner
应返回
True
,如果没有获胜者,则应返回
False
。当你调用这个函数时,写:

GG = check_for_winner()
© www.soinside.com 2019 - 2024. All rights reserved.