Les tamagoshis

PARTIE 1

On dit souvent que les méthodes d'une classe définissent le comportement de ses instances. Pour bien comprendre cette notion, on peut faire une analogie entre le comportement des instances et celui d'êtres vivants. Un tamagoshi va donc être un objet qui vit (perd de l'énergie) et qui doit être alimenté pour survivre (augmenter son énergie). Le but est donc ici de réaliser un petit programme qui consiste à faire interagir l'utilisateur dans le but de maintenir une colonie de tamagoshis en vie. Ceux-ci ayant des comportements basiques.





Exercice 1:

Ecrire une classe Tamagoshi, dans un package tamagoshi.tamagoshis, qui contient les variables suivantes : Des variables privées: age, maxEnergy, energy des entiers et name une chaîne de caractère. Une variable static privée lifeTime (tous les tamagoshi auront la même durée de vie) initialisée à 10. Une variable privée de type java.util.Random





Exercice 2:

Ecrire le constructeur de la classe Tamagoshi. Celui-ci prend en paramètre une chaîne de caractères, qui sera utilisée pour initialiser le nom, et initialise les variables de la nouvelle instance de la façon suivante: age à zéro, maxEnergy entre 5 et 9 et energy entre 3 et 7.



API

java.util.Random






Exercice 3:

Ecrire une méthode de signature public boolean parle() qui écrit sur la sortie standard le nom du tamagoshi et son état de forme: heureux, si la variable correspondant à l'énergie est supérieure à 4, ou affamé dans le cas contraire. Si le tamagoshi est heureux la méthode renvoie vrai, faux dans le cas contraire.





Exercice 4:

Ecrire une méthode de signature public boolean mange() qui, si la variable energie est inférieure à maxEnergie, augmente la valeur de energie d'une valeur entière comprise entre 1 et 3 et affiche un message de satisfaction du tamagoshi. Dans le cas contraire le tamagoshi doit montrer son mécontentement : il n'a pas faim !. Si le tamagoshi est satisfait la méthode renvoie vrai, faux sinon.





Exercice 5:

Ecrire une méthode de signature public boolean consommeEnergie() qui fonctionne de la manière suivante :
1. réduit l'énergie de 1 unité.
2. si energie <= 0 : affiche un message de fin sur la sortie standard ("je suis KO") et retourne faux, vrai sinon.





Exercice 6:

Compiler et tester la classe ainsi produite en rajoutant une fonction main dedans. N'oubliez pas d'implémenter une méthode de signature public String toString(). celle-ci vous permettra de déboguer votre programme.

PARTIE 2

Le but de cette partie est d'encapsuler dans une classe les fonctionnalités correspondant à la mise en place d'un jeu basé sur le déroulement de la vie des tamagoshis.
Le principe est le suivant. On va mettre en place une boucle qui va correspondre à un tour de jeu. À chaque tour,

- les tamagoshis parleront
- puis l'utilisateur pourra leur donner à manger
- puis les tamagoshis consommeront de l'énergie et vieillirons.
- puis les tamagoshis ayant une énergie inférieure ou égale à zéro ou ayant rejoint leur âge limite sont retirés.
- fin du tour de jeu.

Le nombre de tamagoshis initial ainsi que leurs noms seront entrés par l'utilisateur à l'initialisation du jeu. Le nombre de tamagoshis correspond au niveau de difficulté du jeu. Le score obtenu à la fin du jeu par un joueur correspond au pourcentage de la somme de l'âge des tamagoshis par rapport à la somme de leur durée de vie. Le jeu s'arrête lorsque les tamagoshis sont tous morts ou arrivés à leur âge limite.





Exercice 7:

Ecrire une nouvelle classe TamaGame dans un nouveau package tamagoshi.jeu.





Exercice 8:

Cette classe doit gérer une liste de tamagoshis (ou deux listes suivant la gestion que vous ferez). il sera en effet beaucoup plus simple de gérer deux listes : une qui contient l'ensemble des tamagoshis de départ, et une qui contient les tamagoshi encore en course. Ecrire le constructeur de la classe TamaGame.





Exercice 9:

Ecrire une méthode initialisation qui permet de faire saisir par l'utilisateur les différents paramètres du jeu, de créer les tamagoshis et ainsi de remplir la (les) liste(s). Nota bene : pour récupérer ce que saisit l'utilisateur au clavier, vous utiliserez la classe suivante qui permet de récupérer la saisie de l'utilisateur sous la forme d'une chaîne de caractères :

package tamagoshi.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Utilisateur {

  public static String saisieClavier(){

    /*il faut gérer les exceptions car l'entrée standard 
    peut ne pas être disponible : le constructeur de la 
    classe InputStreamReader peut renvoyer une exception.*/
    try
      BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
      return clavier.readLine();
    }
    catch(IOException e){
      e.printStackTrace();
      System.exit(0);
      return null;
    }
  }
  
  // une méthode main juste pour tester 
  public static void main(String[] args) {
    String saisie = Utilisateur.saisieClavier();
    System.out.println("la saisie est : "+saisie);
  }
}




