Advertisement
Razali

Deck of Cards

Nov 15th, 2014
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. 8a)
  2.  
  3. typedef struct
  4. {
  5.     char rank, suit;
  6. }card_t;
  7.  
  8. int main(void)
  9. {
  10.     card_t deck[52];
  11.     return 0;
  12. }
  13.  
  14. 8b)
  15.  
  16. void initDeck(card_t deck[])
  17. {
  18.     char suit[] = {'C', 'D', 'H', 'S'};
  19.     char rank[] = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'};
  20.     int i, j, k = 0;
  21.    
  22.     for(i = 0; i < 4; i++)
  23.     {
  24.         for(j = 0; j < 13; j++)
  25.         {
  26.             deck[k].rank = rank[j];
  27.             deck[k].suit = suit[i];
  28.             k++;
  29.         }
  30.     }
  31. }
  32.  
  33. void printDeck(card_t deck[])
  34. {
  35.     int i = 0;
  36.    
  37.     while(i < 52)
  38.     {
  39.         printf("%c%c ", deck[i].suit, deck[i].rank);
  40.         i++;
  41.        
  42.         if(i%12 == 0)
  43.             printf("\n");
  44.     }
  45. }
  46.  
  47. 8c)
  48.  
  49. void shuffleDeck(card_t deck[])
  50. {
  51.     int i;
  52.     int rnum, temp;
  53.     srand(time(NULL));
  54.    
  55.     for(i = 0; i < 52; i++)
  56.     {
  57.         rnum = rand()%52;
  58.        
  59.         /* Swap */
  60.         temp = deck[i];
  61.         deck[i] = deck[rnum];
  62.         deck[rnum] = temp;
  63.     }
  64. }
  65.  
  66. 8d)
  67.  
  68. int computePoints(card_t deck[])
  69. {
  70.     int i, points = 0;
  71.     int suit[4] = {0}; //Order of C, D, H, S
  72.    
  73.     for(i = 0; i < 13; i++)
  74.     {
  75.         switch(deck[i].suit)
  76.         {
  77.             case 'C':
  78.                 suit[0]++;
  79.                 break;
  80.            
  81.             case 'D':
  82.                 suit[1]++;
  83.                 break;
  84.            
  85.             case 'H':
  86.                 suit[2]++;
  87.                 break;
  88.            
  89.             case 'S':
  90.                 suit[3]++;
  91.                 break;
  92.         }
  93.     }
  94.    
  95.     for(i = 0; i < 4; i++)
  96.     {
  97.         if(suit[i] == 0)
  98.             points += 3;
  99.         else if(suit[i] == 1)
  100.             points += 2;
  101.         else if(suit[i] == 2)
  102.             points += 1;
  103.     }
  104.    
  105.     return points;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement