C语言实现自动发牌程序
C语言自动发牌程序,供大家参考,具体内容如下
一副扑克有52张牌,打桥牌时应将牌分给4个人。请设计一个程序完成自动发牌的工作。要求:黑桃用S(Spaces)表示,红桃用H(Hearts)表示,方块用D(Diamonds)表示,梅花用C(Clubs)表示。
分析:
要设置数组表现扑克牌
要设置数组表现玩家
要给扑克牌做特定标识,得到结果后玩家要知道自己手中黑桃有哪些、方块有哪些
初步想法:
设置4个字符数组保存4种梅花牌,设置4个字符数组表示4名玩家分配到的牌
每张牌随机发给4名玩家,当玩家的持牌数达到13,不再分配给该名玩家牌
代码展示:
voidmycode_13()
{
srand(unsigned(time(NULL)));
/*全部牌*/
charS[13]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
charH[13]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
charD[13]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
charC[13]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
/*4个玩家*/
charplayer1[13],player2[13],player3[13],player4[13];
intp1=0,p2=0,p3=0,p4=0;
distribution(S,player1,player2,player3,player4,&p1,&p2,&p3,&p4);
distribution(H,player1,player2,player3,player4,&p1,&p2,&p3,&p4);
distribution(D,player1,player2,player3,player4,&p1,&p2,&p3,&p4);
distribution(C,player1,player2,player3,player4,&p1,&p2,&p3,&p4);
puts("运行结束");
for(inti=0;i<13;i++)
printf("%c",player1[i]);
putchar('\n');
for(inti=0;i<13;i++)
printf("%c",player2[i]);
putchar('\n');
for(inti=0;i<13;i++)
printf("%c",player3[i]);
putchar('\n');
for(inti=0;i<13;i++)
printf("%c",player4[i]);
}
voiddistribution(char*S_H_D_C,char*player1,char*player2,char*player3,char*player4,int*p1,int*p2,int*p3,int*p4)
{
staticinth=1;
intr;
inta=*p1,b=*p2,c=*p3,d=*p4;
for(inti=0;i<13;i++)
{
r=(rand()%4)+1;
while((r==1&&(*p1)==13)||(r==2&&(*p2)==13)||(r==3&&(*p3)==13)||(r==4&&(*p4)==13))
r=(rand()%4)+1;
switch(r)
{
case1:
player1[(*p1)++]=S_H_D_C[i];
break;
case2:
player2[(*p2)++]=S_H_D_C[i];
break;
case3:
player3[(*p3)++]=S_H_D_C[i];
break;
case4:
player4[(*p4)++]=S_H_D_C[i];
break;
default:
break;
}
}
switch(h++)
{
case1:
printf("黑桃:\n");
break;
case2:
printf("红桃:\n");
break;
case3:
printf("方块:\n");
break;
case4:
printf("梅花:\n");
break;
}
printf("Player1:");
for(inti=a;i<(*p1);i++)
printf("%c",player1[i]);
putchar('\n');
printf("Player2:");
for(inti=b;i<(*p2);i++)
printf("%c",player2[i]);
putchar('\n');
printf("Player3:");
for(inti=c;i<(*p3);i++)
printf("%c",player3[i]);
putchar('\n');
printf("Player4:");
for(inti=d;i<(*p4);i++)
printf("%c",player4[i]);
putchar('\n');
}
以下代码保证了当某个人得到13张牌后不在得牌
r=(rand()%4)+1; while((r==1&&(*p1)==13)||(r==2&&(*p2)==13)||(r==3&&(*p3)==13)||(r==4&&(*p4)==13)) r=(rand()%4)+1;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。