2

私は 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) 
4

1 に答える 1

1

最も簡単な方法:

resetBoardゲームをリセットする関数を追加するだけです。明らかに、再設定する必要のない UI のさまざまな部分があるため、それらを に移動し__init__、残りを に移動してresetBoard()、(おそらく)resetBoard()内から呼び出すことができます__init__

正しい方法:

MVC または MVP パターンを実装する: データとロジックを UI から分離します。ビュー (UI) はモデルにあるものをすべて反映する必要があります。ゲームをリセットするには、モデルをリセットして正しいイベントを発生させるだけで、ビューが更新されます (非常に単純ですが、非常に便利な model-view-XXX パターンを使用できません)。ほんの数語で適切に説明してください。)

于 2013-07-29T06:38:53.320 に答える