sairate 6ab0a4d422 feat(第7讲 字母卡牌): 实现记忆游戏并添加开始界面
- 新增 jiyi.py 文件,实现字母翻牌记忆游戏功能
- 添加 youxijiemian.py 文件,创建游戏开始界面
- 使用 turtle 和 tkinter 模块分别实现游戏和界面
- 支持选择不同难度的游戏模式
2025-07-02 16:16:55 +08:00

67 lines
2.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import tkinter as tk
from tkinter import messagebox
class SneakyTicTacToe:
def __init__(self, root):
self.root = root
self.size = 7 # 实际棋盘大小
self.board = [["" for _ in range(self.size)] for _ in range(self.size)]
self.current_player = "X"
self.buttons = [[None for _ in range(self.size)] for _ in range(self.size)]
for i in range(self.size):
for j in range(self.size):
btn = tk.Button(root, text="", font=("Arial", 24), width=3, height=1,
command=lambda r=i, c=j: self.on_click(r, c))
btn.grid(row=i+1, column=j)
self.buttons[i][j] = btn
# 默认只设置窗口足够显示中心3x3
root.geometry(f"{3*65}x{3*63}") # 宽x高像素+40 留状态栏
def on_click(self, r, c):
if self.board[r][c] != "":
return
self.board[r][c] = self.current_player
self.buttons[r][c].config(text=self.current_player)
if self.check_winner(self.current_player):
messagebox.showinfo("🎉 游戏结束", f"玩家 {self.current_player} 获胜!")
self.reset()
elif self.is_draw():
messagebox.showinfo("😐 游戏结束", "平局")
self.reset()
else:
self.current_player = "O" if self.current_player == "X" else "X"
def check_winner(self, player):
for i in range(self.size):
for j in range(self.size):
if j + 2 < self.size and all(self.board[i][j+k] == player for k in range(3)):
return True
if i + 2 < self.size and all(self.board[i+k][j] == player for k in range(3)):
return True
if i + 2 < self.size and j + 2 < self.size and all(self.board[i+k][j+k] == player for k in range(3)):
return True
if i + 2 < self.size and j - 2 >= 0 and all(self.board[i+k][j-k] == player for k in range(3)):
return True
return False
def is_draw(self):
return all(self.board[i][j] != "" for i in range(self.size) for j in range(self.size))
def reset(self):
for i in range(self.size):
for j in range(self.size):
self.board[i][j] = ""
self.buttons[i][j].config(text="")
self.current_player = "X"
# 启动游戏
if __name__ == "__main__":
root = tk.Tk()
game = SneakyTicTacToe(root)
root.mainloop()