def run(self): players = dict() symbol_list = list() for i in range(PLAYER_SIZE): player = Player(i + 1) player_name = player.get_name() symbol = Symbol(i, player_name, symbol_list) print('Hello {0}, your symbol is "{1}"'.format( player_name, symbol.get_symbol())) players[symbol] = player total_blocks = self.board.get_total_blocks() board = self.board.get_board() keep_filling = True winner = None index = 0 keep_playing = True while keep_playing: for symbol, player in players.items(): turn = symbol.get_symbol() move = self.get_player_move(player, turn) board[move] = turn self.move_history.append({ 'player': player, 'move': move }) # saving players moves in history self.board.draw_board( board) # draw board to display player move winner = self.board.check_winner( turn, player) # get the winner player object index += 1 if index >= total_blocks or winner: keep_playing = False if winner: print('{0} ({1}) have won the game.'.format( player.name, turn)) break if not winner: print('The game is draw.')