Vous êtes sur la page 1sur 1

Université Moulay Ismaïl 2015-2016

ENSAM – Meknès 2ième


Année

TD 3 – Les structures

Exercice : Jeu de cartes


L’objectif de l’exercice est d’écrire un programme de jeu de cartes entre deux joueurs avec 40 cartes (10
numéros fois 4 couleurs).
Après mélange et distribution des cartes entre les deux joueurs, chacun organise ses cartes en main (on
suppose que c’est dans l’ordre de distribution) puis retourne la première carte. La carte la plus forte gagne le
coup et les deux cartes sont mises en dernier dans la main du gagnant. L'ordre des cartes est : 1, 2, 3, 4, 5, 6, 7,
10, 11, 12. En cas d'égalité, la couleur la plus forte est gagnante dans l'ordre : cœur, pique, carreau, trèfle. Le
joueur qui ramasse toutes les cartes est déclaré gagnant.
On représente une carte par une structure de la forme :
struct carte
{
int valeur;
int couleur;
};
typedef struct carte uneCarte ;

Les 40 cartes du jeu (initiales) sont représentées par un tableau de structures T de taille 40.
Les cartes des deux joueurs sont stockées dans deux tableaux de structures J1 et J2 de taille 40.
On propose de déclarer les tableaux T, J1 et J2 comme des variables globales.
On déclarer aussi deux entiers n1 et n2 pour le nombre de cartes de J1 et J2.

1. Ecrire une fonction void initCartes ( ) qui initialise le tableau T des 40 cartes du jeu.
2. Ecrire une fonction void melanger ( ) qui permet de mélanger les cartes du tableau T.
Note : vous pouvez utiliser les deux fonctions srand et rand : srand( ) initialise le générateur aléatoire et rand( )
renvoie un entier pseudo-aléatoire entre 0 et RAND_MAX.
Les deux instructions : srand(time(NULL) ; r = rand()%40; permettent de générer le nombre entier r entre 0 et
39.
3. Ecrire une fonction void distribuer ( ) qui permet de distribuer les cartes du tableau T sur les deux
tableaux J1 et J2 des deux joueurs, on a alors n1 = 20 et n2 = 20.
4. Ecrire une fonction void jouerCoup ( ) qui permet de jouer un coup.
5. Ecrire une fonction void afficherCarte (uneCarte c) pour afficher une carte c.
6. Ecrire une fonction void afficherMain(uneCarte J[], int n) pour afficher les cartes d’un joueur J.
7. Ecrire la fonction main du jeu : déclaration des tableaux et variables, initialisations des cartes,
mélange, distribution et jeu. Dans chaque coup il faut afficher les deux cartes et le joueur qui remporte
le coup. A la fin il faut afficher le joueur gagnant et après combien de coups.