这段代码是一个简单的猜数字游戏的实现。它使用了Python的Tkinter库来创建一个图形用户界面(GUI)窗口。玩家需要在输入框中猜一个1到100之间的整数,然后点击确定按钮进行猜测。程序会根据玩家的猜测给出相应的提示,直到玩家猜对或者猜测次数达到5次为止。游戏界面包括标题标签、时间标签、游戏次数标签、说明标签、输入框、确定按钮、底部提示标签以及重新开始和查看答案按钮。其中,时间标签会实时更新当前时间,游戏次数标签会显示玩家已经猜测的次数。玩家可以通过重新开始按钮重新开始游戏,通过查看答案按钮查看正确答案。整个游戏界面的布局和交互逻辑都由Tkinter库提供的功能来实现。
import tkinter as tk # 导入 tkinter 模块并将其别名为 'tk'
from tkinter import messagebox # 从 tkinter 导入 'messagebox' 模块
import random # 导入 'random' 模块
import time # 导入 'time' 模块
# 生成随机数
def generate_random_number():
return random.randint(1, 100)
number = generate_random_number() # 生成一个随机数并赋值给 'number' 变量
guess_count = 0 # 将 'guess_count' 变量初始化为 0
def check_guess(): # 定义一个函数用于检查用户的猜测
global guess_count # 访问全局变量 'guess_count'
guess = int(entry.get()) # 从输入框中获取用户的猜测并将其转换为整数
guess_count += 1 # 将 'guess_count' 变量加 1
update_guess_count() # 调用函数更新猜测次数的标签
if guess == number: # 如果猜测正确
messagebox.showinfo("猜数字", f"恭喜你,猜对了!答案是 {number}") # 显示一个带有正确答案的消息框
restart_game() # 调用函数重新开始游戏
elif guess_count == 5: # 如果猜测次数达到 5 次且没有猜对
messagebox.showinfo("猜数字", f"很遗憾,你没有猜对。答案是 {number}") # 显示一个带有正确答案的消息框
restart_game() # 调用函数重新开始游戏
window.destroy() # 销毁 tkinter 窗口
elif guess < number: # 如果猜测小于随机数
messagebox.showinfo("猜数字", "猜小了,请再试一次。") # 显示一个提示信息框,提示猜测更大的数字
else: # 如果猜测大于随机数
messagebox.showinfo("猜数字", "猜大了,请再试一次。") # 显示一个提示信息框,提示猜测更小的数字
def restart_game(): # 定义一个函数重新开始游戏
global number, guess_count # 访问全局变量 'number' 和 'guess_count'
number = generate_random_number() # 生成一个新的随机数
guess_count = 0 # 将猜测次数重置为 0
entry.delete(0, tk.END) # 清空输入框
update_guess_count() # 调用函数更新猜测次数的标签
def show_answer(): # 定义一个函数显示正确答案
messagebox.showinfo("猜数字", f"正确答案是 {number}") # 显示一个带有正确答案的消息框
window = tk.Tk() # 创建一个 tkinter 窗口
window.title("猜数字") # 设置窗口的标题
window.geometry("480x347+700+250") # 设置窗口的大小和位置
window.configure(bg="#F0F0F0") # 设置窗口的背景颜色
# 创建标题标签
title_label = tk.Label(window, text="猜数字游戏", font=("Arial", 16, "bold"), bg="#F0F0F0", fg="#333333")
title_label.pack(pady=10)
# 创建时间标签
time_label = tk.Label(window, text="", font=("Arial", 12), bg="#F0F0F0")
time_label.pack()
# 创建游戏次数标签
count_label = tk.Label(window, text="游戏次数:0", font=("Arial", 12), bg="#F0F0F0")
count_label.pack(pady=5)
# 创建说明标签
instruction_label = tk.Label(window, text="请输入一个1到100之间的整数:", font=("Arial", 12), bg="#F0F0F0")
instruction_label.pack(pady=5)
# 创建输入框
entry = tk.Entry(window, font=("Arial", 12))
entry.pack(pady=5)
entry.focus() # 设置焦点在输入框上,方便用户直接输入
# 创建按钮
button = tk.Button(window, text="确定", font=("Arial", 12), command=check_guess, bg="#4CAF50", fg="white",
activebackground="#45A049", activeforeground="white", relief=tk.RAISED)
button.pack(pady=10, ipadx=10, ipady=3)
# 创建底部提示标签
footer_label = tk.Label(window, text="最多猜5次", font=("Arial", 10), bg="#F0F0F0", fg="#808080")
footer_label.pack(pady=5)
# 创建重新开始按钮
restart_button = tk.Button(window, text="重新开始", font=("Arial", 12), command=restart_game, bg="#f44336", fg="white",
activebackground="#d32f2f", activeforeground="white", relief=tk.RAISED)
restart_button.pack(side=tk.LEFT, ipadx=10, ipady=3)
# 创建查看答案按钮
answer_button = tk.Button(window, text="查看答案", font=("Arial", 12), command=show_answer, bg="#2196F3", fg="white",
activebackground="#1976D2", activeforeground="white", relief=tk.RAISED)
answer_button.pack(side=tk.RIGHT, ipadx=10, ipady=3)
def update_time(): # 定义一个函数更新时间
current_time = time.strftime("%Y年%m月%d日 %H:%M:%S") # 获取当前时间
time_label.config(text=f"当前时间:{current_time}") # 更新时间标签的文本
window.after(1000, update_time) # 每隔一秒调用自身函数更新时间
def update_guess_count(): # 定义一个函数更新猜测次数
count_label.config(text=f"游戏次数:{guess_count}") # 更新游戏次数标签的文本
update_time() # 调用函数开始更新时间
window.mainloop() # 进入 tkinter 的主事件循环,显示窗口