[英]Tic Tac Toe in Python
到目前為止,我的井字游戲可以正常工作,但是在有人獲勝(或游戲以平局結束)后,我無法讓它停止。 誰能給我一個提示我做錯了什么? 它總是開始提示玩家 1 選擇一個字段:
這是我的代碼(開始我調用的游戲 intro() ):
def print_board(spot_lst):
print("\t|\t|\n ",spot_lst[1]," | ",spot_lst[2]," | ",spot_lst[3],"\n\t|\t|\n------------------------\
\n\t|\t|\n ",spot_lst[4]," | ",spot_lst[5]," | ",spot_lst[6]," \n\t|\t|\n------------------------\
\n\t|\t|\n ",spot_lst[7]," | ",spot_lst[8]," | ",spot_lst[9]," \n\t|\t|")
if len(chosen_nums)%2 == 0:
plyr1_input()
else:
plyr2_input()
def plyr1_input():
while True:
player_1_input = input(print("Player 1 please choose 1 available field: "))
if (player_1_input in acceptable_nums) and (player_1_input not in chosen_nums) and (player_1_input != "0"):
chosen_nums.append(player_1_input)
acceptable_nums[int(player_1_input)] = player_1
check_win_plyr1()
else:
if (player_1_input not in acceptable_nums) or (player_1_input == "0"):
print("Field Out of Bounds! Choose again.")
elif player_1_input in chosen_nums:
print("Field already occupied. Choose another field.")
def check_win_plyr1():
if len(chosen_nums) == 9:
print("The game ends with a draw. Thanks for playing!")
someone_won = True
play_again()
elif (acceptable_nums[1] == acceptable_nums[2] == acceptable_nums[3]) or (acceptable_nums[4] == acceptable_nums[5] == acceptable_nums[6]) or (acceptable_nums[7] == acceptable_nums[8] == acceptable_nums[9]) or (acceptable_nums[1] == acceptable_nums[4] == acceptable_nums[7]) or (acceptable_nums[2] == acceptable_nums[5] == acceptable_nums[8]) or (acceptable_nums[3] == acceptable_nums[6] == acceptable_nums[9]) or (acceptable_nums[1] == acceptable_nums[5] == acceptable_nums[9]) or (acceptable_nums[3] == acceptable_nums[5] == acceptable_nums[7]):
print("Congrats Player 1! You've won the game!")
print("\t|\t|\n ",acceptable_nums[1]," | ",acceptable_nums[2]," | ",acceptable_nums[3],"\n\t|\t|\n------------------------\
\n\t|\t|\n ",acceptable_nums[4]," | ",acceptable_nums[5]," | ",acceptable_nums[6]," \n\t|\t|\n------------------------\
\n\t|\t|\n ",acceptable_nums[7]," | ",acceptable_nums[8]," | ",acceptable_nums[9]," \n\t|\t|")
someone_won = True
play_again()
else:
print_board(acceptable_nums)
def plyr2_input():
while True:
player_2_input = input(print("Player 2 please choose 1 available field: "))
if (player_2_input in acceptable_nums) and (player_2_input not in chosen_nums) and (player_2_input != "0"):
chosen_nums.append(player_2_input)
acceptable_nums[int(player_2_input)] = player_2
check_win_plyr2()
else:
if (player_2_input not in acceptable_nums) or (player_2_input == "0"):
print("Field Out of Bounds! Choose again.")
elif player_2_input in chosen_nums:
print("Field already occupied. Choose another field.")
def check_win_plyr2():
if (acceptable_nums[1] == acceptable_nums[2] == acceptable_nums[3]) or (acceptable_nums[4] == acceptable_nums[5] == acceptable_nums[6]) or (acceptable_nums[7] == acceptable_nums[8] == acceptable_nums[9]) or (acceptable_nums[1] == acceptable_nums[4] == acceptable_nums[7]) or (acceptable_nums[2] == acceptable_nums[5] == acceptable_nums[8]) or (acceptable_nums[3] == acceptable_nums[6] == acceptable_nums[9]) or (acceptable_nums[1] == acceptable_nums[5] == acceptable_nums[9]) or (acceptable_nums[3] == acceptable_nums[5] == acceptable_nums[7]):
print("Congrats Player 2! You've won the game!")
print("\t|\t|\n ",acceptable_nums[1]," | ",acceptable_nums[2]," | ",acceptable_nums[3],"\n\t|\t|\n------------------------\
\n\t|\t|\n ",acceptable_nums[4]," | ",acceptable_nums[5]," | ",acceptable_nums[6]," \n\t|\t|\n------------------------\
\n\t|\t|\n ",acceptable_nums[7]," | ",acceptable_nums[8]," | ",acceptable_nums[9]," \n\t|\t|")
someone_won = True
play_again()
else:
print_board(acceptable_nums)
定義介紹():
global acceptable_nums
acceptable_nums = ["0","1","2","3","4","5","6","7","8","9"]
global chosen_nums
chosen_nums = []
global someone_won
someone_won = False
start_game()
定義開始游戲():
global player_1
player_1 = "empty"
global player_2
player_2 = "empty"
global repeat
repeat = "empty"
while someone_won == False:
while player_1 not in ["X", "O"]:
player_1 = input("Welcome to Tic Tac Toe. Please choose your player: X or O ")
if player_1 not in ["X","O"]:
print("Invalid choice. Please try again.")
elif player_1 == "X":
player_2 = "O"
print(f"Player 1 is '{player_1}' and Player 2 is '{player_2}'")
print_board(acceptable_nums)
else:
player_2 = "X"
print(f"Player 1 is '{player_1}' and Player 2 is '{player_2}'")
print_board(acceptable_nums)
def play_again():
while someone_won == True:
if repeat not in ["Y","N"]:
repeat = input("Do you want to play again? Insert Y or N: ")
elif repeat == "N":
print("Thanks for playing! Have a good day!")
break
else:
intro()
while 循環中沒有“break”關鍵字,您必須在需要時停止,使用 break 關鍵字。
while True:
player_1_input = input(print("Player 1 please choose 1 available field: "))
if (player_1_input in acceptable_nums) and (player_1_input not in chosen_nums) and (player_1_input != "0"):
chosen_nums.append(player_1_input)
acceptable_nums[int(player_1_input)] = player_1
check_win_plyr1()
break; #May be this break can keep the game going
else:
if (player_1_input not in acceptable_nums) or (player_1_input == "0"):
print("Field Out of Bounds! Choose again.")
elif player_1_input in chosen_nums:
print("Field already occupied. Choose another field.")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.