import tkinter as tk
from tkinter import font
import random
class RockPaperScissorsGame:
def __init__(self, master):
self.master = master
master.title("石头剪刀布")
master.geometry("400x400")
master.configure(bg="#F0F0F0")
# 初始化得分
self.player_score = 0
self.computer_score = 0
# 创建自定义字体
self.title_font = font.Font(family="Arial", size=16, weight="bold")
self.result_font = font.Font(family="Arial", size=14)
self.score_font = font.Font(family="Arial", size=12)
# 创建界面元素
self.create_widgets()
def create_widgets(self):
# 电脑选择显示
self.computer_choice_label = tk.Label(
self.master,
text="电脑出拳:等待中...",
font=self.title_font,
bg="#F0F0F0"
)
self.computer_choice_label.pack(pady=10)
# 结果显示
self.result_label = tk.Label(
self.master,
text="点击下方按钮开始游戏",
font=self.result_font,
bg="#F0F0F0",
fg="#333333"
)
self.result_label.pack(pady=15)
# 玩家选择按钮
button_frame = tk.Frame(self.master, bg="#F0F0F0")
button_frame.pack(pady=10)
choices = ["石头", "剪刀", "布"]
colors = ["#FF6666", "#66CC66", "#6666FF"]
for choice, color in zip(choices, colors):
btn = tk.Button(
button_frame,
text=choice,
font=self.title_font,
bg=color,
width=8,
command=lambda c=choice: self.play_round(c)
)
btn.pack(side=tk.LEFT, padx=5)
# 比分显示
self.score_label = tk.Label(
self.master,
text=f"玩家 {self.player_score} : {self.computer_score} 电脑",
font=self.score_font,
bg="#F0F0F0",
fg="#444444"
)
self.score_label.pack(pady=20)
# 重置按钮
reset_btn = tk.Button(
self.master,
text="重置比分",
font=self.score_font,
command=self.reset_scores
)
reset_btn.pack()
def play_round(self, player_choice):
# 电脑随机选择
computer_choice = random.choice(["石头", "剪刀", "布"])
self.computer_choice_label.config(text=f"电脑出拳:{computer_choice}")
# 判断胜负
result = self.get_result(player_choice, computer_choice)
# 更新比分和显示
if "赢" in result:
self.player_score += 1
color = "green"
elif "输" in result:
self.computer_score += 1
color = "red"
else:
color = "blue"
self.result_label.config(text=result, fg=color)
self.score_label.config(text=f"玩家 {self.player_score} : {self.computer_score} 电脑")
def get_result(self, player, computer):
if player == computer:
return "平局!"
winning_combinations = {
"石头": "剪刀",
"剪刀": "布",
"布": "石头"
}
if winning_combinations[player] == computer:
return "你赢了!(*^▽^*)"
return "你输了!(>﹏<)"
def reset_scores(self):
self.player_score = 0
self.computer_score = 0
self.score_label.config(text=f"玩家 {self.player_score} : {self.computer_score} 电脑")
self.computer_choice_label.config(text="电脑出拳:等待中...")
self.result_label.config(text="比分已重置", fg="#333333")
if __name__ == "__main__":
root = tk.Tk()
game = RockPaperScissorsGame(root)
root.mainloop()