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