问题是在显示获胜者之后,它并没有摆脱循环。它要求玩家说出他想把 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()
这里有很多代码,但你遇到的是范围问题。我会将其缩小,以便您可以清楚地看到问题。考虑这段代码:
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()