TD Programmation par objets - Java, Licence Informatique, Sept-Déc 2002, Université de Montpellier II

Enseignant resp : Jacques Ferber,ferber@lirmm.fr

 

TD 10- Les figures animées

 

    Description générale

On désire écrire un programme permettant d’animer des figures quelconques à l’écran. Pour cela on décide d’écrire une classe Figure et une classe Monde qui gère l’ensemble des figures et les anime.

Une figure est décrite par sa position (un point) et éventuellement une chaîne de caractère qui représente son « nom ».

Le monde contient un ensemble de figures. Il est décrit par sa largeur et sa hauteur. De plus il est supposé être torique. C’est à dire qu’une figure qui disparaît par la droite, réapparaît par la gauche.

Le monde anime les figures (methode animerFigures()). Pour cela il demande à chaque figures a tour de rôle de s’animer en lui envoyant le message animeToi(). Puis il fait une pause de 100ms (instruction Thread.sleep(100)).

Il existe plusieurs types de figures. Les figures mobiles qui peuvent avancer et les figures fixes qui ne bougent pas :

Les figures mobiles sont caractérisées par :

·        leur direction (a priori un point qui décrit seulement l’une des quatre directions cardinales (haut, gauche, bas, droite). Ex :(-1,0) décrit la direction gauche, (0,1) décrit la direction vers le haut.

·        leur vitesse, un entier de 0 à 5.

On doit pouvoir aussi connaître la distance parcourue par les figures mobiles.

Une figure mobile peut détecter une collision (méthode enCollision()) si la figure courante entre en collision avec une autre figure.

L’animation par défaut d’une figure mobile consiste à avancer (méthode avancer()) à sa vitesse et direction courante si elle n’entre pas en collision avec une autre figure.

 

Question 1 : faire le diagramme de classe UML correspondant à cet exemple.

Question 2 : En déduire l’ensemble des classes nécessaires

Question 3 : Ecrire le code des méthodes distance(), animeToi(), avancer(),aux bons niveaux de la hiérarchie.

Question 4 : Ecrire le code de la méthode enCollision(). Attention : il faudra peut être ajouter d’autres méthodes dans différentes classe pour implémenter cette méthode ! !