如何解决我使用tkinter在python 3中制作了Tic Tac Toe游戏,但是运行代码时却没有任何输出,这是我第一次谢谢您
import tkinter as tk
window = tk.Tk()
# Code to add widgets will go here
window.title("Tic Tac Toe Board")
window.configure(bg = "white")
theboard = ['']*10
这是所有小部件的轮廓
Label1 = tk.Label(window,text ="Player 1 :")
Label1.grid(row=0,column=0)
DisplayMain = tk.Text(master =window,width = 20,height = 2,state = 'disabled')
DisplayMain.grid(row = 0,column = 1)
Entry1 = tk.Entry(master = window)
Entry1.grid(row=1,column=1)
Label2 = tk.Label(window,text ="Player 2 :")
Label2.grid(row=0,column=2)
这些都是我定义的功能
def buttonclicked(button,board,marker,position):
board[position] = marker
button['text'] = marker
button.configure(state="disabled")
board[position] = marker
user_input = Entry1.get
def executer():
global user_input
user_input = Entry1.get()
我在这里定义了按钮
Button1 = tk.Button(window,height = 10,text = '',command= lambda: buttonclicked(Button1,theboard,1))
Button1.grid(row=2,column=0)
Button2 = tk.Button(window,command= lambda: buttonclicked(Button2,2))
Button2.grid(row=2,column=1)
Button3 = tk.Button(window,command= lambda: buttonclicked(Button3,3))
Button3.grid(row=2,column=2)
Button4 = tk.Button(window,command= lambda: buttonclicked(Button4,4))
Button4.grid(row=3,column=0)
Button5 = tk.Button(window,command= lambda: buttonclicked(Button5,5))
Button5.grid(row=3,column=1)
Button6 = tk.Button(window,command= lambda: buttonclicked(Button6,6))
Button6.grid(row=3,column=2)
Button7 = tk.Button(window,command= lambda: buttonclicked(Button7,7))
Button7.grid(row=4,column=0)
Button8 = tk.Button(window,command= lambda: buttonclicked(Button8,8))
Button8.grid(row=4,column=1)
Button9 = tk.Button(window,command= lambda: buttonclicked(Button9,9))
Button9.grid(row=4,column=2)
Button10 = tk.Button(window,height=5,text="Click Me",command = lambda: executer())
Button10.grid(row=5,column=1)
这些是其余功能
#Function that takes in user input
def player_input():
'''
OUTPUT = (player1marker,player2marker)
'''
global marker
marker = str(user_input)
while marker != 'X' and marker != 'O':
DisplayMain.insert(0.0,'Welcome to Tic-Tac-Toe,Choose X or O to start playing')
player1 = marker
player2 = ''
marker = marker.upper()
if player1 == 'X':
player2 = 'O'
elif player1 == 'O':
player2 = 'X'
else:
pass
continue
return (player1,player2)
#Function that randomly pics who goes first
import random
def choose_first():
player = random.randint(1,2)
if player == 1:
return ("Player 1")
else:
return ("Player 2")
#fucntion which checks if a index position on the board is free returns boolean value
def space_check(board,position):
return board[position] == ''
def full_board_check(board):
for i in range(1,10):
if space_check(board,i):
return False
#return true if full
return True
def win_check(board,mark):
if board[1] == mark and board[2] == mark and board[3]== mark:
return True
elif board[1] == mark and board[4] == mark and board[7] == mark:
return True
elif board[1] == mark and board[5] == mark and board[9] == mark:
return True
elif board[2] == mark and board[5] == mark and board[8]== mark:
return True
elif board[7] == mark and board[5] == mark and board[3]==mark:
return True
elif board[7]== mark and board[8]== mark and board[9] == mark:
return True
elif board[9] == mark and board[6] == mark and board[3] == mark:
return True
elif board[4] == mark and board[5] == mark and board[6] == mark:
return True
else:
return False
def replay():
global DisplayMain
DisplayMain.config(state = 'normal')
DisplayMain.insert(0.0,"Do you want to play again ? ")
play_game = str(user_input)
DisplayMain.config(state = 'disabled')
return play_game.lower()[0] == 'y'
game_on_ready = True
while game_on_ready == True:
player1_marker,player2_marker = player_input()
Label1['text'] = "Player 1 :" + player1_marker
Label2['text'] = "Player 2 :" + player2_marker
#Assigning input of players to variables
DisplayMain.insert(0.0,f"Player 1 chooses {player1_marker}")
DisplayMain.insert(0.0,f"Player 2 chooses {player2_marker}")
DisplayMain.config(state='disabled')
#choosing players turn
turn = choose_first()
DisplayMain.config(state='normal')
DisplayMain.insert(0.0,f'{turn} gets to go first Are you ready to play {turn} ? Enter Yes or No ')
DisplayMain.config(state='disabled')
play_game = str(user_input)
if play_game.lower()[0] == 'y':
game_on_ready = True
else:
game_on_ready = False
这是游戏的工作方式,我认为这有问题 因此,当我运行其余代码时,不会出现任何错误
while game_on_ready == True :
if turn == 'Player 1':
#Check if won
if win_check(theboard,player1_marker) == True:
DisplayMain.insert(0.0,f"Player 1 ' {player1_marker} ' has won !")
game_on_ready = False
else:
#check if tie
if full_board_check(theboard) == True:
DisplayMain.insert(0.0,"The game is a DRAW")
break
else:
#switch to player 2
turn = "player 2"
else:
#Check if won
if win_check(theboard,player2_marker) == True:
DisplayMain.insert(0.0,f"Player 2 ' {player2_marker} 'has won !")
game_on_ready = False
else:
#check if tie
if full_board_check(theboard) == True:
DisplayMain.insert(0.0,"The game is a DRAW !")
break
else:
#switch to player 1
turn = "Player 1"
if not replay():
DisplayMain.insert(0.0,"Thank you for playing ! HOPE YOU HAD FUN ....")
break
window.mainloop()
#请检查代码并提及必须进行的更改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。