def get_capture_sequence_candidates(self, player):
    '\n        Get all possible capture move sequences (not necessarily maximum ones)\n        starting from every piece owned by the specified player.\n        '
    player_squares = self.get_player_squares(player)
    attack_options = []
    for attacker in player_squares:
        attack_options.extend([(attacker, target) for target in self.get_capturable_pieces(attacker)])
    capture_sequences = []
    queue = deque()
    for (attacker, target) in attack_options:
        queue.extend([(self, CaptureMove(attacker, landing), []) for landing in self.get_available_capture_landing_positions(attacker, target)])
    while queue:
        (board_before, move, prev_moves) = queue.popleft()
        class_before = board_before.piece_class[move.start_index]
        opponent_quare = move.find_opponent_square(board_before)
        board_after = move.apply(board_before)
        board_after.owner[opponent_quare] = Player.ZOMBIE
        board_after.piece_class[move.end_index] = class_before
        next_attack_options = [(move.end_index, target) for target in board_after.get_capturable_pieces(move.end_index)]
        if (not next_attack_options):
            capture_sequences.append((prev_moves + [move]))
        for (attacker, target) in next_attack_options:
            queue.extend([(board_after, CaptureMove(attacker, landing), (prev_moves + [move])) for landing in board_after.get_available_capture_landing_positions(attacker, target)])
    return capture_sequences
Get all possible capture move sequences (not necessarily maximum ones)
starting from every piece owned by the specified player.
def get_capture_sequence_candidates(self, player):
    '\n        Get all possible capture move sequences (not necessarily maximum ones)\n        starting from every piece owned by the specified player.\n        '
    player_squares = self.get_player_squares(player)
    attack_options = []
    for attacker in player_squares:
        attack_options.extend([(attacker, target) for target in self.get_capturable_pieces(attacker)])
    capture_sequences = []
    queue = deque()
    for (attacker, target) in attack_options:
        queue.extend([(self, CaptureMove(attacker, landing), []) for landing in self.get_available_capture_landing_positions(attacker, target)])
    while queue:
        (board_before, move, prev_moves) = queue.popleft()
        class_before = board_before.piece_class[move.start_index]
        opponent_quare = move.find_opponent_square(board_before)
        board_after = move.apply(board_before)
        board_after.owner[opponent_quare] = Player.ZOMBIE
        board_after.piece_class[move.end_index] = class_before
        next_attack_options = [(move.end_index, target) for target in board_after.get_capturable_pieces(move.end_index)]
        if (not next_attack_options):
            capture_sequences.append((prev_moves + [move]))
        for (attacker, target) in next_attack_options:
            queue.extend([(board_after, CaptureMove(attacker, landing), (prev_moves + [move])) for landing in board_after.get_available_capture_landing_positions(attacker, target)])
    return capture_sequences