import tkinter as tk
from tkinter import ttk
import random

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

        # 计分变量
        self.win = 0
        self.lose = 0
        self.draw = 0

        # 文字显示区域
        self.info_label = ttk.Label(root, text="请选择：石头 / 剪刀 / 布", font=("微软雅黑", 14))
        self.info_label.pack(pady=12)

        self.player_label = ttk.Label(root, text="你的选择：——", font=("微软雅黑", 12))
        self.player_label.pack()

        self.computer_label = ttk.Label(root, text="电脑选择：——", font=("微软雅黑", 12))
        self.computer_label.pack()

        self.result_label = ttk.Label(root, text="对局结果：等待出拳", font=("微软雅黑", 13, "bold"), foreground="#222222")
        self.result_label.pack(pady=8)

        self.score_label = ttk.Label(root, text=f"胜利：{self.win}  失败：{self.lose}  平局：{self.draw}", font=("微软雅黑",11))
        self.score_label.pack(pady=6)

        # 按钮容器
        btn_frame = ttk.Frame(root)
        btn_frame.pack(pady=15)

        ttk.Button(btn_frame, text="石头", width=8, command=lambda: self.play("石头")).grid(row=0, column=0, padx=6)
        ttk.Button(btn_frame, text="剪刀", width=8, command=lambda: self.play("剪刀")).grid(row=0, column=1, padx=6)
        ttk.Button(btn_frame, text="布", width=8, command=lambda: self.play("布")).grid(row=0, column=2, padx=6)

        # 重置按钮
        ttk.Button(root, text="重置分数", command=self.reset_score).pack()

    def play(self, player_choice):
        # 电脑随机选择
        choice_list = ["石头", "剪刀", "布"]
        computer_choice = random.choice(choice_list)

        # 更新选择显示
        self.player_label.config(text=f"你的选择：{player_choice}")
        self.computer_label.config(text=f"电脑选择：{computer_choice}")

        # 判断胜负逻辑
        if player_choice == computer_choice:
            res = "平局"
            self.draw += 1
            color = "#333333"
        elif (player_choice == "石头" and computer_choice == "剪刀") or \
             (player_choice == "剪刀" and computer_choice == "布") or \
             (player_choice == "布" and computer_choice == "石头"):
            res = "你获胜！"
            self.win += 1
            color = "#008800"
        else:
            res = "你输了！"
            self.lose += 1
            color = "#bb2222"

        self.result_label.config(text=f"对局结果：{res}", foreground=color)
        self.score_label.config(text=f"胜利：{self.win}  失败：{self.lose}  平局：{self.draw}")

    def reset_score(self):
        # 重置所有分数
        self.win = 0
        self.lose = 0
        self.draw = 0
        self.score_label.config(text=f"胜利：{self.win}  失败：{self.lose}  平局：{self.draw}")
        self.player_label.config(text="你的选择：——")
        self.computer_label.config(text="电脑选择：——")
        self.result_label.config(text="对局结果：等待出拳", foreground="#222222")

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