def main(): state = ConnectFourGame.initial_state() while True: winner = ConnectFourGame.get_winner(state) if winner is not None: dump_state(state) break legal_moves = ConnectFourGame.get_moves(state)[1] result = ( MCTS(ConnectFourGame, state) .get_simulation_result(1000)) move = result.move dump_state(state, result.root.children, move) if state.current_player == 0: while True: try: move = int(input('')) assert move in legal_moves state = ConnectFourGame.apply_move(state, move) break except (AssertionError, ValueError): print(dumps({'error': 'That is not a legal move'})) else: state = ConnectFourGame.apply_move(state, move)