功能要求:计算机产生一个300-800之间的随机整数,猜中即胜,猜不中, 提示是大了还是小了,继续猜,直至猜到,给出所用次数和评语。把结果保存 到文件里。要用到文件保存对话框,在同一个界面显示结果
时间: 2024-03-26 07:39:41 浏览: 117
获取10-20之间六个不重复的随机整数.html
好的,我已经明白您的要求。让我们开始编写这个程序吧。
首先,我需要导入一些必要的库,包括`random`和`tkinter`。
```python
import random
import tkinter as tk
from tkinter import filedialog
```
然后,我会创建一个`Game`类来管理整个游戏的逻辑。
```python
class Game:
def __init__(self):
self.window = tk.Tk()
self.window.title("猜数字游戏")
self.window.geometry("400x250")
self.label = tk.Label(self.window, text="请猜一个300-800之间的整数", font=("Arial", 14))
self.label.pack(pady=20)
self.input = tk.Entry(self.window, font=("Arial", 14))
self.input.pack(pady=10)
self.button = tk.Button(self.window, text="猜", font=("Arial", 14), command=self.guess)
self.button.pack(pady=10)
self.count = 0
self.number = random.randint(300, 800)
def guess(self):
self.count += 1
guess_number = int(self.input.get())
if guess_number == self.number:
self.label.config(text=f"恭喜你,猜中了!用了{self.count}次")
self.save_result()
elif guess_number > self.number:
self.label.config(text="猜大了,请再猜一次")
else:
self.label.config(text="猜小了,请再猜一次")
self.input.delete(0, "end")
def save_result(self):
filename = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text Files", "*.txt")])
with open(filename, "w") as f:
f.write(f"你用了{self.count}次猜中了数字{self.number}\n")
if self.count < 5:
f.write("你太厉害了,简直就是数学大神!\n")
elif self.count < 10:
f.write("不错,你的数学水平还可以再提高一下!\n")
else:
f.write("再接再厉,相信你一定可以更好!\n")
```
在`__init__`方法中,我创建了一个窗口,并添加了一个标签、一个文本框和一个按钮。我还定义了当前猜测的次数`count`和随机生成的数字`number`。
`guess`方法是当用户点击“猜”按钮时触发的。它首先将`count`加1,然后获取用户输入的数字并将其转换为整数。如果猜测的数字与`number`相等,那么游戏就结束了,`label`会显示恭喜信息并调用`save_result`方法保存游戏结果。否则,`label`会根据猜测的数字与`number`的大小关系给出相应的提示。
`save_result`方法会弹出文件保存对话框,让用户选择保存的文件名和位置。然后,它会将游戏结果写入文件,并根据猜测的次数给出评语。
最后,我创建一个`Game`对象并启动主循环。
```python
game = Game()
game.window.mainloop()
```
这就是完整的程序。如果您有任何问题或需要进一步的帮助,请告诉我。
阅读全文