发牌扑克牌自编模拟程序游戏(数组随机输出发牌扑克牌)「扑克牌发牌模拟器」

模拟扑克牌发牌游戏—联合数组#include "stdio.h"#include "stdlib.h"#include <time.h>#define NUM 54//这个简单,用一维数组随机生成54个不相同的数字,按下标顺序存入order数组//然后呢,order数组的值又作为pk数组的下标,取出扑克牌,实现随机发牌void main(){//变量定义区域,在下面开始定义程序中用到的各种变量int split_num=24,split_i; //后面用,不可删除char split_line=''; //后面用,不可删除,可更改为其他符号char pk[NUM][6]={{"\3 A"},{"\3 2"},{"\3 3"},{"\3 4"},{"\3 5"},{"\3 6"},{"\3 7"},{"\3 8"},{"\3 9"},{"\3 10"},{"\3 J"},{"\3 Q"},{"\3 K"}, {"\4 A"},{"\4 2"},{"\4 3"},{"\4 4"},{"\4 5"},{"\4 6"},{"\4 7"},{"\4 8"},{"\4 9"},{"\4 10"},{"\4 J"},{"\4 Q"},{"\4 K"}, {"\5 A"},{"\5 2"},{"\5 3"},{"\5 4"},{"\5 5"},{"\5 6"},{"\5 7"},{"\5 8"},{"\5 9"},{"\5 10"},{"\5 J"},{"\5 Q"},{"\5 K"}, {"\6 A"},{"\6 2"},{"\6 3"},{"\6 4"},{"\6 5"},{"\6 6"},{"\6 7"},{"\6 8"},{"\6 9"},{"\6 10"},{"\6 J"},{"\6 Q"},{"\6 K"}, {"大王"},{"小王"}};int i,j,k;int rand_num,rand_order[NUM];//变量定义区域结束//业务处理区域,下面开始处理程序各种业务运算srand((int)time(NULL)); //用当前时间作为随机种子//先随机生成54个数字,依次存入一维数组rand_order中,既然随机生成,那就是并不一定连续哦,目的就是要不连续的,//才能实现后面pk数组时达到随机发牌的效果rand_order[0]=rand()%NUM+1;for(i=1;i<NUM;){rand_num=rand()%NUM+1;for(j=0;j<i;j++)if(rand_num==rand_order[j])break;if(j<i)continue;rand_order[i]=rand_num;i++;}/for(i=0;i<54;i++){if(i%10==0) printf("\n");printf("%d ",rand_order[i]);}///业务运算处理结束//输出控制区域,下面集中处理各种输出//注意:如果业务处理区域临时用到一些输出提示,可以不受限制//现在你可以在下面模拟输出随机发扑克牌了哦,你把随机方法应用到给你定义的pk数组就行。
//比如,我采用随机数取出来一个,然后把这张牌发出去,同时清除这张牌单元为\0,保证后面再随机取到的话,我判断这张牌还在不?如果不在了,是\0,那就重新抽取k=1;printf("第%d人的牌是:",k);for(i=0;i<54;i++){printf("%-6s",pk[rand_order[i]-1]);//pk[ ]中括号里面是rand_order[i]-1,为啥?因为rand_order[ ]数组里存储的是1-54的随机数字,而pk[ ]要取每个单元值的话,下标要从0-53,刚好错位一个数字1,所以减去1,是单元值减去1,不是rand_order[i-1]哦,切记,理解哦。

