Le jeu de chifoumi                        

Le jeu de chifoumi

Le jeu de Chifoumi s'appelle aussi Caillou-Ciseaux-Papier. Il se joue entre deux joueurs, en général avec les mains. Simultantément, les deux joueurs font un signe avec les mains qui représente soit un caillou, soit des ciseaux, soit un papier.
Nommons A et B les deux joueurs.
Si les deux joueurs ont fait le même signe, on considère que c'est un cas d'égalité, aucun des deux joueurs ne marque un point.
Si le joueur A a joué Caillou et le joueur B Ciseaux, A marque un point car "le caillou émousse les ciseaux", et réciproquement.
Si le joueur A a joué Papier et le joueur B Caillou, A marque un point car "le papier enveloppe le caillou", et réciproquement.
Si le joueur A a joué Ciseaux et le joueur B Papier, A marque un point car "les ciseaux coupent le papier", et réciproquement.
On donne un nombre de points à atteindre (3 ou 5 par exemple) et le premier joueur qui a atteint ce nombre de points a gagné.

Il s'agit de programmer ce jeu.

Toutes les classes concernant ce jeu seront mises dans un paquetage nommé chifoumi.

Premier temps

Effectuez les opérations suivantes (on suppose que vous travaillez sous Eclipse) : Vous exécuterez alors la méthode main qui se trouve dans la classe TestInterfaceSaisie. Vous observerez le résultat.

Deuxième temps

Il s'agit maintenant de programmer le jeu entre deux joueurs, mais en ne faisant pour l'instant qu'un seul tour de jeu : les deux joueurs choisissent une seule fois chacun entre les trois possibilités, puis le programme conclut sur les trois cas possibles (égalité, l'un est gagnant, l'autre est gagnant). On utilisera la classe IHMSaisie et le type énuméré Choix définis ci-dessus.
Vous créerez dans le paquetage chifoumi les trois classes suivantes.

Troisième temps

On veut faire en sorte que le joueur qui gagne soit le premier joueur ayant atteint un certain score donné à l'avance. On reprendra dans cet objectif une bonne partie du travail déjà fait. On conseille de créer une nouvelle classe nommée Jeu plutôt que de modifier la classe JeuUnTour.
Le score à atteindre pourra être donné par un troisième argument de la méthode main et traduit alors de String à int par :
    int scoreAAtteindre = Integer.parseInt(arg[2]);
si le tableau des arguments de la méthode main s'appelle arg. La valeur du score à atteindre sera transmise à la classe Jeu par le constructeur de cette classe.
La classe Jeu différera de la classe JeuUnTour essentiellement pat la méthode jouer. Pour cela, il faudra sans doute utiliser une boucle qui peut être du genre.
    boolean fini = false;
    while (!fini) {
        ...
        ...
    }
Le signe ! se lit "not" ou "non". Le bloc suivant "while (!fini)" n'est exécuté que si fini vaut false. Lorsque le flux d'exécution arrrive à la fin du bloc, il remonte à "while (!fini)". Il conviendrait de donner à l'intérieur du bloc la valeur true à la variable fini lorsqu'un des joueurs a atteint le score à atteindre.

Une classe sera définie pour contenir une méthode main lançant ce nouveau jeu.

Corrigé :


© Irène Charon, Télécom ParisTech - Paris 2011