EXERCICE 5 - JEU DE CARTES
Les files d'attente (Version Java)
 
 
ENONCE
 

Le but de cet exercice est d'écrire un programme qui simule le déroulement d'une partie du jeu de la bataille. Nous rappelons ici les règles. On dispose d'un jeu de 32 cartes (4 couleurs et 8 puissances de carte). Le jeu est d'abord mélangé pour ensuite être coupé en deux tas de 16 cartes. On en donne un à chaque joueur. La partie peut enfin commencer. Chaque joueur montre la carte au sommet de son tas. Le joueur qui a la carte de plus forte valeur ramasse sa carte et celle de son adversaire et les met sous son tas. En cas d'égalité, les deux cartes sont placées sur un tas d'attente avec, pour chaque joueur, une autre carte prise au sommet de son tas. Ensuite, la partie reprend. Le joueur qui remportera la manche suivante remportera non seulement les deux cartes en jeu mais également toutes celles qui se trouvent dans le tas d'attente.

Dans cet exercice, on représentera les tas par des files d'attentes modélisées par des listes chaînées (cf. cours). Une carte sera représentée par la classe suivante.

classe Carte:
 int famille;
 int puissance;
fin classe;

La famille est une valeur entre 0 et 3: COEUR = 0, CARREAU = 1, TREFLE = 2 et PIQUE = 3. La puissance est une valeur entre 0 et 7: SEPT = 0, HUIT = 1, NEUF = 2, DIX = 3, VALET = 4, DAME = 5, ROI = 6 et AS = 7.

Question 1: Ecrire la classe Carte avec une méthode qui affiche la valeur de la carte (on utilisera les codes ASCII 3, 4, 5 et 6 pour représenter les symboles , , et sous MS-DOS). Par exemple, la dame de coeur sera affichée D.

Question 2: Ecrire la classe Tas qui est une file d'attente de cartes, et représente un tas de cartes. Ecrire les méthodes:

  • vide qui indique si le tas est vide,

  • mettre qui place une carte sous le tas,

  • retirer qui enlève la carte au sommet du tas,

  • afficher qui affiche le contenu du tas.

Question 3: Déclarer une classe Bataille qui contiendra les fonctions du jeu proprement dit. Dans la méthode main, déclarer un tableau de 32 cartes qui représente le jeu de cartes, et écrire les méthodes:

  • creerJeu qui remplit le tableau avec les valeurs des cartes d'un jeu classique de 32 cartes,

  • melangerJeu qui mélange les cartes du tableau,

  • distribuerCartes qui répartit les 32 cartes du tableau en deux tas de 16 cartes chacun.

Question 4: Ecrire les méthodes:

  • deplacerCarte qui déplace une carte du sommet d'un tas sous un autre tas,

  • deplacerTas qui déplace un tas sous un autre.

Question 5: Ecrire maintenant la méthode simuler qui simule le déroulement d'une partie du jeu de la bataille. Il est conseillé d'écrire aussi une méthode qui affiche le contenu des 3 tas du jeu et de l'appeler pendant la simulation.

 
CORRECTION