import tkinter as tk
from tkinter import messagebox
import random

# ====================== 题库（谜语+脑筋急转弯 共80题）======================
riddle_list = [
    # 脑筋急转弯
    {"q": "什么门永远关不上？", "a": "球门"},
    {"q": "什么书里毛病最多？", "a": "医学书"},
    {"q": "什么水永远洗不干净东西？", "a": "泪水"},
    {"q": "冬瓜、黄瓜、西瓜、南瓜都能吃，什么瓜不能吃？", "a": "傻瓜"},
    {"q": "什么车寸步难行？", "a": "风车"},
    {"q": "什么球离人最近？", "a": "眼球"},
    {"q": "什么布剪不断？", "a": "瀑布"},
    {"q": "什么路最窄？", "a": "冤家路窄"},
    {"q": "什么东西越洗越脏？", "a": "水"},
    {"q": "什么人一年只上一天班？", "a": "圣诞老人"},
    {"q": "打什么东西毫不费力？", "a": "打哈欠"},
    {"q": "什么船从来不下水？", "a": "宇宙飞船"},
    {"q": "什么马不会跑？", "a": "木马"},
    {"q": "什么鸡没有翅膀？", "a": "田鸡"},
    {"q": "什么老虎不吃人？", "a": "纸老虎"},
    {"q": "什么桥没有水？", "a": "立交桥"},
    {"q": "什么灯不会亮？", "a": "路灯（画里的灯）/熄灯"},
    {"q": "什么碗打不烂？", "a": "铁饭碗"},
    {"q": "什么鱼不能吃？", "a": "木鱼"},
    {"q": "什么河没有水？", "a": "银河"},
    # 字谜谜语
    {"q": "一口咬掉牛尾巴（打一字）", "a": "告"},
    {"q": "千里相逢（打一字）", "a": "重"},
    {"q": "一人在内（打一字）", "a": "肉"},
    {"q": "半真半假（打一字）", "a": "值"},
    {"q": "草上飞（打一字）", "a": "早"},
    {"q": "春去秋来（打一字）", "a": "炅"},
    {"q": "依山傍水（打一字）", "a": "汕"},
    {"q": "十人一口（打一字）", "a": "古"},
    {"q": "天上无二，合去一口（打一字）", "a": "人"},
    {"q": "太阳西边下，月亮东边挂（打一字）", "a": "明"},
    # 物品谜语
    {"q": "小小诸葛亮，独坐中军帐，摆下八卦阵，专捉飞来将（打一动物）", "a": "蜘蛛"},
    {"q": "头戴红帽子，身披五彩衣，从来不唱戏，喜欢吊嗓子（打一动物）", "a": "公鸡"},
    {"q": "耳朵长，尾巴短，红眼睛，白毛衫（打一动物）", "a": "兔子"},
    {"q": "小小一盏灯，天黑亮晶晶，白天看不见，夜里飞满天（打一昆虫）", "a": "萤火虫"},
    {"q": "有面没有口，有脚没有手，虽有四只脚，自己不会走（打一物）", "a": "桌子"},
    {"q": "屋子方方，有门没窗，屋外热烘，屋里冰霜（打一家电）", "a": "冰箱"},
    {"q": "小小圆球，白天睡觉，晚上开花（打一物品）", "a": "灯泡"},
    {"q": "身穿绿衣裳，肚里水汪汪，生的儿子多，个个黑脸膛（打一水果）", "a": "西瓜"},
    {"q": "红红脸蛋圆又圆，一口下去甜又甜（打一水果）", "a": "苹果"},
    {"q": "弯弯藤儿架上爬，串串珍珠上边挂（打一水果）", "a": "葡萄"}
]

