TP Programmation par objets - Java, Licence Informatique, Sept-Déc 2002, Université de Montpellier II
Enseignant
resp : Jacques Ferber,
TP 5 : Morpion et Tamagoshi
1 Le jeu du Morpion
Exercice 1:
Ajouter à la classe Morpion (vue à l'exercice 1 du TD5) une fonction main
de sorte que l'exécution du programme permette de jouer effectivement au jeu du
Morpion.
A chaque tour, le
programme doit afficher la grille suivie du texte ci-dessous, pour demander le
prochain coup à jouer:
Au tour du joueur O : position (lc)
>_
Après un coup gagnant, le programme s'arrête.
2 Les tamagoshis
On dit souvent que les méthodes
d'instance définissent le comportement des objets d'une classe. 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 en vie une petite colonie de
tamagoshis ayant un comportement basique.
Exercice 2:
Ecrire une classe Tamagoshi qui contient les attributs suivants : age,
lifeTime, maxEnergie, energie de type entier et name
de type String.
Le constructeur prend comme paramètre une chaîne pour le nom du tamagoshi et
initialise les autres attributs ainsi: age à zéro, et de façon aléatoire:
lifeTime entre 9 et 14, maxEnergie entre 5 et 9 et energie entre
3 et 7.
Exercice 3:
Ecrire une méthode de signature public void parler() qui écrit à l'écran
le nom du tamagoshi et son état de forme: "heureux", si la variable energie
est supérieure à 5, ou "affamé" dans le cas contraire.
Exercice 4:
Ecrire une méthode de signature public void manger() qui augmente d'une
valeur aléatoire, comprise entre 1 et 3, la valeur de l'attribut energie
et affiche ensuite à l'écran un message de satisfaction. Si energie est
déjà à son niveau maximum (maxEnergie) alors le tamagoshi n'a pas faim
et un message doit montrer son mécontentement.
Exercice 5:
Ecrire une méthode de signature public boolean ageLimite() qui permet de
tester si le tamagoshi a atteint son age limite.
Exercice 6:
Ecrire une méthode de signature public boolean vivre() qui fonctionne
suivant trois cas :
1. ne fait rien et retourne true si les valeurs age et lifeTime sont
égales.
2. si energie <= 0: affiche un message de fin ("je meurs")
et retourne false.
3. si energie > 0: augmente age, réduit energie, puis,
si le tamagoshi a rejoint son âge limite, affiche un message de satisfaction ou
dans le cas contraire fait simplement parler le tamagoshi (return true).
Exercice 7:
Ecrire un programme (fonction main) qui crée n tamagoshis, la valeur n étant
fournie en paramètre d'appel du programme.
Le programme exécute en boucle les actions suivantes :
-la méthode vivre() est appliquée sur tous les tamagoshis.
-l'utilisateur a la possibilité de choisir le tamagoshi qu'il souhaite nourrir
pour ce cycle.
On sort de la boucle uniquement dans
les deux conditions suivantes:
- Gagné : tous les tamagoshis ont rejoint leur âge limite.
- Perdu : un tamagoshi est mort de faim.
Exemples d'exécution
>
java Tamagoshi 3 Quel nom pour le nouveau tamagoshi : Pierre Quel nom pour le nouveau tamagoshi : Paul Quel nom pour le nouveau tamagoshi : Jacques -------Cycle n° 1 ------- (0) Pierre (1) Paul (2) Jacques Paul : je n'ai pas faim !! -------Cycle n° 2 ------- (0) Pierre (1) Paul (2) Jacques Pierre : Merci ! |
-------Cycle n° 3 ------- (0) Pierre (1) Paul (2) Jacques Paul : Merci ! -------Cycle n° 4 ------- (0) Pierre (2) Jacques Jacques : Merci ! -------Cycle n° 5 ------- Pierre : je meurs... Arrrggh ! PERDU !! |
Exercices facultatifs :
Exercice 8:
Changer le programme principal de façon à pouvoir nourrir 2 tamagoshis dans un
seul cycle.
Exercice 9: Ecrire de nouvelles méthodes de façon à donner un nouveau
comportement aux tamagoshis. Par exemple, on peut imaginer que les tamagoshis
ont un besoin vital qu'on joue avec eux, sans quoi ils dépérissent d'ennui.
Exercice 10: Modifier la fonction main de façon à pouvoir préciser au
démarrage le nombre de repas et de jeux par cycle.
Site des infos concernant le module de programmation par objets en licence:
http://www.lirmm.fr/~ferber/Licence