Tamagoshis 2
Version graphique

PARTIE 1: une GUI pour les tamagoshis

Dans ce TP, nous allons créer une interface graphique pour le jeu des tamagoshis
Voici ce que l'on veut obtenir (ou quelque chose de similaire):

Utilisez le fichier jar suivant : tamagoshiExemple.jar. Faites "java -jar tamagoshiExemple.jar" dans un terminal.



Exercice 1:

Créez tout d'abord un nouveau package tamagoshi.graphic. Dans ce package, vous allez créer deux classes TamaFrame et TamaJPanel sur le même principe que Toto et TotoJPanel.
Cependant, ces deux classes sont un peu plus complexes. Vous avez carte blanche pour définir le graphisme d'un tamagoshi, mais vous devez obtenir quelque chose de similaire à l'exemple suivant en ce qui concerne les fonctionnalités (bouttons):






Exercice 2:

Faites en sorte que les boutons déclenchent les bonnes fonctions chez les tamagoshis.
Pour cela, il vous faudra utiliser des références croisées entre les objets : il vous sera nécessaire que la classe Tamagoshi soit reliée à son panel d'affichage, de manière à pouvoir faire parler le tamagoshi dans la bulle.
Tester



Exercice 3:

Dans le package tamagoshi.jeu, faites une nouvelle version du jeu dans une classe appelée TamaGameGraphic (héritant de la classe Application), qui lance des versions graphiques des tamagoshis. De plus, la saisie utilisateur devra être réalisée grâce à un composant graphique.

API

javafx.application.Application

javafx.scene.control.Dialog



Attention, le jeu ne se déroule plus à l'aide d'une boucle mais évolue au fur et à mesure des interactions de l'utilisateur : la classe TamaGameGraphic doit être découpée en plusieurs méthodes. Ces méthodes seront invoquées au bon moment en fonction des boutons utilisés.
Une solution peut consister à désactiver le bouton des différents tamagoshis une fois le choix de l'utilisateur effectué (il ne faut pas pouvoir nourrir deux tamagoshis dans un seul cycle). Une fois que tous les boutons sont désactivés, cela veut dire qu'il faut commencer un nouveau cycle.
Ainsi, modulo certains de vos choix, vous devriez obtenir une architecture similaire à celle-ci (à adapter en JavaFX) :