Quatrième semaine

Rappel sur la notion de conditionnelle

Exercice 1
Création d'une classe permettant la création de triangles Triangle & TestTriangle
Exercice 2
Création d'une classe permettant de simuler le jeu Pierre/Papier/Ciseaux PPC & TestPPC
Exercice 2 bis
Toujours Pierre/Papier/Ciseaux, mais en version courte ! PPC2 & TestPPC2




Exercice 1 :
Nous cherchons à écrire une classe permettant à l'utilisateur de fournir trois valeur réelles représentant les 3 cotés d'un triangle. Le programme doit déterminer si les trois valeurs correspondent ou pas à un triangle et si oui, si le triangle est rectangle, isocèle, équilatéral ou quelconque.



C:\Java\Algo> java TestTriangle
Cote a ? 3
Cote b ? 3
Cote c ? 4
 triangle isocele
C:\Java\Algo>

Rappel : aucun affichage ne doit etre fait dans les classes "Boites à outils". Par contre il est bien sur possible de retourner une chaine de caractères (String).



Exercice 2 :
Le but de cet exercice est d'écrire et de tester un programme qui simule le jeu de "pierre, papier, ciseaux". Les deux joueurs entrent successivement leur choix et le programme affichera le joueur ayant gagné, ou égalité si le match est nul.


C:\Java\Algo> java TestPPC1
Choisissez Pierre, Papier ou Ciseaux !
Joueur1 : Pierre
Joueur2 : Papier
Le gagnant est le Joueur2
C:\Java\Algo>

Une première méthode consistera a calculer et stocker le résultat du jeu dans un attribut :
 

class PPC

  private String choixJoueur1, choixJoueur2, resultat;  // attributs

  PPC(String choix1, String choix2) // constructeur
  {
    choixJoueur1 = choix1;
    choixJoueur2 = choix2;
  }

  // Cette méthode vérifie que la chaine de caractères 'coup' représente
  // un des coups valides.
  boolean chaineValide(String coup)
  {
    // A compléter
  }

  // Cette méthode vérifie que les coups des deux joueurs sont valides
  boolean sontValides()
  { 
    // A compléter
  }

  // Cette méthode retourne le résultat d'une manche du jeu
  String getResultat() {
    // A compléter
  }

  // Cette méthode effectue le calcul du résultat du match
  void calcul()
  {
    // A compléter
  }

}

Ensuite refaites le meme programme, mais en ne stockant plus le résultat (on le renvoit directement) :



C:\Java\Algo> java TestPPC2
Choisissez Pierre, Papier ou Ciseaux !
Joueur1 : Pierre
Joueur2 : Papier
Le gagnant est le Joueur2
C:\Java\Algo>

On aura ainsi un squelette légèrement différent du précédant :
 

class PPC2

  private String choixJoueur1, choixJoueur2;  // attributs

  PPC(String choix1, String choix2) // constructeur
  {
    choixJoueur1 = choix1;
    choixJoueur2 = choix2;
  }

  // Cette méthode vérifie que la chaine de caractères 'coup' représente
  // un des coups valides.
  boolean chaineValide(String coup)
  {
    // A compléter
  }

  // Cette méthode vérifie que les coups des deux joueurs sont valides
  boolean sontValides()
  { 
    // A compléter
  }

  // Cette méthode effectue le calcul du résultat du match et retourne le résultat
  String calcul()
  {
    // A compléter
  }

}



Exercice 2 bis :
C'est le meme exercice que précédemment, sauf que cette fois-ci, l'algorithme permettant de déterminer le résultat du match doit etre simplifié, en utilisant un codage judicieux des différents choix possible. Par exemple, on peut faire les associations suivantes : Pierre = 0, Papier = 1, Ciseaux = 2 et étudier différent opérateurs (l'addition, la soustraction, la multiplication ...) pour voir si l'on ne peut simplifier le nombre de tests a effectuer.


C:\Java\Algo> java TestPPC3
Choisissez Pierre (0), Papier (1) ou Ciseaux (2) : 
Joueur1 : 0
Joueur2 : 1
Le gagnant est : Joueur2
C:\Java\Algo>

La classe obtenue sera presque identique à l'exercice précédant, on simplifie juste la méthode calcul, et on modifie le constructeur car on manipule des entiers à la place des chaines. On pourra utiliser la classe TestPPC3 suivante :
 

class TestPPC3
{

  public static void main(String [] args)
  {
    int c1,c2;
    System.out.println("Choisissez Pierre (0), Papier (1) ou Ciseaux (2) : ");
    System.out.print("Joueur1 : ");
    c1 = Clavier.readInt();

    System.out.print("Joueur2 : ");
    c2 = Clavier.readInt();

    PPC3 ppc = new PPC3(c1,c2);
    System.out.println("Le gagnant est : " + ppc.calcul());
  }

}