I'm having trouble understanding this error from my code "TypeError: string indices must be integers" due to the fact I believe that I'm already passing the integer to the code:
def col1_button_click(self, x, y):
p = self.players_lst[self.currnt_player_index]
for x in range(6,0,-1):
if self.buttons_2d_list[x][0]["text"] == self.__space:
button = self.buttons_2d_list[x][0]
button["text"] = p.get_player_symbol()
self.gboard.make_move(x, 0, p.get_player_symbol())
winner = self.gboard.check_winner() # The board will check after each move, if any player has won the game
is_full = self.gboard.is_board_full()
if winner == True:
# Show current player's symbol as Winner,
# and terminate the game
win_messge = ("Player %s is the Winner!" % p.get_player_symbol())
messagebox.showinfo("Winner Info ",win_messge)
self.mw.destroy()
exit()
if is_full == True:
messagebox.showinfo("Winner Info", "The game ended in 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 # increment index by 1
p = self.players_lst[self.currnt_player_index]
p.play()
The error is from this line, 4th one down:
if self.buttons_2d_list[x][0]["text"] == self.__space:
but from my understanding, I'm already passing integers from the range above the line instead of X, if anyone could describe where I've gone wrong, I would be very grateful :)
self.buttons_2d_list[x][0] must be a string... print it before and see whats inside
if it returns a string then you are doing:
which is wrong ...