2013-07-29 16 views
2

나는 tkinter를 사용하여 간단한 게임을 프로그래밍하고 게임을 다시 플레이 할 수있는 옵션을 원하지만, 어떻게해야 할 지 잘 모르겠습니다. 나는 init을 정의하는 처음으로 돌아갈 수 있기를 원합니다. 또한 내가 이것을 할 수있는 방법이 있으며 그것을 끝내지 않아도되므로 플레이어가 계속 연주하면서 점수를 저장할 수 있습니다.tkinter에서 프로그램을 재시작하는 방법

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) 

여기서 내가 초기화 버튼을 루프에 추가하고 싶습니다.

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) 

답변

1

가장 쉬운 방법 :

그냥 게임을 재설정하는 기능 resetBoard를 추가합니다. 분명히 UI의 여러 부분이 다시 설정 될 필요가 없으므로이 부분은 __init__에 들어가고 나머지는 resetBoard()에 들어가고 __init__에서 resetBoard() (아마도) 전화 할 수 있습니다.

올바른 방법 :

는 MVC 또는 MVP 패턴을 구현 : 당신의 UI에서 데이터와 로직을 분리합니다. 보기 (UI)는 모델에있는 모든 것을 반영해야합니다. 그런 다음 게임을 다시 설정하면 모델을 다시 설정하고 올바른 이벤트를 실행하여보기가 업데이트되므로 매우 단순하지만 매우 유용한 model-view-XXX 패턴은 정확히 몇 마디로 설명해야합니다.)

+0

고마워요. 나는 초보자이므로 가장 쉬운 방법을 먼저 시도 할 것입니다. 나는 __init__을 resetboard (self)로 정의 된 함수에 넣고 self.restboard()라고 불렀지 만 AttributeError : 'App'객체에 'reset_board'속성이 없다. –

관련 문제