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.