import tkinter as tk
from tkinter import messagebox
import random

# 成语库
idioms = [
    "一帆风顺", "两全其美", "三心二意", "四海为家", "五光十色",
    "六神无主", "七上八下", "八面玲珑", "九牛一毛", "十全十美",
    "春暖花开", "鸟语花香", "山清水秀", "风和日丽", "花好月圆",
    "开天辟地", "地大物博", "博古通今", "今非昔比", "比比皆是",
    "事半功倍", "背水一战", "战无不胜", "胜券在握", "握手言和",
    "和颜悦色", "色胆包天", "天罗地网", "网开一面", "面如土色",
    "水落石出", "出人头地", "地久天长", "长驱直入", "入木三分",
    "分秒必争", "争先恐后", "后起之秀", "秀外慧中", "中庸之道"
]

class IdiomGame:
    def __init__(self, root):
        self.root = root
        self.root.title("成语接龙")
        self.root.geometry("750x420")
        self.root.resizable(False, False)

        self.score = 0
        self.current_idiom = random.choice(idioms)

        # 界面组件
        tk.Label(root, text="成语接龙游戏", font=("Microsoft YaHei", 24, "bold")).pack(pady=10)

        self.label_now = tk.Label(root, text=f"当前成语：{self.current_idiom}", font=("Microsoft YaHei", 18))
        self.label_now.pack(pady=5)

        self.label_tip = tk.Label(root, text=f"请以【{self.current_idiom[-1]}】开头输入四字成语", font=("Microsoft YaHei", 16), fg="#0066cc")
        self.label_tip.pack(pady=5)

        self.score_label = tk.Label(root, text=f"得分：{self.score}", font=("Microsoft YaHei", 16), fg="green")
        self.score_label.pack(pady=5)

        # 输入框
        self.entry = tk.Entry(root, font=("Microsoft YaHei", 18), width=20)
        self.entry.pack(pady=15)
        self.entry.bind("<Return>", self.submit)

        self.msg_label = tk.Label(root, text="请输入成语，回车提交", font=("Microsoft YaHei",14))
        self.msg_label.pack(pady=5)

        frame_btn = tk.Frame(root)
        frame_btn.pack(pady=10)
        tk.Button(frame_btn, text="提交答案", command=self.submit, font=("Microsoft YaHei",13), width=10).grid(row=0, column=0, padx=10)
        tk.Button(frame_btn, text="重新开始", command=self.reset, font=("Microsoft YaHei",13), width=10).grid(row=0, column=1, padx=10)

    def update_ui(self):
        self.label_now.config(text=f"当前成语：{self.current_idiom}")
        self.label_tip.config(text=f"请以【{self.current_idiom[-1]}】开头输入四字成语")
        self.score_label.config(text=f"得分：{self.score}")

    def submit(self, event=None):
        text = self.entry.get().strip()
        self.entry.delete(0, tk.END)
        target_char = self.current_idiom[-1]

        if len(text) != 4:
            self.msg_label.config(text="必须输入4个字成语！", fg="red")
            return
        if text[0] != target_char:
            self.msg_label.config(text=f"首字必须是【{target_char}】！", fg="red")
            return
        if text not in idioms:
            self.msg_label.config(text="词库暂无该成语！", fg="red")
            return

        # 答对
        self.score += 10
        self.current_idiom = text
        self.msg_label.config(text="回答正确！继续接龙", fg="#009933")
        self.update_ui()

    def reset(self):
        self.score = 0
        self.current_idiom = random.choice(idioms)
        self.msg_label.config(text="游戏已重置，请开始答题", fg="black")
        self.update_ui()

if __name__ == "__main__":
    win = tk.Tk()
    game = IdiomGame(win)
    win.mainloop()