當前位置:編程學習大全網 - 編程語言 - 編程老師小王

編程老師小王

實現了兩副牌,每個人的牌和牌。

# 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;

}

  • 上一篇:遼陽鞍鋼弓附鴻誠有限責任公司怎麽樣?
  • 下一篇:四種聚類方法之比較
  • copyright 2024編程學習大全網