import tkinter as tk
from tkinter import ttk, messagebox
import random

# 成语库
idiom_list = [
    "一帆风顺", "两全其美", "三心二意", "四面八方", "五光十色",
    "六神无主", "七上八下", "八面玲珑", "九牛一毛", "十全十美",
    "百发百中", "千方百计", "万紫千红", "春暖花开", "风平浪静",
    "山高水长", "海阔天空", "心想事成", "马到成功", "龙飞凤舞",
    "虎虎生威", "鸟语花香", "花好月圆", "雪中送炭", "乐极生悲",
    "春华秋实", "落井下石", "一鸣惊人", "人山人海", "锦上添花"
]

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

        self.score = 0
        self.last_char = ""
        self.used = set()

        # 标题
        ttk.Label(root, text="成语接龙游戏", font=("SimHei", 20, "bold")).pack(pady=10)

        # 当前提示
        self.label_tip = ttk.Label(root, text="游戏准备中...", font=("SimHei",14))
        self.label_tip.pack()

        # 输入框
        ttk.Label(root, text="请输入成语：").pack(pady=(12,2))
        self.input_var = tk.StringVar()
        self.entry = ttk.Entry(root, textvariable=self.input_var, font=("SimHei",14), width=22)
        self.entry.pack()
        self.entry.bind("<Return>", self.check)

        # 按钮区域
        frame_btn = ttk.Frame(root)
        frame_btn.pack(pady=12)
        ttk.Button(frame_btn, text="提交", command=self.check).grid(row=0,column=0,padx=6)
        ttk.Button(frame_btn, text="重新开始", command=self.restart).grid(row=0,column=1,padx=6)

        # 分数
        self.label_score = ttk.Label(root, text=f"当前分数：{self.score}", font=("SimHei",13))
        self.label_score.pack()

        # 历史记录
        ttk.Label(root, text="接龙记录：").pack(pady=(8,2))
        self.history = tk.Text(root, height=6, width=45, font=("SimHei",11))
        self.history.pack()

        self.restart()

    def restart(self):
        self.score = 0
        self.used.clear()
        self.history.delete(1.0, tk.END)
        self.label_score.config(text=f"当前分数：{self.score}")
        first = random.choice(idiom_list)
        self.last_char = first[-1]
        self.used.add(first)
        self.history.insert(tk.END, f"开局成语：{first}\n")
        self.label_tip.config(text=f"请接以【{self.last_char}】开头的成语")
        self.input_var.set("")
        self.entry.focus()

    def check(self, event=None):
        user = self.input_var.get().strip()
        if not user:
            messagebox.showwarning("提示", "请输入成语！")
            return
        if user not in idiom_list:
            messagebox.showerror("错误", "这个成语不在词库里面！")
            self.input_var.set("")
            return
        if user in self.used:
            messagebox.showerror("错误", "这个成语已经用过啦！")
            self.input_var.set("")
            return
        if user[0] != self.last_char:
            messagebox.showerror("错误", f"必须以【{self.last_char}】开头！")
            self.input_var.set("")
            return

        # 答对
        self.score += 10
        self.used.add(user)
        self.history.insert(tk.END, f"{user}\n")
        self.last_char = user[-1]
        self.label_score.config(text=f"当前分数：{self.score}")
        self.label_tip.config(text=f"请接以【{self.last_char}】开头的成语")
        self.input_var.set("")
        self.entry.focus()
        self.history.see(tk.END)

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