Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int jeu[52];
- typedef struct {
- int numero;
- char couleur;
- char figure;
- int valeur;
- } Carte;
- typedef struct {
- Carte Cards[13];
- int distrib[4];
- } MainB;
- typedef struct {
- MainB Nord;
- MainB Est;
- MainB Sud;
- MainB Ouest;
- }DonneB;
- //Codage des couleurs
- char CodeCouleur (int coul)
- {
- char result;
- switch(coul){
- case 0: result='T';
- break;
- case 1: result='K';
- break;
- case 2: result='C';
- break;
- case 3: result='P';
- break;
- }
- return result;
- }
- //Codage des figures
- char CodeFigure (int fig)
- {
- char result;
- switch(fig){
- case 0: result='2';
- break;
- case 1: result='3';
- break;
- case 2: result='4';
- break;
- case 3: result='5';
- break;
- case 4: result='6';
- break;
- case 5: result='7';
- break;
- case 6: result='8';
- break;
- case 7: result='9';
- break;
- case 8: result='X';
- break;
- case 9: result='V';
- break;
- case 10: result='D';
- break;
- case 11: result='R';
- break;
- case 12: result='A';
- break;
- }
- return result;
- }
- void InitCarte (Carte *pc, int num)
- {
- char figure, couleur;
- figure= CodeFigure(num % 13);
- couleur= CodeCouleur(num / 13);
- pc->numero= num;
- pc->couleur= couleur;
- pc->figure= figure;
- }
- void AfficheEnClair (Carte C)
- {
- switch(C.figure){
- case 'A': printf("As");
- break;
- case 'R': printf("Roi");
- break;
- case 'D': printf("Dame");
- break;
- case 'V': printf("Valet");
- break;
- case 'X': printf("Dix");
- break;
- default: printf("%c",C.figure);
- }
- printf(" de ");
- switch(C.couleur){
- case 'T': printf("Trefle");
- break;
- case 'K': printf("Carreau");
- break;
- case 'C': printf("Coeur");
- break;
- case 'P': printf("Pique");
- break;
- }
- printf("\n");
- }
- void AfficheMain (MainB M)
- {
- int i;
- for(i=0;i<13;i++)
- {
- printf(" %d ",(M.Cards[i]).numero);
- AfficheEnClair(M.Cards[i]);
- }
- printf("Distribution : {");
- for(i=0;i<4;i++)
- {
- printf("%d,",M.distrib[i]);
- }
- printf("}\n");
- }
- void shuffle()
- {
- int i,j,s,h;
- for(i=0;i<52;i++)
- {
- jeu[i]=-1;
- }
- for(i=51;i>=0;i--)
- {
- j=rand()%(i+1);
- for(h=0,s=0;s<=j;h++)
- {
- if (jeu[h]<0)
- {
- s++;
- }
- }
- //printf("i = %d\t j = %d\t h = %d\t s = %d\n",i,j,h,s);
- jeu[--h]=i;
- }
- }
- void EchangeCartes (MainB *M, int i, int j)
- {
- Carte C;
- C.couleur= (M->Cards[i]).couleur;
- C.figure= (M->Cards[i]).figure;
- C.numero= (M->Cards[i]).numero;
- (M->Cards[i]).couleur= (M->Cards[j]).couleur;
- (M->Cards[i]).figure= (M->Cards[j]).figure;
- (M->Cards[i]).numero= (M->Cards[j]).numero;
- (M->Cards[j]).couleur= C.couleur;
- (M->Cards[j]).figure= C.figure;
- (M->Cards[j]).numero= C.numero;
- }
- void TrieCartes (MainB *M)
- {
- int i, j;
- for(i=0;i<13;i++)
- {
- for(j=0;j<12-i;j++)
- {
- if((M->Cards[j]).numero > (M->Cards[j+1]).numero)
- {
- EchangeCartes(M,j+1,j);
- }
- }
- }
- }
- //Initialisation d'une main
- void InitMain (MainB *M,int *t)
- {
- int i;
- for(i=0;i<4;i++)
- {
- M->distrib[i]=0;
- }
- for(i=0;i<13;i++)
- {
- InitCarte(&(M->Cards[i]),t[i]);
- switch((M->Cards[i]).couleur)
- {
- case 'T': (M->distrib[0])++;
- break;
- case 'K': (M->distrib[1])++;
- break;
- case 'C': (M->distrib[2])++;
- break;
- case 'P': (M->distrib[3])++;
- break;
- }
- }
- }
- void DealAndSort (DonneB *D)
- {
- shuffle();
- InitMain(&(D->Nord),jeu);
- TrieCartes(&(D->Nord));
- InitMain(&(D->Est),jeu+13);
- TrieCartes(&(D->Est));
- InitMain(&(D->Sud),jeu+26);
- TrieCartes(&(D->Sud));
- InitMain(&(D->Ouest),jeu+39);
- TrieCartes(&(D->Ouest));
- }
- int main()
- {
- int i;
- DonneB D;
- DealAndSort(&D);
- AfficheMain(D.Nord);
- AfficheMain(D.Est);
- AfficheMain(D.Sud);
- AfficheMain(D.Ouest);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement