使用python标准库tkinter编写GUI版本的猜数游戏,每次猜数之前要启动游戏并设置猜数范围(输入最大与最小值)和最大猜测次数等参数,含有退出按钮并在退出游戏时弹出对话框显示战绩(共玩几次,猜对几次)信息。
时间: 2024-02-20 15:02:01 浏览: 126
好的,这是一个关于使用Python标准库tkinter编写GUI版本的猜数游戏的问题。下面是一个可以满足你的要求的实现:
```python
import tkinter as tk
from tkinter import messagebox
import random
class GuessGame:
def __init__(self, master):
self.master = master
self.master.title('猜数游戏')
self.master.geometry('300x200')
self.min_num = tk.StringVar()
self.max_num = tk.StringVar()
self.max_guess = tk.StringVar()
self.score = {'total': 0, 'win': 0}
tk.Label(self.master, text='猜数范围(最小值):').place(x=20, y=20)
tk.Entry(self.master, textvariable=self.min_num).place(x=120, y=20)
tk.Label(self.master, text='猜数范围(最大值):').place(x=20, y=50)
tk.Entry(self.master, textvariable=self.max_num).place(x=120, y=50)
tk.Label(self.master, text='最大猜测次数:').place(x=20, y=80)
tk.Entry(self.master, textvariable=self.max_guess).place(x=120, y=80)
tk.Button(self.master, text='开始游戏', command=self.start_game).place(x=120, y=120)
tk.Button(self.master, text='退出游戏', command=self.exit_game).place(x=120, y=160)
def start_game(self):
self.total_guess = int(self.max_guess.get())
self.target_num = random.randint(int(self.min_num.get()), int(self.max_num.get()))
self.guess_cnt = 0
self.game_window()
def game_window(self):
self.game_window = tk.Toplevel(self.master)
self.game_window.title('猜数游戏')
self.game_window.geometry('300x200')
tk.Label(self.game_window, text='猜数:').place(x=20, y=20)
self.guess_entry = tk.Entry(self.game_window)
self.guess_entry.place(x=120, y=20)
tk.Button(self.game_window, text='确认', command=self.guess).place(x=120, y=50)
self.hint = tk.Label(self.game_window, text='')
self.hint.place(x=120, y=80)
def guess(self):
self.guess_cnt += 1
guess_num = int(self.guess_entry.get())
if guess_num == self.target_num:
self.hint.config(text='猜对了!')
self.score['total'] += 1
self.score['win'] += 1
self.show_score()
self.game_window.destroy()
elif self.guess_cnt >= self.total_guess:
self.hint.config(text='猜错了,游戏结束!')
self.score['total'] += 1
self.show_score()
self.game_window.destroy()
elif guess_num > self.target_num:
self.hint.config(text='猜大了!')
else:
self.hint.config(text='猜小了!')
def show_score(self):
tk.messagebox.showinfo('战绩', '共玩了{}次,猜对了{}次。'.format(self.score['total'], self.score['win']))
def exit_game(self):
self.master.destroy()
self.show_score()
if __name__ == '__main__':
root = tk.Tk()
app = GuessGame(root)
root.mainloop()
```
这个程序中,我们定义了一个名为`GuessGame`的类,它继承自`tkinter.Tk`。在初始化方法中,我们创建了一个用于设置猜数范围和最大猜测次数的窗口。当用户点击“开始游戏”按钮时,我们会调用`start_game`方法,该方法会生成一个新的游戏窗口,并随机生成一个目标数字。在游戏窗口中,用户可以输入猜测的数字,并点击“确认”按钮,程序会根据猜测结果给出提示,并判断游戏是否结束。当用户点击“退出游戏”按钮时,程序会弹出一个消息框,显示战绩。
希望这个例子能够帮助你理解如何使用tkinter编写GUI程序。
阅读全文