def run(self): """The main loop. :return: The winner. """ white_player_exceeded = self.setup_player(sys.modules[self.white_player].Player, WHITE_PLAYER) black_player_exceeded = self.setup_player(sys.modules[self.black_player].Player, BLACK_PLAYER) winner = self.handle_time_expired(white_player_exceeded, black_player_exceeded) if winner: return winner board_state = amazons_board.amazonsBoard() curr_player_idx = 0 remaining_run_times = self.remaining_times[:] k_count = 0 # Running the actual game loop. The game ends if someone is left out of moves, # or exceeds his time. while True: if self.printPref == 'y': board_state.printBoard() player = self.players[curr_player_idx] remaining_run_time = remaining_run_times[curr_player_idx] try: possible_moves = board_state.legalMoves() if not possible_moves: winner = self.make_winner_result(0 if curr_player_idx == 1 else 1) break move, run_time = utils.run_with_limited_time( player.get_move, (copy.deepcopy(board_state), possible_moves), {}, remaining_run_time*1.5) remaining_run_times[curr_player_idx] -= run_time if remaining_run_times[curr_player_idx] < 0: raise utils.ExceededTimeError except (utils.ExceededTimeError, MemoryError): print('Player {} exceeded resources.'.format(player)) winner = self.make_winner_result(0 if curr_player_idx == 1 else 1) break board_state.doMove(move) if self.printPref == 'y': print('Player ' + repr(player) + ' performed the move: ' + repr(move)) curr_player_idx = (curr_player_idx + 1) % 2 if curr_player_idx == 0: # White and black played. k_count = (k_count + 1) % self.k if k_count == 0: # K rounds completed. Resetting timers. remaining_run_times = self.remaining_times[:] self.end_game(winner) return winner
count = 0 idx = range(10) for y in idx: for x in idx: diff = black_dist_map[x][y] - white_dist_map[x][y] count += (diff > 0) - (diff < 0) return count @timed def test(state): count = 0 max_depth = 9 for i in range(0, len(state.legalMoves())): count = cell_owners(state, max_depth) print(count) state = amazons_board.amazonsBoard() '''for i in range(0, 10): state.board[2][i] = 'a' state.board[3][1] = 'a' state.board[4][1] = 'a' state.board[4][0] = 'a' state.board[3][8] = 'a' state.board[4][8] = 'a' state.board[4][9] = 'a' state.printBoard()''' test(state)