Advertisement
Guest User

Untitled

a guest
May 26th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. static char cards_color[4] = { 'K', 'C', 'P', 'T' };
  6. static int cards[13][2] =
  7. {
  8.     { 1, 'A' },
  9.     { 2, '2' },
  10.     { 3, '3' },
  11.     { 4, '4' },
  12.     { 5, '5' },
  13.     { 6, '6' },
  14.     { 7, '7' },
  15.     { 8, '8' },
  16.     { 9, '9' },
  17.     { 10, 'D' },
  18.     { 11, 'J' },
  19.     { 12, 'Q' },
  20.     { 13, 'K' }
  21. };
  22.  
  23. void done (int game[5][3])
  24. {
  25.     int i, j;
  26.     int card, color;
  27.    
  28.     for (i = 0; i < 5; ++i)
  29.     {
  30.         if (game[i][2] == 0)
  31.         {
  32.             int ok = 1;
  33.            
  34.             /* choose a card randomly */
  35.             card  = cards[rand() % 13][0];
  36.             color = cards_color[rand() % 4];
  37.            
  38.             /* check if the card is in the game */
  39.             for (j = 0; j < i; ++j)
  40.             {
  41.                 if (game[j][0] != card || game[j][1] != color)
  42.                 {
  43.                     ok = 0;
  44.                     break;
  45.                 }
  46.             }
  47.            
  48.             if (!ok || i == 0)
  49.             {
  50.                 game[i][0] = card;
  51.                 game[i][1] = color;
  52.             }
  53.             else
  54.                 --i; /* if the card is already in the game, decrease i to choose again */
  55.         }
  56.     }
  57. }
  58.  
  59. void check (int game[5][3])
  60. {
  61.     int tab[13] = { 0 };
  62.     int have_color = 1;
  63.     int old_color;
  64.     int i;
  65.    
  66.     old_color = game[0][1];
  67.     for (i = 0; i < 5; ++i)
  68.     {
  69.         tab[game[i][0]] += 1; /* set number of same cards */
  70.        
  71.         if (old_color != game[i][1]) /* check if we have the same colors */
  72.             have_color = 0;
  73.         old_color = game[i][1];
  74.     }
  75.    
  76.     /* if have_color = true, every card are K, or C, or T, or P */
  77.     /* tab contains the number of cards in the game (for exemple : tab[2] = 2 means that we have 2 cards '2') */
  78.    
  79.     for (i = 0; i < 13; ++i)
  80.     {
  81.         if (tab[i] > 0)
  82.         {
  83.             /* TODO: push (stack, tab[1]) */
  84.         }
  85.     }
  86. }
  87.  
  88. void print_game (int game[5][3])
  89. {
  90.     int i;
  91.     printf ("Here is your game :\n");
  92.     for (i = 0; i < 5; ++i)
  93.         printf ("Card %d: %d (%c)\n", i, game[i][0], game[i][1]);
  94. }
  95.  
  96. int main (void)
  97. {
  98.     int no_exit = 0;
  99.     int game[5][3]; /* game[][0] = card, game[][1] = color, game[][2] = keep the card */
  100.     int i, j;
  101.    
  102.     srand (time (NULL));
  103.    
  104.     do
  105.     {
  106.         for (i = 0; i < 5; ++i)
  107.             for (j = 0; j < 3; ++j)
  108.                 game[i][j] = 0;
  109.        
  110.         done (game);
  111.         print_game (game);
  112.        
  113.         for (i = 0; i < 5; ++i)
  114.         {
  115.             printf ("Keep card %d (no:0/yes:1) ? ", i);
  116.             scanf ("%d", &game[i][2]);
  117.         }
  118.        
  119.         done (game);
  120.         print_game (game);
  121.        
  122.         printf ("Play again (no:0/yes:1) ? ");
  123.         scanf ("%d", &no_exit);
  124.     } while (no_exit);
  125.    
  126.     return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement