2017-01-02 7 views
0

このエラーが発生します。私はそれが何であるか分からない。私は初心者のプログラマーです。リストの索引が範囲外です。ConnectFour

ConnectFourBoard.py", line 58, in show_board_dynamic print(self.__board[i][j], end = ""), IndexError: list index out of range

マイコード:

class ConnectFourBoard: 
    def __init__(self, cols = 7, rows = 6, requiredToWin = 4): 
     global __board 
     self.__space = '' 
     self.__board = [] 
     self.cols = cols 
     self.rows = rows 
     self.Win = requiredToWin 
     self.__board = [[''] * rows for i in range(cols)] 

     for i in range(cols): 
      row = ['']*cols 
      self.__board.append(row) 

    def MakeMove(self, row, col, element): 
     global __board 
     self.__board[row][col] = element 

    def CheckForWin(self): 
     return winner 

    def CheckHz(): 
     for x in range (6): 
      for y in range (7): 
       row += board[x][y] 
       print("%s" %row) 
       row = "" 
       if "XXXX" in row: 
        print("Winner is X") 
        break; 

    def CheckVt(): 
     for y in range(7): 
      for x in range(6): 
       column += board[y][x] 
       print("%s" %column) 
       column = "" 
       if "XXXX" in column: 
        print ("Winner is X") 
        break; 




    def FullBoard(self): 
     return True 

    def FreeSpace(self, row, col): 
     return True 

    def show_board_dynamic(self): 
     print() 
     print("-------") 
     for i in range(len(self.__board)): 
      for j in range(len(self.__board)): 
       print("|", end = "") 
       print(self.__board[i][j], end = ""), 
      print("|") 
      print("-------") 
     print() 
+0

範囲(COLS)に私のために 'これを削除してくださいhttp://pythontutor.com –

+0

をチェックアウト:あなた' __init __(から 行= [ ''] * colsの 自己.__ board.append(行) ') '、すなわちその最後の行。 –

答えて

0

あなたは、行と列のために異なる番号を持っていますが、それらの両方のためのlen(self.__board)の上にあなたを繰り返します。

変更:

for i in range(len(self.__board)): 
     for j in range(len(self.__board)): 
      print("|", end = "") 
      print(self.__board[i][j], end = ""), 
     print("|") 
     print("-------") 

へ:

for col in self.__board: 
     for val in col: 
      print("|", end = "") 
      print(val, end = ""), 
     print("|") 
     print("-------") 
+0

ありがとうございます!しかし、私はちょうど6が必要なときに私はあまりにも多くの行で終わった、あなたはなぜ知っていますか? – Meg

0

あなたはどちらかのはず

  1. 変更ボード二乗に行=のCOLSようにします。
  2. 行と列のデフォルトパラメータをそれぞれ6と7から削除します。
  3. 6行と7つのcolsの

のための打ちプログラム全体で同期rowsとcolsを持っていないのこのエラーを修正するには多くの方法があります。

 for i in range(len(self.__board)): 
      for j in range(len(self.__board[0])): 

この行はこれに固定する必要があります。

+0

実行時に行が多すぎるという問題を修正しますか? – Meg

+0

デフshow_board_dynamic(自己):自己中COLため プリント() プリント( "-------") .__ボード:COLヴァルため : プリント( "|"、終了= "") print(val、end = "")、 print( "|") print( "------") – Meg

+0

私はこの行をこれに変更しましたので、次に何をするのかわかりません – Meg

関連する問題