def start_until_game_over(player1: Player, player2: Player, board_renderer: BoardRenderer = None): """ 玩家 player1 和玩家 player2 在 board 上进行游戏直到游戏结束,并输出获胜者。 Player player1 and player2 play on the board until the game is over, and output the winner. :param player1: 玩家 1。 Player 1. :param player2: 玩家 2。 Player 2. :param board_renderer: 棋盘渲染器。 The board renderer. :return: <int> board 返回的获胜者。 The winner returned by board. """ board = Board() while True: # 渲染。 Render. if board_renderer is not None: board.render(board_renderer) # 执行动作。 Take action. if board.current_player == BOARD.o: player1.take_action(board, is_output_action=board_renderer is not None) else: player2.take_action(board, is_output_action=board_renderer is not None) # 游戏是否结束。 Game over? is_over, winner = board.result() if is_over: if board_renderer is not None: board.render(board_renderer) return winner
def play_web_game(is_stop, player1: Player, player2: Player, turn_to, send_board_step, send_player1_running, send_player2_running, wait_human_action, game_over): board = Board() while not is_stop(): turn_to(board.current_player) if board.current_player == BOARD.o: if isinstance(player1, Human): action = wait_human_action(1, is_stop) if is_stop(): return board.step(action) else: action = player1.take_action(board, is_output_action=False, running_output_function=send_player1_running, is_stop=is_stop) send_board_step(1, action) else: if isinstance(player2, Human): action = wait_human_action(2, is_stop) if is_stop(): return board.step(action) else: action = player2.take_action(board, is_output_action=False, running_output_function=send_player2_running, is_stop=is_stop) send_board_step(2, action) is_over, winner = board.result() if is_over: game_over(winner) return
def start_until_game_over(player1: Player, player2: Player, board_renderer: BoardRenderer = None): """ Player player1 and player2 play on the board until the game is over, and output the winner. :param player1: Player 1. :param player2: Player 2. :param board_renderer: The board renderer. :return: <int> board The winner returned by board. """ board = Board() while True: # Render. if board_renderer is not None: board.render(board_renderer) # Take action. if board.current_player == BOARD.o: player1.take_action(board, is_output_action=board_renderer is not None) else: player2.take_action(board, is_output_action=board_renderer is not None) # Game over? is_over, winner = board.result() if is_over: if board_renderer is not None: board.render(board_renderer) return winner
def start_until_game_over(player1: Player, player2: Player, board_renderer: BoardRenderer = None): """ :param player1: :param player2: :param board_renderer: :return: """ board = Board() while True: if board_renderer is not None: board.render(board_renderer) if board.current_player == BOARD.o: player1.take_action(board, is_output_action=board_renderer is not None) else: player2.take_action(board, is_output_action=board_renderer is not None) is_over, winner = board.result() if is_over: if board_renderer is not None: board.render(board_renderer) return winner