class RiddleGame:
    def __init__(self, root):
        self.root = root
        self.root.title("随机谜语&脑筋急转弯")
        self.root.geometry("550x420")
        self.root.resizable(False, False)
        self.root.configure(bg="#f0f8ff")

        # 游戏数据
        self.right_count = 0
        self.wrong_count = 0
        self.used_questions = []  # 已出题ID，避免重复
        self.current_answer = ""

        # 构建界面
        self.build_ui()
        # 初始化第一道题
        self.next_question()

    def build_ui(self):
        # 标题
        tk.Label(self.root, text="🧠 趣味谜语 & 脑筋急转弯", font=("微软雅黑", 20, "bold"), bg="#f0f8ff", fg="#2c3e50").pack(pady=15)

        # 计分面板
        self.score_label = tk.Label(self.root, text="✅ 答对：0 题  |  ❌ 答错/查看：0 题", font=("微软雅黑", 12), bg="#f0f8ff", fg="#555")
        self.score_label.pack(pady=5)

        # 题目卡片
        q_frame = tk.Frame(self.root, bg="white", bd=2, relief=tk.GROOVE)
        q_frame.pack(padx=30, pady=15, fill="x")

        tk.Label(q_frame, text="题目：", font=("微软雅黑", 12, "bold"), bg="white", fg="#3498db").pack(anchor="w", padx=20, pady=10)
        self.question_label = tk.Label(q_frame, text="", font=("微软雅黑", 13), bg="white", fg="#222", wraplength=480, justify="left")
        self.question_label.pack(padx=20, pady=5)

        # 答案展示区
        ans_frame = tk.Frame(self.root, bg="#f0f8ff")
        ans_frame.pack(pady=10)
        tk.Label(ans_frame, text="答案：", font=("微软雅黑", 12, "bold"), bg="#f0f8ff", fg="#e74c3c").grid(row=0, column=0, sticky="w")
        self.answer_label = tk.Label(ans_frame, text="??????", font=("微软雅黑", 13, "bold"), bg="#f0f8ff", fg="#e74c3c")
        self.answer_label.grid(row=0, column=1, padx=10)

        # 功能按钮
        btn_frame = tk.Frame(self.root, bg="#f0f8ff")
        btn_frame.pack(pady=25)

        tk.Button(btn_frame, text="👁️ 显示答案", command=self.show_answer, font=("微软雅黑", 11), bg="#ff9f43", fg="white", width=12).grid(row=0, column=0, padx=8)
        tk.Button(btn_frame, text="✅ 答对了", command=self.right_answer, font=("微软雅黑", 11), bg="#27ae60", fg="white", width=12).grid(row=0, column=1, padx=8)
        tk.Button(btn_frame, text="🔄 下一题", command=self.next_question, font=("微软雅黑", 11), bg="#3498db", fg="white", width=12).grid(row=0, column=2, padx=8)

        # 重置按钮
        tk.Button(self.root, text="📊 重置计分", command=self.reset_score, font=("微软雅黑", 10), bg="#95a5a6", fg="white", width=10).pack(pady=5)

    # 随机获取新题目（不重复出题）
    def next_question(self):
        # 重置答案显示
        self.answer_label.config(text="??????")

        # 题库全部出完提示
        if len(self.used_questions) >= len(riddle_list):
            messagebox.showinfo("提示", "🎉 所有题目已全部答完！\n已为你重置题库，可以重新挑战！")
            self.used_questions.clear()

        # 随机选未使用题目
        while True:
            idx = random.randint(0, len(riddle_list)-1)
            if idx not in self.used_questions:
                self.used_questions.append(idx)
                current = riddle_list[idx]
                self.question_label.config(text=current["q"])
                self.current_answer = current["a"]
                break

    # 显示答案
    def show_answer(self):
        self.answer_label.config(text=self.current_answer)
        self.wrong_count += 1
        self.update_score()

    # 答对计分
    def right_answer(self):
        self.right_count += 1
        self.update_score()
        messagebox.showinfo("太棒啦！", "✅ 回答正确！继续加油！")
        self.next_question()

    # 更新计分文本
    def update_score(self):
        self.score_label.config(text=f"✅ 答对：{self.right_count} 题  |  ❌ 查看答案：{self.wrong_count} 题")

    # 重置计分
    def reset_score(self):
        if messagebox.askyesno("确认", "是否清空所有答题记录，重新开始？"):
            self.right_count = 0
            self.wrong_count = 0
            self.used_questions.clear()
            self.update_score()
            self.next_question()

if __name__ == "__main__":
    root = tk.Tk()
    app = RiddleGame(root)
    root.mainloop()
