import random
import tkinter as tk
from tkinter import font as tkfont

# ---------------- 谜语数据池 ----------------
RIDDLES = [
    {"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 RiddleApp:
    def __init__(self, root):
        self.root = root
        self.root.title("🧠 随机谜语 · 脑筋急转弯")
        self.root.geometry("620x520")
        self.root.minsize(520, 460)
        self.root.configure(bg="#1e2b3a")

        self.current_riddle = None
        self.answer_visible = False

        # 字体
        self.title_font = tkfont.Font(family="Microsoft YaHei", size=18, weight="bold")
        self.question_font = tkfont.Font(family="Microsoft YaHei", size=15, weight="bold")
        self.answer_font = tkfont.Font(family="Microsoft YaHei", size=14)
        self.btn_font = tkfont.Font(family="Microsoft YaHei", size=12, weight="bold")

        self._build_ui()
        self.load_random_riddle()

    def _build_ui(self):
        # 主容器
        container = tk.Frame(self.root, bg="#1e2b3a")
        container.pack(fill="both", expand=True, padx=20, pady=18)

        # 标题
        title = tk.Label(
            container,
            text="🧠 谜语 · 急转弯 🎲",
            font=self.title_font,
            fg="#eef5ff",
            bg="#1e2b3a",
        )
        title.pack(pady=(0, 14))

        # 题目卡片
        self.question_card = tk.Frame(
            container,
            bg="#0f1a24",
            highlightbackground="#3a6b8f",
            highlightthickness=1,
            bd=0,
        )
        self.question_card.pack(fill="x", ipady=28, pady=(0, 16))

        self.question_label = tk.Label(
            self.question_card,
            text="加载中...",
            font=self.question_font,
            fg="#ffffff",
            bg="#0f1a24",
            wraplength=540,
            justify="center",
        )
        self.question_label.pack(padx=18, pady=8)

        # 答案卡片
        self.answer_card = tk.Frame(
            container,
            bg="#08131c",
            highlightbackground="#2eb8a0",
            highlightthickness=1,
            bd=0,
        )
        self.answer_card.pack(fill="x", ipady=22, pady=(0, 18))

        self.answer_label = tk.Label(
            self.answer_card,
            text="🔒 点击下方按钮显示答案",
            font=self.answer_font,
            fg="#7f9fbf",
            bg="#08131c",
            wraplength=540,
            justify="center",
        )
        self.answer_label.pack(padx=18, pady=8)

        # 按钮区域
        btn_frame = tk.Frame(container, bg="#1e2b3a")
        btn_frame.pack(fill="x", pady=6)

        self.reveal_btn = tk.Button(
            btn_frame,
            text="👁️ 显示答案",
            font=self.btn_font,
            bg="#0a334d",
            fg="#d0ecff",
            activebackground="#124a6b",
            activeforeground="#ffffff",
            relief="flat",
            bd=0,
            padx=22,
            pady=10,
            cursor="hand2",
            command=self.toggle_answer,
        )
        self.reveal_btn.pack(side="left", expand=True, fill="x", padx=(0, 8))

        self.new_btn = tk.Button(
            btn_frame,
            text="🔄 换一个",
            font=self.btn_font,
            bg="#163b38",
            fg="#d0ecff",
            activebackground="#1f5650",
            activeforeground="#ffffff",
            relief="flat",
            bd=0,
            padx=22,
            pady=10,
            cursor="hand2",
            command=self.load_random_riddle,
        )
        self.new_btn.pack(side="right", expand=True, fill="x", padx=(8, 0))

        # 底部提示
        footer = tk.Label(
            container,
            text="🤯 每次随机出题 · 看看你能猜对多少",
            font=("Microsoft YaHei", 9),
            fg="#6b8ba8",
            bg="#1e2b3a",
        )
        footer.pack(pady=(14, 0))

    def load_random_riddle(self):
        """随机抽取一个谜语，并重置答案显示状态"""
        self.current_riddle = random.choice(RIDDLES)
        self.question_label.config(text=self.current_riddle["q"])
        self.answer_visible = False
        self.answer_label.config(
            text="🔒 点击下方按钮显示答案", fg="#7f9fbf"
        )
        self.reveal_btn.config(text="👁️ 显示答案")

    def toggle_answer(self):
        """切换答案的显示与隐藏"""
        if not self.current_riddle:
            return

        if self.answer_visible:
            # 隐藏答案
            self.answer_label.config(
                text="🔒 点击下方按钮显示答案", fg="#7f9fbf"
            )
            self.reveal_btn.config(text="👁️ 显示答案")
            self.answer_visible = False
        else:
            # 显示答案
            self.answer_label.config(
                text=f"💡 {self.current_riddle['a']}", fg="#a9f0ff"
            )
            self.reveal_btn.config(text="🙈 隐藏答案")
            self.answer_visible = True


def main():
    root = tk.Tk()
    app = RiddleApp(root)
    root.mainloop()


if __name__ == "__main__":
    main()