if((i+1)%12==0)//除以12是因为给一个人要发12张牌,发完后就要换行了,接着给下一个人发牌{printf("\n");if(++k<=4)printf("第%d人的牌是:",k);elseprintf("\n剩余的6张底牌是:");}}//还可以判断大小王在那个人的手里,请自己补充代码//下面固定输出版权信息//个人根据情况不同,请修改成自己的信息printf("\n\n");//我是分割线for(split_i=1;split_i<=split_num;split_i++)printf("%c",split_line);printf("\n");printf(" 班级:XXXXXXX\n");printf(" 姓名:XXXXXXX\n");printf(" 学号:XXXXXXX\n");printf(" 系部:信息工程系\n");//我是分割线for(split_i=1;split_i<=split_num;split_i++)printf("%c",split_line);printf("\n");getchar();getchar();}下面是采用随机下标+清空扑克牌存储单元的方式#include "stdio.h"#include "stdlib.h"#include <time.h>#include "string.h"//请大家感觉下这个扑克牌模拟发牌程序//这里面因为用到了数组的测长,赋值等函数//大家暂时理解一下//大家编写程序的时候,采用在一维整型数组中先生成54个随机数的方式,然后联合pk数组,输出每个人的12张牌和6张底牌//需要参考我给你的pk.c这个程序原理void main(){//变量定义区域,在下面开始定义程序中用到的各种变量int split_num=24,split_i; //后面用,不可删除char split_line=''; //后面用,不可删除,可更改为其他符号char pk[54][6]={{"\3 A"},{"\3 2"},{"\3 3"},{"\3 4"},{"\3 5"},{"\3 6"},{"\3 7"},{"\3 8"},{"\3 9"},{"\3 10"},{"\3 J"},{"\3 Q"},{"\3 K"},{"\4 A"},{"\4 2"},{"\4 3"},{"\4 4"},{"\4 5"},{"\4 6"},{"\4 7"},{"\4 8"},{"\4 9"},{"\4 10"},{"\4 J"},{"\4 Q"},{"\4 K"},{"\5 A"},{"\5 2"},{"\5 3"},{"\5 4"},{"\5 5"},{"\5 6"},{"\5 7"},{"\5 8"},{"\5 9"},{"\5 10"},{"\5 J"},{"\5 Q"},{"\5 K"},{"\6 A"},{"\6 2"},{"\6 3"},{"\6 4"},{"\6 5"},{"\6 6"},{"\6 7"},{"\6 8"},{"\6 9"},{"\6 10"},{"\6 J"},{"\6 Q"},{"\6 K"},{"大王"},{"小王"}};int i,j,k;//变量定义区域结束//业务处理区域,下面开始处理程序各种业务运算//下面测试输出这54张牌/for(i=1;i<=54;i++){printf("%s ",pk[i-1]);if(i%13==0)printf("\n");}printf("\n%d\n",strlen(strcpy(pk[0],"\0")));///业务运算处理结束//输出控制区域,下面集中处理各种输出//注意:如果业务处理区域临时用到一些输出提示,可以不受限制//现在你可以在下面模拟输出随机发扑克牌了哦,你把随机方法应用到给你定义的pk数组就行。
//比如,我采用随机数取出来一个,然后把这张牌发出去,同时清除这张牌单元为\0,保证后面再随机取到的话,我判断这张牌还在不?如果不在了,是\0,那就重新抽取j=1;k=1;for(;1;){srand((int)time(0)); //用当前时间作为随机种子printf("第%d人的牌是:",k);for(;1;){i=rand()%54+1;if(strlen(pk[i-1],"\0")==0)continue;printf("%-6s",pk[i-1]);strcpy(pk[i-1],"\0"); //这里清空已发了的牌的空间j++;if(j%13==0) //除以13是因为给一个人要发12张牌,那发到第13张牌的时候,就要停止了{printf("\n");break;}}j=1;k++;if(k==5)break;}printf("\n剩余的6张底牌是:");for(i=1;i<55;i++){if(strlen(pk[i-1],"\0")!=0)printf("%-6s",pk[i-1]);}printf("\n");//下面固定输出版权信息//个人根据情况不同,请修改成自己的信息printf("\n\n");//我是分割线for(split_i=1;split_i<=split_num;split_i++)printf("%c",split_line);printf("\n");printf(" 班级:XXXXXXX\n");printf(" 姓名:XXXXXXX\n");printf(" 学号:XXXXXXX\n");printf(" 系部:信息工程系\n");//我是分割线for(split_i=1;split_i<=split_num;split_i++)printf("%c",split_line);printf("\n");getchar();getchar();}
发牌扑克牌自编模拟程序游戏(数组随机输出发牌扑克牌)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息