Jeu du Tracassin [je04] - Exercice

Transcription

Jeu du Tracassin [je04] - Exercice
Jeu du Tracassin [je04] - Exercice
Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner
Unisciel
algoprog
Version 10 avril 2015
Table des matières
1 Présentation du jeu
1
2 Classe Tracassin
3
3 Stratégie du jeu
3.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Algorithmique, Programmation . . . . . . . . . . . . . . . . . . . . . . .
3
3
4
Jeu du Tracassin / pg-tracassinC1 (alg, TD)
Cet exercice réalise le jeu du Tracassin (jeu de démontage, récursivité croisée). Dans le
même ordre d’idées, l’exercice @[Jeu du Baguenaudier] réalise le jeu du Baguenaudier
(jeu de démontage, récursivité croisée).
1
Présentation du jeu
Jeu du Tracassin
(Appelé aussi « jeu des chèvres et moutons » ou « jeu des grenouilles ») Il se joue sur une
tablette divisée en un nombre impair n de cases. Les cases de gauche sont couvertes par
des pions de couleur C (Chèvres ou Crapeaux), celles de droite par des pions de couleur
M (Moutons ou Grenouilles) et la case du milieu est libre.
1
Unisciel algoprog – Jeu du Tracassin / je04
2
Les pions M ne peuvent se déplacer que vers la gauche et les C vers la droite. Un pion
peut avancer d’un pas si la case suivante dans sa direction de déplacement est libre, ou
sauter par-dessus un pion de l’autre sorte si la case qui le suit est libre.
Exemple
A partir de la situation initiale (a), il n’y a que deux coups possibles (b1) et (b2).
(a)
c
(b1) c
(b2) c
c c
c c
c c
c
c
m c
m m m m
m m m m
m m m
But du jeu
Amener tous les M à gauche et tous les C à droite de sorte que l’état final est semblable
à l’état initial les pions ayant été échangés (les M à gauche, les C à droite).
Exemple d’exécution
Nombre impair de chevres? 3
On entrelace... Chevres et Moutons
[CCC MMM]
[CCCM MM]
[CC MCMM]
[C CMCMM]
[CMC CMM]
[CMCMC M]
[CMCMCM ]
[CMCM MC]
[CM MCMC]
[ MCMCMC]
FIN Premiere passe
Appuyez sur une touche pour continuer...
On de-entrelace... Chevres et Moutons
[ MCMCMC]
[M CMCMC]
[MMC CMC]
[MMCMC C]
[MMCM CC]
[MM MCCC]
[MMM CCC]
FIN Deuxieme passe = fin du jeu
Unisciel algoprog – Jeu du Tracassin / je04
2
3
Classe Tracassin
On modélise le jeu du tracassin par une classe, et on représente un tracassin par un
tableau b de 2n + 1 caractères, n étant le nombre de pions d’une sorte (Chèvre ou
Mouton).
Écrivez une classe Tracassin ayant pour attributs :
– Le nombre de pions d’une sorte npions (entier).
– La tablette b (vecteur de caractères).
Écrivez un constructeur à un paramètre d’entier n spécifiant le nombre de pions d’une
sorte, qui initialise le nombre de pions d’une sorte et la taille de la tablette du tracassin.
Définissez les constantes caractère ESPACE de valeur ’ ’, CHEVRE de valeur ’C’ et MOUTON
de valeur ’M’.
Écrivez un accesseur interne getN du nombre de pions d’une sorte.
Écrivez une méthode interne initialiser qui réinitialise la tablette avant de lancer le
jeu, c.-à-d qui met n CHEVRE à gauche, l’ESPACE au milieu et n MOUTON à droite.
Écrivez une méthode interne afficher qui affiche la tablette.
Écrivez une méthode interne permuter(c,p,q) qui permute b[p] et b[q] dans cet ordre.
En position p (entier) il y a un animal c (caractère) et la position q (entier) est libre.
3
3.1
Stratégie du jeu
Analyse
Ce problème détermine la suite de déplacements pour un nombre de pions n (impair).
Essayez pour les valeurs de n (1 et 3) de déduire la stratégie de jeu.
Écrivez les stratégies qui intercalent les pions :
– C n M n vers (M C)n par sauterFaire
– C n M n vers (M C)n par faireSauter
Unisciel algoprog – Jeu du Tracassin / je04
4
De même, écrivez les stratégies qui séparent les pions :
– (M C)n vers M n C n par sauterDefaire
– (M C)n vers M n C n par defaireSauter
3.2
Algorithmique, Programmation
Ce problème réalise les stratégies de jeux.
Écrivez une méthode interne sauterVersGauche(c,p,r) qui fait sauter vers la gauche
les pions c (caractère) pour b[p..r] par pas de 2.
De même, écrivez une méthode interne duale sauterVersDroite(c,p,r) qui fait sauter
vers la droite les pions c (caractère) pour b[p..r] par pas de -2.
Écrivez une méthode interne récursive croisée sauterFaire(n,p,r) qui passe de
C n M n en (M C)n pour b[p..r].
De même, écrivez une méthode interne récursive croisée faireSauter(n,p,r) qui
passe de C n M n en (M C)n pour b[p..r].
Unisciel algoprog – Jeu du Tracassin / je04
5
Dupliquez les méthodes sauterVersGauche et sauterVersDroite en les méthodes internes desauterVersGauche(c,p,r) et desauterVersDroite(c,p,r) puis modifiez-les
de sorte qu’elles font sauter vers la gauche (resp. la droite) les pions c pour b[p..r] par
pas de -2 (resp. par pas de +2).
Dupliquez les méthodes sauterFaire et faireSauter en les méthodes internes sauterDefaire(n,p,
et defaireSauter(n,p,r) puis modifiez-les de sorte qu’elles passent de (M C)n (resp.
de (M C)n ) en M n C n pour b[p..r].
Écrivez une méthode jouer qui initialise le tracassin, entrelace les pions puis les deentrelace.
Écrivez un algorithme qui demande et saisit la taille du jeu dans n (entier). Affichez
l’invite :
Nombre impair de chevres?
Instanciez un Tracassin jeu puis lancez le jeu pour n pions.