EXERCICE 5 - JEU DE CARTES
Les files d'attente (Version C)
 
 
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'attente modélisées par des listes chaînées (cf. cours). Une carte aura la structure suivante.

structure CARTE:
 FAMILLE   famille;
 PUISSANCE puissance;
fin structure;

FAMILLE et PUISSANCE sont des types énumérés. FAMILLE contient les valeurs COEUR, CARREAU, TREFLE et PIQUE. PUISSANCE contient les valeurs SEPT, HUIT, NEUF, DIX, VALET, DAME, ROI et AS.

Question 1: Déclarer la structure TAS qui est une file d'attente de cartes qui représente un tas de cartes. Ecrire les fonctions:

  • mettreCarte qui place une carte sous un tas de cartes,

  • retirerCarte qui enlève la carte au sommet d'un tas de cartes,

  • afficherTas qui affiche le contenu d'un tas de cartes (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: Déclarer un tableau de 32 cartes qui représente le jeu de cartes et écrire les fonctions:

  • 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 3: Ecrire les fonctions:

  • 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 4: Ecrire maintenant la fonction simulerBataille qui simule le déroulement d'une partie du jeu de la bataille. Il est conseillé d'écrire aussi une fonction qui affiche le contenu des 3 tas du jeu et de l'appeler pendant la simulation.

 
CORRECTION