Il faudrait des infos supplémentaires sur ce que tu utilises (carte graphique, version SFML, OS) ; pense à mettre les pilotes de la carte graphique à jour.
Aussi, quand tu dis que ce n'est pas fluide, c'est quel genre ? La barre semble se déplacer en retard ? Au ralenti ? Ou elle se "téléporte" ?
Après avoir cherché sur le net, il apparaît que la Vsync de SFML fait parfois des siennes et qu'à priori le must c'est de passer par ta carte graphique directement (note qu'il me semble que le Vsync de Nvidia n'a d'effet que si l'application est en plein écran ; en tout cas quand je m'en suis servi, ça ne prenait effet qu'en plein écran).
Je ne sais pas non plus si ça changerait quoi que ce soit, mais mettre ta Clock dans la boucle de window.isOpen() et restart immédiatement après les évènements et avant d'appeler ta méthode. T'auras plus qu'à passer le Time en argument ; cela te permettra aussi d'avoir le même temps pour tes futures méthodes bougerBalle, tout en évitant de devoir gérer plusieurs variables Time.
Il y aurait aussi peut-être une technique un peu sale qui consisterait à forcer avec un sleep si ton image est rendue "bien trop vite" sans passer par vsync ou framelimiter.
Ca donnerait un truc du genre :
sf::Time time = clock.restart();
float temps_mort = 0.015 - time; //(1/60 de seconde)
if(temps_mort > 0)
sf::Sleep(temps_mort);
Mais je pense pas que ce soit très propre puisque le Sleep n'est pas une science exacte ; ça va dépendre du PC, de ton OS et de ce qui tourne en plus de ton appli. Après, ça va toujours soulager ton CPU un minimum.
Après, j'imagine que si c'est pour apprendre ou si c'est un jeu qui demande beaucoup d'attention de la part du joueur, c'est pas bien grave si ça bouffe du proco ; y a pas mal de jeux en 2D dans le commerce qui bouffent 100% d'un coeur quoi qu'il arrive.