Esempio n. 1
0
def possibleJumps(position, board):
    jumps = []
    piece = board[position]
    validMoves = piece.validMoves(position)
    canJumpOver = lambda move: squareIsOccupied(move, board) and not areSameColor(piece, board[move])
    occupiedEnemySquares = list(filter(canJumpOver, validMoves))
    for middlePosition in occupiedEnemySquares:
        jumpPosition = piece.getJumpPosition(position, middlePosition)
        if not (Engine.isOnEdge(middlePosition) or squareIsOccupied(jumpPosition, board)):
            newBoard = jumpOver(position, middlePosition, board)
            nextJumps = possibleJumps(jumpPosition, newBoard)
            # If there are no next jumps
            if not nextJumps:
                # Add this jump to the list
                jumps.append(newBoard)
            else:
                # Add  the next jumps to the list
                jumps += nextJumps

    return jumps