如何设置回合(人类与计算机)在 tkinter gui 上玩 tictactoe?



我不知道如何正确设置转弯。根据我的代码,计算机的移动需要由玩家点击棋盘触发。我做得很好,人类与人类。下一个代码过于删减,但我认为我们可以掌握大致思路。

from tkinter import *
import random
root = Tk()
root.title("Tic Tac Toe")
root.resizable(0, 0)
board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
def lucky_guess():
#The computer moves randomly
def check_winner():
if board[0] == 'X' and board[1] == 'X' and board[2] == 'X':
print("Player's won. Game over.")
# sys.exit()
# All successful combinations
def set_movement(square, n):
global turn
if board[n] == " " and turn == 'X':
square["text"] = "X"
board[n] = "X"
check_winner()
messages.config(text="Computer's turn")
turn = 'O'
elif turn == 'O':
lucky_guess()
check_winner()
messages.config(text="Player's turn")
turn = 'X'
print(board)
# 9 tiles
tile_6 = Button(root, text="6", bg='gray', fg='white', 
height=4, width=8,command=lambda: set_movement(tile_6, 6))
tile_6.grid(row=0, column=0)
#Set turns
choice = random.choice('XO')
beginning = choice, "'s turn."
messages.config(text=beginning)
turn = choice
root.mainloop()

首先,我建议最终迁移到让类结构保存你的游戏状态,这样你就可以避免需要全局变量......但我们现在把它放在一边。

其次,列出的代码不完整,缺少一些重要的变量。

你应该有一种方式或一种方法来确定轮到人还是轮到计算机。此方法应在游戏开始时(以处理您或计算机先行)和每个回合结束时,在切换回合变量后调用。如果轮到计算机了...然后调用您的方法来选择计算机的正方形并使计算机移动。

最新更新