# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & lttime.h & gt
# include & ltstring.h & gt
結構卡//
{
char套裝[10];/*顏色*/
char face[10];/*卡片*/
};
enum { posA,posB,posC,posD };//明確每個人的立場。
結構位置
{
結構卡get CARD[25];//每人得到的卡片
};
結構位置位置[4];//分配四個位置
結構卡left CARD[8];//卡片
結構卡卡片[54];//54張卡
char *suit[]={ "黑桃"、"紅桃"、"梅花"、"方塊" };
char *face[] = {"A "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 ",
“10”、“傑克”、“皇後”、“國王”};
/*功能:打亂52張牌的順序,
函數參數:結構數組wCard,代表52張卡片。
函數返回值:無
*/
無效洗牌(結構牌*wCard)
{
int i,j;
結構卡溫度;
for(I = 0;我& lt54;i++)
{
j = rand()% 54;
temp = wCard[I];
wCard[I]= wCard[j];
wCard[j]= temp;
}
}
/*函數:交易結果
函數參數:結構數組wCard,表示有54張卡片。
函數返回值:無
*/
無效交易(結構卡*wCard)
{
int i,aidx=0,bidx=0,cidx=0,didx = 0;
洗牌(卡);//洗牌
/* * * * * * * * * * * *發第壹副牌,只有50張,分4張牌分別到A、B、C、D位置* * * * * * * * * *
//第壹次發了50張牌後,A和B又多了壹張牌,於是C和D第二次排第壹,每次發40張*/
for(I = 0;我& lt50;I++)//發牌的數量
{
//printf(" % 10s % 5s \ n ",wCard[i]。套裝,wCard[i]。臉);
if(i%4==0)
posA。get card[aidx++]= wCard[I];
else if(i%4==1)
職位。get card[bidx++]= wCard[I];
else if(i%4==2)
職位。get card[cidx++]= wCard[I];
else if(i%4==3)
位置。get card[didx++]= wCard[I];
}
/* * * * * * * *剩下的四張卡用作卡* * * * * * * *
left card[0]= wCard[i++];
left card[1]= wCard[i++];
left card[2]= wCard[i++];
left card[3]= wCard[i++];
洗牌(卡);//再次打亂卡片
/* * * * * * * * * * * *第二副牌,只發50張,分發給A、B、C、D四個位置,預留4張,1張* * * * * * * * * * * *
for(I = 0;我& lt50;I++)//發牌的數量
{
//printf(" % 10s % 5s \ n ",wCard[i]。套裝,wCard[i]。臉);
if(i%4==0)
職位。get card[cidx++]= wCard[I];
else if(i%4==1)
位置。get card[didx++]= wCard[I];
else if(i%4==2)
posA。get card[aidx++]= wCard[I];
else if(i%4==3)
職位。get card[bidx++]= wCard[I];
}
/* * * * * * * *剩下的四張牌當牌用,這樣壹張* * *就是8張* * * * * * * *
left card[4]= wCard[i++];
left card[5]= wCard[i++];
left card[6]= wCard[i++];
left card[7]= wCard[i++];
}
/*功能:將52張牌按照黑桃、紅心、花朵、方塊的順序排列,按照A ~ K的順序排列其面值。
函數參數:結構數組wCard,代表52張不同顏色和面額的卡片。
指針數組wFace,指向面值字符串。
指針數組wSuit,指向花色串。
函數返回值:無
*/
void FillCard(結構卡wCard[],char *wSuit[],char *wFace[])
{
inti
for(I = 0;我& lt52;i++)
{
strcpy(wCard[i].suit,wSuit[I/13]);
strcpy(wCard[i].face,w face[I % 13]);
}
//wCard[53]。face= "大";//尺寸之王
strcpy(wCard[52])。西裝,“小”);
strcpy(wCard[52])。臉,“鬼”);
strcpy(wCard[53])。西裝,“大”);
strcpy(wCard[53])。臉,“鬼”);
}
無效打印(char ch)//輸出卡
{
int I;
開關(通道)
{
情況“A”:for(I = 0;我& lt25;i++)
{
printf("%10s %5s\n ",位置[posA]。getcard[i]。西裝,posA。getcard[i]。臉);
}
打破;
情況“B”:for(I = 0;我& lt25;i++)
{
printf("%10s %5s\n ",position[posB]。getcard[i]。套裝,position[posB]。getcard[i]。臉);
}
打破;
情況“C”:for(I = 0;我& lt25;i++)
{
printf("%10s %5s\n ",position[posC]。getcard[i]。套裝,位置[posC]。getcard[i]。臉);
}
打破;
大小寫“D”:for(I = 0;我& lt25;i++)
{
printf("%10s %5s\n ",position[posD]。getcard[i]。西裝,posD。getcard[i]。臉);
}
打破;
}
}
Void outputLeftCard()//輸出卡
{
int I;
for(I = 0;我& lt8;i++)
printf("%10s %5s\n ",leftCard[i]。花色,左卡[i]。臉);
}
int main()
{
char pos
srand(time(NULL));
FillCard(牌、套、臉);
//洗牌(卡);
發牌(牌);
printf("請選擇妳的位置(A、B、C、D):");
scanf("%c ",& amppos);
打印(pos);//輸出妳位置上的牌。
/* * * * * * * *下面輸出的是除妳之外其他人的牌* * * * * * * *
如果(pos!='A ')
{
printf(" A:\ n ");
打印(' A ');
}
如果(pos!='B ')
{
printf(" B:\ n ");
打印(' B ');
}
如果(pos!='C ')
{
printf(" C:\ n ");
打印(' C ');
}
如果(pos!='D ')
{
printf(" D:\ n ");
打印(' D ');
}
printf(" Card:\ n ");
outputLeftCard();//輸出卡
返回0;
}