|
发表于 2025-3-23 22:36:16
|
显示全部楼层
- 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()
复制代码 |
|