我正在使用 tkinter 编写一个简单的游戏,并希望在最后有一个选项能够重玩游戏,但我不确定我将如何去做。我希望能够回到我定义 init 的开始。还有一种方法可以做到这一点,而不必退出它,这样我就可以在玩家继续玩的时候保存分数。
from tkinter import *
import random
class App:
def __init__(self, master):
player_dice = []
for i in range(1,6):
x = random.randint(1,6)
player_dice.append(x)
self.label = Label(master, text = x , fg = "red").grid(row =0, column =i+1)
self.label = Label(master, text = "Dice:" , fg = "red").grid(row =0, column =1)
self.hi_one = Button(master, text="one", command= lambda: say_one(player_dice)).grid(row = 1, column = 1)
self.hi_two = Button(master, text="two", command= lambda: say_two(player_dice)).grid(row = 1, column = 2)
这里是我想添加一个按钮以循环回到 init 的地方。
def num(var, die, dlist):
new_window = Toplevel(root)
if die == 1:
if guess == total:
result = Message(new_window, text = "You Win").grid(row = 1, column = 1)
else:
result = Message(new_window, text = "You Lose").grid(row = 1, column = 1)
restart = Button(new_window, text = "Play Again", command = ?????).grid(row=1, column = 2)
请您参考如下方法:
最简单的方法:
只需添加一个函数 resetBoard 即可重置您的游戏。 很明显,UI 的许多部分不需要重新设置,所以那些可以进入 __init__,其余可以进入 resetBoard(),你可以(可能)从 __init__ 中调用 resetBoard()。
正确的做法:
实现 MVC 或 MVP 模式:将数据和逻辑与 UI 分开。您的 View (UI) 应该反射(reflect)模型中的任何内容,然后重置游戏只是重置模型并触发正确事件的问题,以便更新 View (非常简单,但非常有用的模型 View XXX 模式不能只需几句话就能正确解释。)
