El problema está en el comprobarIntersecta().
Código HTML:
void comprobarIntersecta(){
sf::RectangleShape rec(sf::Vector2f(50, 50));
rec.setFillColor(sf::Color::Cyan);
if(rec.getPosition().x<400){
chocar[0] = true;
}
}
No hace lo que te he dicho. Simplemente compruebas la posición y si no pasa de 400 en el eje X, es que está chocando arriba... No tiene sentido.
Tienes dos figuras. Quieres saber POR DONDE intersecta la figura A con la B. Es por eso que el vector chocar tiene cuatro posiciones (si choca arriba, abajo, derecha o izquierda). Cuando se mueva, deberás de poner de nuevo el valor del vector a false (por que ya no estará tocando)