2017-01-16 13 views
0

私は4つのボードゲームを接続するためのGUIコードを作成しようとしていますが、エラーを修正する方法がわかりません。誰も助けることができますか?エラー: はTypeError:のinit(1つの)必要な位置引数不足している: 'buttns_list'必要なポジション引数ボードゲームがありません

コード:

def __init__(self): 


    self.mw = tkinter.Tk() 
    self.mw.title = ("Connect Four") 

    self.rows = 6 
    self.cols = 7 
    self.buttons_2d_list = [] 
    for i in range (self.rows): 
     self.rows = ['']*self.cols 
     self.buttons_2d_list.append(self.rows) 

    self.gboard = ConnectFourBoard() 
    p1 = HumanPlayer("X") 
    p2 = ComputerPlayer("O", self.buttns_list) 

    self.players_1st = (p1, p2) 
    self.currnt_player_index = 0 
    self.winner = False 

def clicked_btn(self, x, y): 

    p = self.players_1st[self.currnt_player_index] 

    button = self.buttons_2d_list[x][y] 
    if button["text"] == "": 
     button["text"] = p.get_player_symbol() 

     self.gboard.MakeMove(x, y, p.get_player_symbol()) 

     winner = self.gboard.CheckForWin() 

     is_full = self.gboard.FullBoard() 

     if winner == True: 

      win_message = ("Player %s is the winner!" %p.get_player_symbol()) 
      messagebox.showinfo("Winner Info", win_messge) 
      self.mw.destroy() 
      exit() 

     elif is_full == True: 
      messagebox.showinfo("Winner Info", "The game is a draw") 
      self.mw.destroy() 
      exit() 
     else: 
      pass 

     if self.currnt_player_index == 1: 
      self.currnt_player_index = 0 
     else: 
      self.currnt_player_index += 1 

     p = self.players_1st[self.currnt_player_index] 
     p.play() 



import random 

がクラスComputerPlayer(プレイヤー):

def __init__(self, letter, buttns_list): 
    Player.__init__(self, letter) 
    self.buttons_2d_list = buttns_list 

def play(self): 
    pass 

答えて

1

それが明確ではないのですが私はコードの残りの部分から正確にあなたがここに渡す必要がありますが、あなたのはあなたが持っている手紙とあなたがしていないbuttns_listを求めています:

def __init__(self, letter, buttns_list): 

ので、エラーは、この行から来ている:

p2 = ComputerPlayer("O")

次のいずれかのごComputerPlayerクラスは、それを必要とする場合

1)buttns_list渡し

p2 = ComputerPlayer("O", self.buttons_2d_list)` # in GameGUI init 

2 )これが誤って追加された場合は削除してください:

class ComputerPlayer(Player): 

    def __init__(self, letter): 
     Player.__init__(self, letter) 
+0

しかし私は、このエラーが立ち上がっComputerPlayerにself.buttns_listを追加しました:はAttributeError:「GameGUI」オブジェクトが属性「buttns_list」 を持っていない私は私のボードゲーム – sarb

+0

@sarb用ボードとボタンを作成しようとしています現在のコードをリフレッシュして、 'GamerGUI'の間に' self.buttns_list'を渡すように聞こえるかもしれませんが、 'self'はその時点で' GamerGUI'を参照していますので、 'GamerGUI.buttns_list'存在しないもの –

+0

現在のコードを更新しましたが、どうすればいいですか? – sarb

関連する問題