def play_game(player1: Agent, player2: Agent) -> int: """ Agent1 plays first, agent2 plays second :param player1: an AI agent :param player2: an AI agent :returns: the winner; 1 = agent1, 2 = agent2, 0 = tie """ data = GameData() board = data.game_board while True: col = player1.get_move(data) row = board.get_next_open_row(col) board.drop_piece(row, col, 1) if board.winning_move(1, row, col): return 1 data.turn += 1 data.turn = data.turn % 2 col = player2.get_move(data) row = board.get_next_open_row(col) board.drop_piece(row, col, 2) if board.winning_move(2, row, col): return 2 if board.tie_move(): return 0
def play_game(player1: Agent, player2: Agent) -> int: """ Agent1 plays first, agent2 plays second :param player1: an AI agent :param player2: an AI agent :returns: the winner; 1 = agent1, 2 = agent2, 0 = tie """ data = GameData() board = data.game_board time_p1 = time_p2 = 0 while True: start = time.process_time() col = player1.get_move(data) time_p1 += time.process_time() - start row = board.get_next_open_row(col) if not isinstance(row, int): #TODO - shouldn't happen print("------------ Shouldn't happen: row:",row,", col:", col) board.print_board() return 0 data.last_move_row.append(row) data.last_move_col.append(col) board.drop_piece(row, col, 1) if board.winning_move(1, row, col): return 1, time_p1, time_p2 data.turn += 1 data.turn = data.turn % 2 start = time.process_time() col = player2.get_move(data) time_p2 += time.process_time() - start row = board.get_next_open_row(col) data.last_move_row.append(row) data.last_move_col.append(col) board.drop_piece(row, col, 2) if board.winning_move(2, row, col): return 2, time_p1, time_p2 if board.tie_move(): return 0, time_p1, time_p2