摸鱼的时候用Python加ai写了一个带UI界面的猜数字游戏

2025-03-05 44 0

闲来无事,就把之前给学生讲到随机数知识点做的一个猜数字游戏案例。通过ai来加持增加了UI界面,然后给反馈了几次需求最终写出来了。打包好的成品EXE在文章底部下载即可(温馨提示:一定要把杀毒关闭掉,不然会误报)!!!

演示效果:

成品代码:

import tkinter as tk
from tkinter import ttk, messagebox
import random

# 初始化窗口
root = tk.Tk()
root.title("猜数字游戏")
root.geometry("600x400")

# 创建自适应布局
root.grid_rowconfigure((0, 1, 2, 3, 4, 5, 6, 7), weight=1)
root.grid_columnconfigure((0, 1, 2), weight=1)

# 变量声明
min_var = tk.IntVar(value=1)  # 最小值,默认为1
max_var = tk.IntVar(value=100)  # 最大值,默认为100
guess_var = tk.IntVar()  # 用户猜测的数字
target_number = random.randint(min_var.get(), max_var.get())  # 生成目标数字
result_label_text = tk.StringVar(value="请输入你的猜测")  # 结果标签的文本
last_guess_text = tk.StringVar(value="上一次猜测: 无")  # 上一次猜测的数字

# 定义猜数字函数
def check_guess():
    global target_number
    guess = guess_var.get()

    # 检查猜测数字是否在设定范围内
    if guess < min_var.get() or guess > max_var.get():
        messagebox.showwarning("警告", f"请输入一个在{min_var.get()}到{max_var.get()}之间的数字")
        return
    
    last_guess_text.set(f"上一次猜测: {guess}")  # 更新上一次猜测的数字显示

    if guess < target_number:
        result_label_text.set("数字小了哟")
    elif guess > target_number:
        result_label_text.set("数字大了哟")
    else:
        result_label_text.set("恭喜你,猜中了")
        show_result_dialog()  # 展示结果对话框

# 展示结果对话框
def show_result_dialog():
    result = messagebox.askquestion("恭喜", "你猜对了数字!\n你想继续游戏吗?")
    if result == 'yes':
        reset_game()  # 重新开始游戏
    else:
        root.quit()  # 退出游戏

# 重新开始游戏
def reset_game():
    global target_number
    target_number = random.randint(min_var.get(), max_var.get())
    result_label_text.set("请输入你的猜测")
    last_guess_text.set(f"上一次猜测: 无")  # 清除上一次猜测的数字显示

# 设置最小值的输入框
min_label = ttk.Label(root, text="最小值", font=("Helvetica", 12))
min_label.grid(row=0, column=0, padx=20, pady=10, sticky="e")

min_entry = ttk.Entry(root, textvariable=min_var, width=15)
min_entry.grid(row=0, column=1, padx=20, pady=10)

# 设置最大值的输入框
max_label = ttk.Label(root, text="最大值", font=("Helvetica", 12))
max_label.grid(row=1, column=0, padx=20, pady=10, sticky="e")

max_entry = ttk.Entry(root, textvariable=max_var, width=15)
max_entry.grid(row=1, column=1, padx=20, pady=10)

# 设置用户输入猜测的框架
guess_frame = ttk.Frame(root)
guess_frame.grid(row=2, column=0, columnspan=3, padx=20, pady=10)

guess_label = ttk.Label(guess_frame, text="猜一个数字", font=("Helvetica", 12))
guess_label.pack(side=tk.LEFT, padx=5, pady=5)

guess_entry = ttk.Entry(guess_frame, textvariable=guess_var, width=15)
guess_entry.pack(side=tk.LEFT, padx=5, pady=5)

# 创建猜数字按钮
guess_button = ttk.Button(root, text="猜数字", command=check_guess, width=30)
guess_button.grid(row=3, column=0, columnspan=3, padx=20, pady=10)

# 结果显示标签
result_label = ttk.Label(root, textvariable=result_label_text, font=("Helvetica", 16))
result_label.grid(row=4, column=0, columnspan=3, padx=20, pady=10)

# 上一次猜测显示标签
last_guess_label = ttk.Label(root, textvariable=last_guess_text, font=("Helvetica", 14), borderwidth=2, relief="ridge")
last_guess_label.grid(row=5, column=0, columnspan=3, padx=20, pady=10)

# 设置重置范围的函数
def reset_range():
    global target_number
    try:
        min_value = min_var.get()
        max_value = max_var.get()

        if min_value >= max_value:
            raise ValueError("最小值必须小于最大值")

        target_number = random.randint(min_value, max_value)
        result_label_text.set("请输入你的猜测")
        last_guess_text.set(f"上一次猜测: 无")  # 清除上一次猜测的数字显示
        messagebox.showinfo("成功", "范围已重置")
    except ValueError as e:
        messagebox.showerror("错误", str(e))

# 创建重置范围按钮
reset_button = ttk.Button(root, text="重置范围", command=reset_range, width=30)
reset_button.grid(row=6, column=0, columnspan=3, padx=20, pady=10)

# 运行主循环
root.mainloop()

代码注释版:

import tkinter as tk  # 导入 tkinter 模块,用于创建图形用户界面
from tkinter import ttk, messagebox  # 导入 ttk 组件和消息框
import random  # 导入 random 模块,用于生成随机数

# 初始化窗口
root = tk.Tk()  # 创建主窗口
root.title("猜数字游戏")  # 设置窗口标题
root.geometry("600x400")  # 设置窗口大小为600x400像素

# 创建自适应布局
root.grid_rowconfigure((0, 1, 2, 3, 4, 5, 6, 7), weight=1)  # 设置行的权重,使其自适应大小
root.grid_columnconfigure((0, 1, 2), weight=1)  # 设置列的权重,使其自适应大小

# 变量声明
min_var = tk.IntVar(value=1)  # 最小值,默认为1
max_var = tk.IntVar(value=100)  # 最大值,默认为100
guess_var = tk.IntVar()  # 用户猜测的数字
target_number = random.randint(min_var.get(), max_var.get())  # 生成在指定范围内的目标数字
result_label_text = tk.StringVar(value="请输入你的猜测")  # 结果标签的文本,初始提示
last_guess_text = tk.StringVar(value="上一次猜测: 无")  # 上一次猜测的数字,初始状态

# 设置最小值的输入框
min_label = ttk.Label(root, text="最小值", font=("Helvetica", 12))  # 创建最小值标签
min_label.grid(row=0, column=0, padx=20, pady=10, sticky="e")  # 将标签放置在网格的特定位置

min_entry = ttk.Entry(root, textvariable=min_var, width=15)  # 创建最小值输入框
min_entry.grid(row=0, column=1, padx=20, pady=10)  # 将输入框放置在网格的特定位置

# 设置最大值的输入框
max_label = ttk.Label(root, text="最大值", font=("Helvetica", 12))  # 创建最大值标签
max_label.grid(row=1, column=0, padx=20, pady=10, sticky="e")  # 将标签放置在网格的特定位置

max_entry = ttk.Entry(root, textvariable=max_var, width=15)  # 创建最大值输入框
max_entry.grid(row=1, column=1, padx=20, pady=10)  # 将输入框放置在网格的特定位置

# 设置用户输入猜测的框架
guess_frame = ttk.Frame(root)  # 创建一个框架来容纳猜测相关的控件
guess_frame.grid(row=2, column=0, columnspan=3, padx=20, pady=10)  # 将框架放置在网格的特定位置

guess_label = ttk.Label(guess_frame, text="猜一个数字", font=("Helvetica", 12))  # 创建猜测标签
guess_label.pack(side=tk.LEFT, padx=5, pady=5)  # 将标签放置在框架的左侧

guess_entry = ttk.Entry(guess_frame, textvariable=guess_var, width=15)  # 创建用户输入的猜测输入框
guess_entry.pack(side=tk.LEFT, padx=5, pady=5)  # 将输入框放置在框架的左侧

