Vous avez terminé le TP "Champagne !" ?. Très bien ! Vous savez maintenant ( presque ) tout sur la POO...
Vous avez encore du temps ? Ok, voici deux autres projets possibles...
Des balles colorées jaillissent du bas de la fenêtre avec une vitesse plus ou moins grande, décrivent ensuite une trajectoire parabolique avant de retomber au sol.
Sans entrer dans les explications, la grosse différence est que la composante verticale de la vitesse vy
doit évoluer au cours du temps, selon l'équation : vy = vy + 10*dt
, où dt
représente la durée entre deux positions successives d'une balle.
On peut prendre dt égale à la durée entre deux frames de la boucle d'animation; cette valeur est par défaut de 60 ms ( 60e-3
s ).
N'hésitez pas cependant à modifier ce paramètre pour rendre l'animation plus fluide.
La composante horizontale vx
ne change elle jamais ( pour les personnes concernées, vous verrez en SPC pourquoi, et aussi d'où sort le "10"...).
Compléter le code ci-dessous pour réaliser cette animation :
Et un p'tit dernier pour la route : les classiques balles rebondissantes. Adaptez le code précédent pour créer cette animation :
Compléter le script ci-dessous pour réaliser cette animation.
Quelques conseils pour la gestion des rebonds
Un premier conseil : confiez la gestion des rebonds à une autre méthode ( testRebond()
par exemple... ) de la classe Balle
, méthode que vous appellerez à la suite des deux autres dans la boucle d'animation anim()
.
Cette méthode gérera aussi le cas où il faut réinitialiser les attributs de la balle ( lorsqu'elle sort sur les côtés de l'écran ).
Un rebond doit être déclenché au moment où une balle atteint le bas de la fenêtre; à ce moment les balles se déplaçant horizontalement de manière uniforme, c'est donc uniquement la valeur de vy
qu'il
faudra réinitialiser ( vx
elle ne change pas...).
Cette modification devra "inverser" le sens de déplacement, mais aussi tenir compte de l'amortissement; pour cela, vous pouvez simplement multiplier à ce moment la valeur de la vitesse verticale vy
de la balle lors de son "impact" au "sol" par un coefficient inférieur à 1 ( plus ce coefficient sera petit, plus le rebond sera "mou".).