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 tamagoshisVoici 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.
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) :