# 创建猜数字按钮
guess_button = ttk.Button(root, text="猜数字", command=check_guess, width=30)  # 创建按钮并绑定猜测函数
guess_button.grid(row=3, column=0, columnspan=3, padx=20, pady=10)  # 将按钮放置在网格的特定位置

# 结果显示标签
result_label = ttk.Label(root, textvariable=result_label_text, font=("Helvetica", 16))  # 创建结果标签
result_label.grid(row=4, column=0, columnspan=3, padx=20, pady=10)  # 将标签放置在网格的特定位置

# 上一次猜测显示标签
last_guess_label = ttk.Label(root, textvariable=last_guess_text, font=("Helvetica", 14), borderwidth=2, relief="ridge")  # 创建上一次猜测的标签
last_guess_label.grid(row=5, column=0, columnspan=3, padx=20, pady=10)  # 将标签放置在网格的特定位置

# 猜数字函数
def check_guess():
    global target_number  # 使用全局变量 target_number
    guess = guess_var.get()  # 获取用户的猜测

    # 检查猜测数字是否在设定范围内
    if guess < min_var.get() or guess > max_var.get():
        messagebox.showwarning("警告", f"请输入一个在{min_var.get()}到{max_var.get()}之间的数字")  # 弹出警告框提示
        return
    
    last_guess_text.set(f"上一次猜测: {guess}")  # 更新上一次猜测的数字显示

    if guess < target_number:
        result_label_text.set("数字小了哟")  # 提示用户数字小了
    elif guess > target_number:
        result_label_text.set("数字大了哟")  # 提示用户数字大了
    else:
        result_label_text.set("恭喜你,猜中了")  # 提示用户猜中
        show_result_dialog()  # 展示结果对话框

# 展示结果对话框
def show_result_dialog():
    result = messagebox.askquestion("恭喜", "你猜对了数字!\n你想继续游戏吗?")  # 弹出选择框
    if result == 'yes':
        reset_game()  # 继续游戏
    else:
        root.quit()  # 退出游戏

# 重新开始游戏
def reset_game():
    global target_number  # 使用全局变量 target_number
    target_number = random.randint(min_var.get(), max_var.get())  # 生成新的目标数字
    result_label_text.set("请输入你的猜测")  # 提示用户输入猜测
    last_guess_text.set(f"上一次猜测: 无")  # 清除上一次猜测的数字显示

# 设置重置范围的函数
def reset_range():
    global target_number  # 使用全局变量 target_number
    try:
        min_value = min_var.get()  # 获取最小值
        max_value = max_var.get()  # 获取最大值

        if min_value >= max_value:
            raise ValueError("最小值必须小于最大值")  # 检查最小值是否小于最大值

        target_number = random.randint(min_value, max_value)  # 重新生成目标数字
        result_label_text.set("请输入你的猜测")  # 提示用户输入猜测
        last_guess_text.set(f"上一次猜测: 无")  # 清除上一次猜测的数字显示
        messagebox.showinfo("成功", "范围已重置")  # 弹出提示框
    except ValueError as e:
        messagebox.showerror("错误", str(e))  # 弹出错误提示框

# 创建重置范围按钮
reset_button = ttk.Button(root, text="重置范围", command=reset_range, width=30)  # 创建重置按钮
reset_button.grid(row=6, column=0, columnspan=3, padx=20, pady=10)  # 将按钮放置在网格的特定位置

# 运行主循环
root.mainloop()  # 启动事件循环,使窗口保持开放

 

 


相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

相关文章

微信小程序快乐会领6大瓶可乐福利
用Python加ai写了一个本地音乐播放器
很优秀的孩子,情商智商都高!
用Python加ai调教写了一个经典贪吃蛇游戏
Python写的一个闹钟程序
用Python加ai写了一个定时关机小工具

发布评论

摸鱼的时候用Python加ai写了一个带UI界面的猜数字游戏