import turtle from tkinter import messagebox # 设置屏幕和画笔 screen = turtle.Screen() screen.title("简易井字棋") pen = turtle.Turtle() pen.hideturtle() pen.speed(0) pen.pensize(3) current_player = "X" board = [["" for _ in range(3)] for _ in range(3)] def draw_board(): for i in range(1, 3): # 竖线 pen.penup() pen.goto(-150 + i * 100, -150) pen.pendown() pen.goto(-150 + i * 100, 150) for i in range(1, 3): # 横线 pen.penup() pen.goto(-150, -150 + i * 100) pen.pendown() pen.goto(150, -150 + i * 100) def draw_symbol(row, col, symbol): x = -100 + col * 100 y = 70 - row * 100 pen.penup() pen.goto(x, y) pen.write(symbol, align="center", font=("Arial", 36, "bold")) def check_win(player): # 检查行 for r in range(3): if all(board[r][c] == player for c in range(3)): return True # 检查列 for c in range(3): if all(board[r][c] == player for r in range(3)): return True # 检查对角线 if all(board[i][i] == player for i in range(3)): return True if all(board[i][2 - i] == player for i in range(3)): return True return False def check_draw(): return all(board[r][c] != "" for r in range(3) for c in range(3)) def click(x, y): global current_player if not (-150 < x < 150 and -150 < y < 150): return col = int((x + 150) // 100) row = int((150 - y) // 100) if board[row][col] == "": board[row][col] = current_player draw_symbol(row, col, current_player) if check_win(current_player): messagebox.showinfo("游戏结束", f"玩家 {current_player} 获胜!") screen.bye() # 关闭窗口 return elif check_draw(): messagebox.showinfo("游戏结束", "平局!") screen.bye() return current_player = "O" if current_player == "X" else "X" draw_board() screen.onclick(click) screen.mainloop()