import tkinter as tk
import random

class RockPaperScissors:
    def __init__(self, root):
        self.root = root
        self.root.title("石头剪刀布")
        self.root.geometry("400x350")
        self.root.resizable(False, False)

        # 游戏状态
        self.choices = ['石头', '剪刀', '布']
        self.user_score = 0
        self.computer_score = 0
        self.tie_score = 0

        # 创建 GUI 组件
        self.create_widgets()

    def create_widgets(self):
        # 标题
        title = tk.Label(self.root, text="✊ 石头剪刀布 ✋", font=("微软雅黑", 18, "bold"))
        title.pack(pady=10)

        # 按钮框架
        btn_frame = tk.Frame(self.root)
        btn_frame.pack(pady=10)

        # 三个选择按钮
        for choice in self.choices:
            btn = tk.Button(btn_frame, text=choice, width=8, height=2,
                            font=("微软雅黑", 12),
                            command=lambda c=choice: self.play(c))
            btn.pack(side=tk.LEFT, padx=5)

        # 结果显示区域
        self.result_var = tk.StringVar()
        self.result_var.set("点击上方按钮开始游戏")
        result_label = tk.Label(self.root, textvariable=self.result_var,
                                font=("微软雅黑", 12), fg="blue")
        result_label.pack(pady=10)

        # 电脑选择显示
        self.computer_var = tk.StringVar()
        self.computer_var.set("电脑：等待选择...")
        computer_label = tk.Label(self.root, textvariable=self.computer_var,
                                  font=("微软雅黑", 11))
        computer_label.pack(pady=5)

        # 得分显示
        self.score_var = tk.StringVar()
        self.update_score_display()
        score_label = tk.Label(self.root, textvariable=self.score_var,
                               font=("微软雅黑", 11), fg="darkgreen")
        score_label.pack(pady=10)

        # 重置和退出按钮
        btn_frame2 = tk.Frame(self.root)
        btn_frame2.pack(pady=10)

        reset_btn = tk.Button(btn_frame2, text="重置分数", width=10,
                              command=self.reset_score)
        reset_btn.pack(side=tk.LEFT, padx=5)

        quit_btn = tk.Button(btn_frame2, text="退出", width=10,
                             command=self.root.quit)
        quit_btn.pack(side=tk.LEFT, padx=5)

    def play(self, user_choice):
        """处理一次游戏：比较用户选择和电脑随机选择"""
        computer_choice = random.choice(self.choices)
        self.computer_var.set(f"电脑：{computer_choice}")

        # 判断胜负
        if user_choice == computer_choice:
            result = "平局！"
            self.tie_score += 1
        elif (user_choice == '石头' and computer_choice == '剪刀') or \
             (user_choice == '剪刀' and computer_choice == '布') or \
             (user_choice == '布' and computer_choice == '石头'):
            result = "你赢了！🎉"
            self.user_score += 1
        else:
            result = "电脑赢了！😢"
            self.computer_score += 1

        self.result_var.set(f"你出了 {user_choice}，{result}")
        self.update_score_display()

    def update_score_display(self):
        """更新得分显示"""
        self.score_var.set(
            f"玩家：{self.user_score}  电脑：{self.computer_score}  平局：{self.tie_score}"
        )

    def reset_score(self):
        """重置所有分数"""
        self.user_score = 0
        self.computer_score = 0
        self.tie_score = 0
        self.update_score_display()
        self.result_var.set("分数已重置，继续游戏吧！")
        self.computer_var.set("电脑：等待选择...")


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