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

Enseignant resp : Jacques Ferber,ferber@lirmm.fr

 

TP 4: Le Pendu

 

1 Dessiner le Pendu

Voici l'avancement du dessin du pendu en fonction du nombre d'erreurs du joueur :

Voici le tableau de caractères tabPendu représentant le dessin complet du pendu :

tabPendu

tabLimite (exercice 1)

NB: - Le caractère \ s'écrit : '\\'
    - Les cases vides contiennent le caractère espace (' ').

 

Exercice 1: Etablir les valeurs du tableau d'entiers tabLimite, de dimension 6x6, vérifiant : tabLimite(i,j) = n ssi le caractère tabPendu(i,j) apparaît pour la première fois au nombre d'erreurs n (par exemple on a: tabLimite(3,4) = 7 , c'est le corps du pendu).

 

Exercice 2:  Ecrire la classe Pendu , qui doit contenir :

  - les constantes (déclarées 'final static') : tabPendu et tabLimite. Ces deux tableaux doivent naturellement être initialisés au moment de leurs déclarations, on utilisera pour cela les valeurs données dans l'énoncé pour tabPendu et les valeurs établies à l'exercice 1 pour tabLimite.

  - la variable d'instance : nbErreur. Cette variable contiendra le nombre d'erreurs commis par le joueur.

  - les méthodes : incrementErreur() et aPerdu(). La méthode incrementErreur() permettra d'incrémenter le nombre d'erreurs et la méthode aPerdu() doit retourner la valeur true si le joueur a perdu.

  - un constructeur : sans argument, qui initialise simplement nbErreur à 0.

 

Exercice 3: Rajouter à la classe Pendu une méthode dessinePendu() qui affiche à l'écran le dessin complet du pendu.

 

Exercice 4: Rajouter à la classe Pendu une méthode de signature: 

public char caractere(int i, int j) , qui retourne le caractère à afficher à la position (i,j) en fonction du nombre d'erreurs courant.

 

Exercice 5: Rajouter à la classe Pendu une méthode dessine() qui affiche à l'écran le dessin du pendu correspondant à la valeur du nombre d'erreurs courant.

 

Exercice 6: Rajouter une fonction main() qui utilise une instance de la classe Pendu, et qui affiche successivement toutes les étapes du dessin du pendu.

 

2 Le jeu du Pendu

Exercice 7: Modifier la classe Pendu de la façon suivante :

  - ajouter les attributs : 'String solution' et 'boolean[]  trouve'.

  - adapter le constructeur : en ajoutant un paramètre de type String qui servira à initialiser la chaîne solution, et qui initialise le tableau 'trouve' à la dimension solution.length() et le remplit avec la valeur false.

  - ajouter les méthodes  : afficheSolution() et affiche(). La méthode afficheSolution() doit afficher à l'écran la chaîne solution avec un espace entre chaque caractère, affiche() fait la même chose mais si trouve[i]==false , le caractère '_' sera affiché à la place du caractère se trouvant à la position i dans la solution.

 

Exercice 8: Rajouter la méthode : public boolean choix(char c) , qui retourne: 

  - 'true' si c apparaît dans la chaîne solution, et dans ce cas affecte la valeur 'true' à trouve[i] pour toutes les positions i  de c dans la solution.

  - 'false' si c n'apparaît pas dans la solution.

NB: La classe String possède la méthode : public int indexOf(char c, int deb) ,

cette méthode retourne la position de la prochaine occurrence du caractère c dans la chaîne à partir de la position 'deb' (incluse). Si c n'apparaît plus, la valeur -1 est retournée.

 

Exercice 9: Rajouter la méthode : public boolean aGagner() , qui retourne: 'true' si le joueur a gagné (si toutes les lettres de la solution ont été trouvées).

 

Exercice 10: Modifier la fonction main() de sorte à réaliser le jeu du pendu.

Voici l'affiche à fournir à l'utilisateur :

[...]

[...en cas de défaite]

[...en cas de victoire]

 

Infos :  
La classe String possède la méthode : String toUpperCase() , qui retourne la valeur de la chaîne en majuscule.


Site des infos concernant le module de programmation par objets en licence:
http://www.lirmm.fr/~ferber/Licence