
#include <stdlib.h>
#include <time.h>
struct bitCard{
unsigned face : 4;
unsigned suit : 2;
unsigned color : 1;
};
typedef struct bitCard Card;
void fillDeck(Card *);
void deal (Card *, const char *wFaceBase[], const char *wSuitBase[], const char *wColor[]);
void shuffle(Card *wDeck);
int main()
{
Card deck[52];
const char * faceBase [14] = {"Ace", "Deuce", "Three", "Four",//Номинал
"Five", "Six", "Seven", "Eight",
"Nine", "Ten", "Jack", "Queen", "King", "\n"};
const char *suitBase[5] = {"Hearts", "Diamonds", "Clubs", "Spades", "\n"};
const char *color[2] = {"Red", "Black"};
srand (time(NULL));
fillDeck(deck);
shuffle(deck);
deal(deck, faceBase, suitBase, color);
return 0;
}
void fillDeck(Card *wDeck)
{
int i;
for (i = 0; i <= 51; i++)
{
wDeck[i].face = i % 13;
wDeck[i].suit = i / 13;
wDeck[i].color = i / 26;
}
}
void deal(Card *wDeck, const char *wFaceBase[], const char *wSuitBase[], const char *wColor[])
{
int k1, k2;
for(k1 = 0, k2 = k1 + 26; k1 <= 25; k1++, k2++)
{
printf("%6s of %8s Color is %5s ",
wFaceBase[wDeck[k1].face], wSuitBase[wDeck[k1].suit], wColor[wDeck[k1].color]);
printf("%6s of %8s Color is %5s\n",
wFaceBase[wDeck[k2].face], wSuitBase[wDeck[k2].suit], wColor[wDeck[k2].color]);
}
}
void shuffle(Card *wDeck)
{
int i, j;
Card temp;
for (i = 0; i < 52; i++)
{
j = rand() % 52;
temp = wDeck[i];
wDeck[i] = wDeck[j];
wDeck[j] = temp;
}
}