Préambule
L'objectif de ce premier cours est de voir comment créer les bases d'un jeu en javafx où un élément bouge en fonction des interactions de l'utilisateur. En l’occurrence, il s'agit d'une simple balle qui rebondit sur les murs délimitant la fenêtre de visualisation.
La conception des classes doit suivre le paradigme MVC, ce qui nécessite d'analyser correctement les besoins applicatifs et d'en déduire les attributs et méthodes de chaque classe. Cependant, compte tenu du fait que l'on utilise javafx, il y a une structure générale à suivre qui est commune à tout jeu et dont il faut tenir compte pour créer les classes des éléments du jeu. A noter que cette structure générale est celle qui est utilisée dans gamifier, mais de façon plus poussée afin de tenir compte des nombreuses caractéristiques possibles des jeux (niveaux, animations, ...).
Pour suivre correctement ce cours, il est conseillé d'ouvrir en parallèle les sources, dont l'archive est téléchargeable ici.
baballe-src.tgz
1. Les besoins
- La taille de la fenêtre de l'application doit être paramétrable.
- Des rectangles opaques, représentant des murs, doivent être placés sur les bords de la fenêtre.
- Une balle, représentée par un disque d'une couleur à déterminer, avec au centre un plus petit disque d'une autre couleur, doit être placée dans la fenêtre au démarrage de l'application.
Interactions de l'utilisateur
- Lorsque l'utilisateur appuie sur les flèches du clavier, la balle soit se déplacer dans la direction indiquée par la flèche.
- Il n'y a pas besoin de rester appuyé pour que la balle continue de se déplacer (= mouvement à inertie)
- Lorsque l'utilisateur appuie sur la touche H (comme hit), la direction de la balle (en degré) est tirée aléatoirement entre 0 et 360. Elle conserve la vitesse qu'elle avait.
- Lorsque l'utilisateur appuie sur la touche U (comme up) ou D (comme down), la vitesse de la balle est respectivement augmentée ou diminuée.
- Lorsque l'utilisateur appuie sur la touche espace, la balle s'arrête à sa position actuelle.
- Lorsque l'utilisateur appuie sur la touche backspace, et que la balle est déjà arrêtée, elle est déplacée à sa prochaine position compte tenu de sa vitesse (= mode debug).
- Lorsque l'utilisateur appuie sur la touche S, la balle reprend son mouvement continu avec sa direction et vitesse courante.
Comportement de la balle
- Lorsque le balle entre en collision avec un mur, elle rebondit selon les lois physiques des chocs élastiques sans frottement, c.a.d comme un rayon lumineux sur une surface.
- Juste après le choc, la balle doit changer de couleur pendant environ 1/10s.