.使用python标准库tkinter编写GUI版本的猜数游戏,每次猜数之前要启动游戏并设置猜数范围和最大猜测次数等参数,退出游戏时显示战绩(共玩几次,猜对几次)信息。
时间: 2024-02-01 19:13:08 浏览: 64
python 使用tkinter 实现一个猜数字游戏
5星 · 资源好评率100%
以下是使用Python标准库Tkinter编写GUI版本的猜数游戏的代码:
```python
import random
import tkinter as tk
from tkinter import messagebox
class GuessingGame:
def __init__(self, master):
self.master = master
self.master.title("猜数游戏")
# 设置默认参数
self.min_num = 1
self.max_num = 100
self.max_guesses = 5
# 创建GUI组件
tk.Label(self.master, text="猜数范围:").grid(row=0, column=0)
self.min_entry = tk.Entry(self.master, width=5)
self.min_entry.grid(row=0, column=1)
tk.Label(self.master, text="-").grid(row=0, column=2)
self.max_entry = tk.Entry(self.master, width=5)
self.max_entry.grid(row=0, column=3)
tk.Label(self.master, text="最大猜测次数:").grid(row=1, column=0)
self.max_guesses_entry = tk.Entry(self.master, width=5)
self.max_guesses_entry.grid(row=1, column=1)
self.start_button = tk.Button(self.master, text="开始游戏", command=self.start_game)
self.start_button.grid(row=2, column=0, columnspan=4)
# 初始化游戏数据
self.num_guesses = 0
self.num_wins = 0
self.game_active = False
def start_game(self):
# 获取用户设置的参数
try:
self.min_num = int(self.min_entry.get())
self.max_num = int(self.max_entry.get())
self.max_guesses = int(self.max_guesses_entry.get())
except ValueError:
messagebox.showerror("错误", "请输入数字!")
return
# 检查参数是否合法
if self.min_num >= self.max_num:
messagebox.showerror("错误", "猜数范围不合法!")
return
if self.max_guesses <= 0:
messagebox.showerror("错误", "最大猜测次数不合法!")
return
# 初始化游戏数据
self.num_guesses = 0
self.game_active = True
self.answer = random.randint(self.min_num, self.max_num)
# 创建游戏界面
self.game_frame = tk.Toplevel(self.master)
self.game_frame.title("猜数游戏")
tk.Label(self.game_frame, text=f"猜数范围:{self.min_num} - {self.max_num}").grid(row=0, column=0, columnspan=2)
tk.Label(self.game_frame, text=f"最大猜测次数:{self.max_guesses}").grid(row=1, column=0, columnspan=2)
tk.Label(self.game_frame, text="你的猜测:").grid(row=2, column=0)
self.guess_entry = tk.Entry(self.game_frame, width=5)
self.guess_entry.grid(row=2, column=1)
self.guess_button = tk.Button(self.game_frame, text="猜!", command=self.make_guess)
self.guess_button.grid(row=3, column=0, columnspan=2)
def make_guess(self):
# 检查游戏是否在进行中
if not self.game_active:
messagebox.showerror("错误", "请先开始游戏!")
return
# 获取用户的猜测
try:
guess = int(self.guess_entry.get())
except ValueError:
messagebox.showerror("错误", "请输入数字!")
return
# 检查猜测是否在猜数范围内
if guess < self.min_num or guess > self.max_num:
messagebox.showerror("错误", "猜测不在猜数范围内!")
return
# 更新游戏数据
self.num_guesses += 1
if guess == self.answer:
self.num_wins += 1
messagebox.showinfo("恭喜", f"你猜对了!答案是{self.answer}。你共猜了{self.num_guesses}次。")
self.end_game()
elif self.num_guesses == self.max_guesses:
messagebox.showinfo("游戏结束", f"很遗憾,你没有猜对。答案是{self.answer}。你共猜了{self.num_guesses}次。")
self.end_game()
else:
if guess < self.answer:
messagebox.showinfo("提示", "猜小了!")
else:
messagebox.showinfo("提示", "猜大了!")
def end_game(self):
# 更新游戏状态
self.game_active = False
# 关闭游戏窗口
self.game_frame.destroy()
# 显示战绩信息
messagebox.showinfo("战绩", f"你共玩了{self.num_guesses}次,猜对了{self.num_wins}次。")
# 创建主窗口
root = tk.Tk()
# 创建猜数游戏对象
game = GuessingGame(root)
# 运行主循环
root.mainloop()
```
运行代码后,会出现一个窗口,里面有三个输入框和一个“开始游戏”按钮。在输入框中输入猜数范围和最大猜测次数等参数,然后点击“开始游戏”按钮,会弹出一个新的游戏窗口。在游戏窗口中输入猜测,然后点击“猜!”按钮,程序会提示你猜的数字是大了还是小了,直到你猜对了或者猜测次数达到了最大值为止。游戏结束后,会弹出一个消息框显示你的战绩信息。
阅读全文