Rapidement, je vait répondre à 2 de tes questions (plutôt des améliorations).
La première est sur l'histoire du sleep(12), plutôt que de faire un sleep avec une valeur fixe, tu peux utiliser la valeur de la date courante, c'est à dire mettre comme variable de classe la dernière date à laquelle tu as fais un update et vérifier à chaque update combien de temps tu as passé entre les 2, ensuite, si le temps n'est pas correct, tu ne fais rien (plutôt que de faire un sleep).
En gros, cela te donne un algo de ce style au début de l'update :
Date currentDate = new Date();
if (currentDate.getTime() >= (oldDate.getTime() + 12))
{
oldDate = currentDate;
// TON TRAITEMENT
}
Cette méthode (pas encore parfaitement optimisée te permet de ne pas bloquer ton application (via un sleep) mais juste ton traitement d'update (tes handlers par exemple ou ton affichage fonctionneront toujours, c'est juste que tes déplacements seront constants).
Sur le système de pause, tu peux utiliser la même méthode, c'est à dire de faire un test sur le boolean de pause, cela te donneras un algo de ce style :
if ( (currentDate.getTime() >= (oldDate.getTime() + 12)) || !pause )
Bon, bien sûr mes algos sont écrit en Java (pas en algo pur) et mes solutions ne sont pas spécialement optimale mais devrait te permettre de nouvelles choses.
Un dernier petit point, peut être augmenter la vitesse si cela fait un moment que ta raquette bouge (comme la souris par exemple qui va plus vite au fur et à mesure du déplacement), pour ça, tu peux penser à garder la position de départ de ta raquette et en fonction de cette position de départ et de la position actuelle, faire des déplacements plus ou moins importants, ca devrait rendre assez moche dans le code mais assez fonctionnel si tu veux ajouter cette fonctionnalité