Exercice 10:

Ecrire une méthode play qui correspond à la boucle du jeu : cette méthode se termine lorsque le jeu est fini. (cf. l'exemple d'exécution)





Exercice 11:

Ecrire une méthode score qui calcule le score en fonction de l'état courant du jeu (cette méthode renvoie en entier).





Exercice 12:

Ecrire une méthode resultat qui sera utilisée pour afficher le score de l'utilisateur sur la sortie standard, ainsi que diverses informations relatives à la partie.





Exercice 13:

finalement, votre méthode main doit être similaire à celle qui suit :

  public static void main(String[] args) {
    TamaGame jeu = new TamaGame();
    jeu.play();
  }

Exemple d'exécution :

Entrez le nombre de tamagoshis désiré : 

Entrez le nom du tamagoshi numéro 0 :  

Pierre 

Entrez le nom du tamagoshi numéro 1 :  

Paul 

Entrez le nom du tamagoshi numéro 2 :  

Jacques 

 

------------Cycle n°1------------- 

 

        Pierre : "je suis affamé !"

 

        Paul : "tout va bien !"

 

        Jacques : "tout va bien !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

------------Cycle n°2------------- 

 

        Pierre : "tout va bien !"

 

        Paul : "tout va bien !"

 

        Jacques : "tout va bien !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

------------Cycle n°3------------- 

 

        Pierre : "tout va bien !"

 

        Paul : "tout va bien !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 2

 

        Jacques : "Miam c'est bon !"

 

------------Cycle n°4------------- 

 

        Pierre : "tout va bien !"

 

        Paul : "je suis affamé !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 1

 

        Paul : "Miam c'est bon !"

 

------------Cycle n°5------------- 

 

        Pierre : "je suis affamé !"

 

        Paul : "tout va bien !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

------------Cycle n°6------------- 

 

        Pierre : "je suis affamé !"

 

        Paul : "je suis affamé !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 2

 

        Jacques : "Miam c'est bon !"

 

------------Cycle n°7------------- 

 

        Pierre : "je suis affamé !"

 

        Paul : "je suis affamé !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

------------Cycle n°8------------- 

 

        Pierre : "je suis affamé !"

 

        Paul : "je suis affamé !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 1

 

        Paul : "Miam c'est bon !"

 

------------Cycle n°9------------- 

 

        Pierre : "je suis affamé !"

 

        Paul : "je suis affamé !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

        Jacques : "je suis KO: Arrrggh !"

 

------------Cycle n°10------------- 

 

        Pierre : "je suis affamé !"

 

        Paul : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul  

        entrez un choix : 1

 

        Paul : "Miam c'est bon !"

 

--------- fin de partie !! ---------------- 

 

 

-------------bilan------------ 

Pierre a survécu et vous remercie :) 

Paul a survécu et vous remercie :) 

Jacques n'est pas arrivé au bout et ne vous félicite pas :( 

 

score obtenu :93.0% 

 





Exercice 14:

Factoriser le plus possible votre code : éviter d'avoir des lignes de code qui se ressemblent trop. pour cela, n'hésitez pas à créer des méthodes auxiliaires.

PARTIE 3





Exercice 15:

Modifier le code de chaque classe pour définir un nouveau comportement : on peut en effet modifier le jeu de sorte que les tamagoshis aient un besoin vital que l'on joue avec eux, sans quoi ils dépérissent d'ennui. Il suffit pour cela de rajouter une variable fun dans la classe Tamagoshi qui fonctionnera sur le même principe que la variable energy.

Faites en sorte que, à chaque cycle du jeu, on puisse nourrir et jouer avec un tamagoshi. 

 

Exemple d'exécution

 

Entrez le nombre de tamagoshis désiré : 

Entrez le nom du tamagoshi numéro 0 :  

Pierre 

Entrez le nom du tamagoshi numéro 1 :  

Paul 

Entrez le nom du tamagoshi numéro 2 :  

Jacques 

 

------------Cycle n°1------------- 

 

        Pierre : "Tout va bien !"

 

        Paul : "Tout va bien !"

 

        Jacques : "Tout va bien !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "laisse-moi tranquille, je bouquine !!"

 

------------Cycle n°2------------- 

 

        Pierre : "je m'ennuie à mourrir !"

 

        Paul : "je suis affamé !"

 

        Jacques : "Tout va bien !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 1

 

        Paul : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "On se marre !"

 

------------Cycle n°3------------- 

 

        Pierre : "Tout va bien !"

 

        Paul : "Tout va bien !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 2

 

        Jacques : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 2

 

        Jacques : "On se marre !"

 

------------Cycle n°4------------- 

 

        Pierre : "je suis affamé !"

 

        Paul : "je m'ennuie à mourrir !"

 

        Jacques : "Tout va bien !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 1

 

        Paul : "On se marre !"

 

------------Cycle n°5------------- 

 

        Pierre : "je suis affamé et je m'ennuie à mourrir !"

 

        Paul : "je suis affamé !"

 

        Jacques : "je suis affamé et je m'ennuie à mourrir !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 1

 

        Paul : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 2

 

        Jacques : "On se marre !"

 

------------Cycle n°6------------- 

 

        Pierre : "je suis affamé et je m'ennuie à mourrir !"

 

        Paul : "Tout va bien !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 2

 

        Jacques : "On se marre !"

 

------------Cycle n°7------------- 

 

        Pierre : "je suis affamé et je m'ennuie à mourrir !"

 

        Paul : "je m'ennuie à mourrir !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 0

 

        Pierre : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 1

 

        Paul : "On se marre !"

 

------------Cycle n°8------------- 

 

        Pierre : "je m'ennuie à mourrir !"

 

        Paul : "je suis affamé !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 2

 

        Jacques : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Pierre          (1) Paul          (2) Jacques  

        entrez un choix : 2

 

        Jacques : "On se marre !"

 

        Pierre : "snif : je fais une dépression, ciao!"

 

------------Cycle n°9------------- 

 

        Paul : "je suis affamé et je m'ennuie à mourrir !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Paul          (1) Jacques  

        entrez un choix : 0

 

        Paul : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Paul          (1) Jacques  

        entrez un choix : 0

 

        Paul : "On se marre !"

 

------------Cycle n°10------------- 

 

        Paul : "je m'ennuie à mourrir !"

 

        Jacques : "je suis affamé !"

 

        Nourrir quel tamagoshi ?

        (0) Paul          (1) Jacques  

        entrez un choix : 1

 

        Jacques : "Miam c'est bon !"

 

        Jouer avec quel tamagoshi ?

        (0) Paul          (1) Jacques  

        entrez un choix : 0

 

        Paul : "On se marre !"

 

        --------- fin de partie !! ----------------

 

 

-------------bilan------------ 

Pierre n'est pas arrivé au bout et ne vous félicite pas :( 

Paul a survécu et vous remercie :) 

Jacques a survécu et vous remercie :) 

 

score obtenu :90.0%