Advertisement
Guest User

Untitled

a guest
May 25th, 2015
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int jeu[52];
  5. typedef struct {
  6. int numero;
  7. char couleur;
  8. char figure;
  9. int valeur;
  10. } Carte;
  11.  
  12. typedef struct {
  13. Carte Cards[13];
  14. int distrib[4];
  15. } MainB;
  16.  
  17. typedef struct {
  18. MainB Nord;
  19. MainB Est;
  20. MainB Sud;
  21. MainB Ouest;
  22. }DonneB;
  23.  
  24. //Codage des couleurs
  25. char CodeCouleur (int coul)
  26. {
  27. char result;
  28.  
  29. switch(coul){
  30. case 0: result='T';
  31. break;
  32. case 1: result='K';
  33. break;
  34. case 2: result='C';
  35. break;
  36. case 3: result='P';
  37. break;
  38. }
  39. return result;
  40. }
  41.  
  42. //Codage des figures
  43. char CodeFigure (int fig)
  44. {
  45. char result;
  46.  
  47. switch(fig){
  48. case 0: result='2';
  49. break;
  50. case 1: result='3';
  51. break;
  52. case 2: result='4';
  53. break;
  54. case 3: result='5';
  55. break;
  56. case 4: result='6';
  57. break;
  58. case 5: result='7';
  59. break;
  60. case 6: result='8';
  61. break;
  62. case 7: result='9';
  63. break;
  64. case 8: result='X';
  65. break;
  66. case 9: result='V';
  67. break;
  68. case 10: result='D';
  69. break;
  70. case 11: result='R';
  71. break;
  72. case 12: result='A';
  73. break;
  74. }
  75. return result;
  76. }
  77.  
  78. void InitCarte (Carte *pc, int num)
  79. {
  80. char figure, couleur;
  81.  
  82. figure= CodeFigure(num % 13);
  83. couleur= CodeCouleur(num / 13);
  84.  
  85. pc->numero= num;
  86. pc->couleur= couleur;
  87. pc->figure= figure;
  88. }
  89.  
  90. void AfficheEnClair (Carte C)
  91. {
  92. switch(C.figure){
  93. case 'A': printf("As");
  94. break;
  95. case 'R': printf("Roi");
  96. break;
  97. case 'D': printf("Dame");
  98. break;
  99. case 'V': printf("Valet");
  100. break;
  101. case 'X': printf("Dix");
  102. break;
  103. default: printf("%c",C.figure);
  104. }
  105. printf(" de ");
  106.  
  107. switch(C.couleur){
  108. case 'T': printf("Trefle");
  109. break;
  110. case 'K': printf("Carreau");
  111. break;
  112. case 'C': printf("Coeur");
  113. break;
  114. case 'P': printf("Pique");
  115. break;
  116. }
  117. printf("\n");
  118. }
  119.  
  120. void AfficheMain (MainB M)
  121. {
  122. int i;
  123.  
  124. for(i=0;i<13;i++)
  125. {
  126. printf(" %d ",(M.Cards[i]).numero);
  127. AfficheEnClair(M.Cards[i]);
  128. }
  129. printf("Distribution : {");
  130. for(i=0;i<4;i++)
  131. {
  132. printf("%d,",M.distrib[i]);
  133. }
  134. printf("}\n");
  135. }
  136.  
  137. void shuffle()
  138. {
  139. int i,j,s,h;
  140. for(i=0;i<52;i++)
  141. {
  142. jeu[i]=-1;
  143. }
  144. for(i=51;i>=0;i--)
  145. {
  146. j=rand()%(i+1);
  147. for(h=0,s=0;s<=j;h++)
  148. {
  149. if (jeu[h]<0)
  150. {
  151. s++;
  152. }
  153. }
  154. //printf("i = %d\t j = %d\t h = %d\t s = %d\n",i,j,h,s);
  155. jeu[--h]=i;
  156. }
  157. }
  158.  
  159. void EchangeCartes (MainB *M, int i, int j)
  160. {
  161. Carte C;
  162.  
  163. C.couleur= (M->Cards[i]).couleur;
  164. C.figure= (M->Cards[i]).figure;
  165. C.numero= (M->Cards[i]).numero;
  166. (M->Cards[i]).couleur= (M->Cards[j]).couleur;
  167. (M->Cards[i]).figure= (M->Cards[j]).figure;
  168. (M->Cards[i]).numero= (M->Cards[j]).numero;
  169. (M->Cards[j]).couleur= C.couleur;
  170. (M->Cards[j]).figure= C.figure;
  171. (M->Cards[j]).numero= C.numero;
  172. }
  173.  
  174. void TrieCartes (MainB *M)
  175. {
  176. int i, j;
  177.  
  178. for(i=0;i<13;i++)
  179. {
  180. for(j=0;j<12-i;j++)
  181. {
  182. if((M->Cards[j]).numero > (M->Cards[j+1]).numero)
  183. {
  184. EchangeCartes(M,j+1,j);
  185. }
  186. }
  187. }
  188. }
  189.  
  190. //Initialisation d'une main
  191. void InitMain (MainB *M,int *t)
  192. {
  193. int i;
  194.  
  195. for(i=0;i<4;i++)
  196. {
  197. M->distrib[i]=0;
  198. }
  199. for(i=0;i<13;i++)
  200. {
  201. InitCarte(&(M->Cards[i]),t[i]);
  202.  
  203. switch((M->Cards[i]).couleur)
  204. {
  205. case 'T': (M->distrib[0])++;
  206. break;
  207. case 'K': (M->distrib[1])++;
  208. break;
  209. case 'C': (M->distrib[2])++;
  210. break;
  211. case 'P': (M->distrib[3])++;
  212. break;
  213. }
  214. }
  215. }
  216.  
  217. void DealAndSort (DonneB *D)
  218. {
  219. shuffle();
  220. InitMain(&(D->Nord),jeu);
  221. TrieCartes(&(D->Nord));
  222. InitMain(&(D->Est),jeu+13);
  223. TrieCartes(&(D->Est));
  224. InitMain(&(D->Sud),jeu+26);
  225. TrieCartes(&(D->Sud));
  226. InitMain(&(D->Ouest),jeu+39);
  227. TrieCartes(&(D->Ouest));
  228.  
  229. }
  230.  
  231. int main()
  232. {
  233. int i;
  234. DonneB D;
  235.  
  236. DealAndSort(&D);
  237. AfficheMain(D.Nord);
  238. AfficheMain(D.Est);
  239. AfficheMain(D.Sud);
  240. AfficheMain(D.Ouest);
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement