斗地主洗牌发牌报告

上传人:cl****1 文档编号:498440785 上传时间:2023-02-10 格式:DOC 页数:9 大小:187.50KB
返回 下载 相关 举报
斗地主洗牌发牌报告_第1页
第1页 / 共9页
斗地主洗牌发牌报告_第2页
第2页 / 共9页
斗地主洗牌发牌报告_第3页
第3页 / 共9页
斗地主洗牌发牌报告_第4页
第4页 / 共9页
斗地主洗牌发牌报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《斗地主洗牌发牌报告》由会员分享,可在线阅读,更多相关《斗地主洗牌发牌报告(9页珍藏版)》请在金锄头文库上搜索。

1、斗地主洗牌发牌报告摘要1. 实验目的编斗地主洗发牌的程序可以让我们了解随机数的生成,全局变量和指针的用 法,熟悉线性表的基本操作,以及排序的基本思路和方法。2. 实验方法本程序主要是利用全局变量来统筹整个程序,辅之的是指针变量。总共有三个 子函数,分别为洗牌子函数,排序子函数,发牌子函数。洗牌这个子函数利用了随 机数的生成,而主函数通过指针变量把生成的随机数赋值给全局变量,再通过冒泡 排序法对全局变量进行排序,最后按编号换算进行输出。3. 实验结果由运行出来的结果可以看出,此洗牌发牌符合斗地主的规则,是合法的。随机 发的牌没有重复,没有遗漏,且按照斗地主的牌的大小进行排列,即从小到大分别 为:

2、3,4,5,6,7, & 9,10,J,Q,K,A,2,小鬼,大鬼。所以此程序是正确的,成功的。 内容一问题重述设计一个程序生成一副总共54 张的牌,来给三个玩家发牌,发给每位玩家 17 张牌,剩下三张作为底牌。每次发出的牌都不一样,而且按从小到大的顺序显示每 个玩家拿到的牌和底牌。二算法描述本程序除了运用一些条件语句,判断语句之外,主要运用了两个算法,一个是 随机数的生成,一个是冒泡排序法。随机数的生成的复杂度为O(N),其中N=54,这是在运行结果最佳的状况下才 会出现的,一旦生成的随机数相同的话,通过 if 语句会重新生成随机数,直到生 成不同的随机数。冒泡排序法的空间复杂度为0(1),

3、时间复杂度为O(N2),本程序中的N为54, 而且运行了两次冒泡排序法,分别为牌数和花色进行排序,所以空间复杂度为2X 0(1),时间复杂度为2X0(542)。三变量说明a17,b17,c17,d3 为全局变量的数组,分别存放玩家一,二,三的牌, 以及三个底牌。四函数与思路说明本程序总共有3个子函数,1个主函数,其中3个子函数分别为Xipai ()子函 数, Paxu() 子函数, Fapai() 子函数。Xipai()这个子函数利用了 srand(time(O),rand()来生成随机数1到54。当 然,为了使生成的数都不一样,还使用if的判断语句。主函数把洗牌得到的 54 位随机数分成四组

4、数组赋值到全局变量 a17,b17,c17,d17当中去,然后通过Paxu(),Fapai()这两个子函数来进行 排序输出。数组中的数为1到54的随机排列,而Paxu ()子函数首先把1到52的数对应化 成1到13的数,即是1到13对应化成1到13;14到26对应化成1到13;如此类 推而53,54就对应化成16,17。然后把已经化成1,2的数再对应化成14,15 的数,其化法如下:3 - 3 - 3; 26 - 13 - 13; 14 - 1 - 14; 28 -2 f 15; 53 - 16然后用冒泡排序法对变化后的3到17的数进行从小到大的排 序,而最初的全局变量的数组也跟着排序,最后也

5、是用冒泡排序法对相同牌数的花 色进行从小到大的排序,即方块,梅花,红桃,黑桃。Fapai()这个子函数就是把排号序的数进行换算输出。其换算输出如下:12345678910111213方块方块方块方块方块方块方块方块方块方块方块方块方块A2345678910JQK1415 23242526 40 525354梅花A梅花2 梅花10梅花J梅花Q梅花K 红桃A 黑桃K小鬼大鬼五程序执行结果1.第一次运行结果第一位的牌是:梅花 3红桃 3方块 4黑桃 4方块 5红桃 5黑桃 5方块 7红桃 7黑桃7红桃 10方块 J梅花 Q梅花 K黑桃 K方块 2黑桃 2第二位的牌是:方块 3梅花 4红桃 4方块 6

6、黑桃 6梅花 8红桃 9黑桃 9方块 10黑桃10红桃J黑桃 J方块K方块 A黑桃 A红桃 2小鬼第三位的牌是:黑桃3梅花 6红桃 6梅花 7方块 8黑桃 8梅花 9梅花 10 梅花 J方块 Q红桃 Q黑桃Q红桃 K梅花 A红桃 A梅花 2大鬼底牌是:梅花 5红桃 8方块 92.第二次运行结果:第一位的牌是:红桃 3梅花J方块 4红桃 J梅花 5 黑桃 J红桃 5梅花 Q方块 6 红桃 K梅花 6 方块A方块 7 红桃 A红桃 7梅花 2红桃 10第二位的牌是:方块 3红桃 4黑桃 4黑桃 6梅花 7红桃 8方块 9梅花 9红桃 9黑桃 9 方块 10 梅花 10 方块 J 红桃 Q 黑桃 A

7、 红桃 2 大鬼第三位的牌是:黑桃 3 梅花 4 方块 Q 黑桃 Q方块 5方块 K黑桃 5 梅花 K红桃 6黑桃 K黑桃 7 梅花 A方块 8 梅花 8黑桃 10方块 2黑桃 2底牌是:梅花 3 黑桃 8小鬼3.第三次运行结果:第一位的牌是:梅花 3 红桃 3黑桃 4红桃 5梅花 6梅花 7红桃 7黑桃 7梅花 8红桃 8 红桃 10方块 J黑桃 J梅花 K梅花 A梅花 2大鬼第二位的牌是:方块 3 方块 4方块 5梅花 5黑桃 5黑桃 6方块 7方块 8方块 9黑桃 10 红桃 J方块 Q红桃 Q黑桃 Q方块 A红桃 A方块 2第三位的牌是:黑桃 3 梅花 4方块 6红桃 6黑桃 8梅花

8、9黑桃 9方块 10梅花 J梅花 Q 方块 K红桃 K黑桃 K黑桃 A红桃 2黑桃 2小鬼底牌是:红桃 4 红桃 9 梅花 10六结论由前面的分析得知,虽然此程序的复杂度比较大,可是其基本思路是正确的运行结果也是合法的,故本程序可以作为斗地主的洗牌发牌程序。七编程中遇到的问题以及解决方法在编程过程中,因为对指针的运用不是很熟练,所以导致运行多次都得不出正 确结果,后来在指针的基础上加上全局变量,才把这个问题解决。刚刚开始我是想 用归并排序法对每位玩家的牌进行排序的,但是运行过程中叶遇上了一些小麻烦, 后来改用冒泡排序法就轻易解决这个问题了。八附录#include#include#include

9、void Xipai();void Paixu();void Fapai();int a17,b17,c17,d3;int *p ,q;void Xipai()int m54,n54,r54,i,j=0,k;srand(unsigned)time(NULL);for(i=0;i54;i+)mi=i+1;for(i=0;i54;)k=rand()%54;if(mk!=0)ni=mk;rj+=ni;mk=0;+i;p=&r0;void Paixu(int t)int pai17,i,j=0,s,p;for(i=0;i17;i+)if(ti=0) break;for(i=0;i17&ti!=0;i+

10、)if(ti14) paii=ti;else if(ti27) paii=ti-13;else if(ti40) paii=ti-26;else if(ti53) paii=ti-39;if(ti=53) paii=16;if(ti=54) paii=17;if(paii=1) paii=14;if(paii=2) paii=15;for(i=0;i16&ti!=0;i+) for(j=i+1;jpaij)p=paii;paii=paij;paij=p; s=ti;ti=tj;tj=s;if(paii=paij&titj)p=paii;paii=paij;paij=p; s=ti;ti=tj;

11、tj=s;void Fapai(int t) int i; for(i=0;i17;i+) if(ti=0) break;for(i=0;i17&ti!=0;i+)case 0:printf( ”方块”);if(ti=1) printf(At);else if(ti=11) printf(Jt);else if(ti=12) printf(Qt);else if(ti=13) printf(Kt);else printf(%dt,ti);break;case l:printf(梅花”);if(ti-13=1) printf(At);else if(ti-l3=ll) printf(Jt);el

12、se if(ti-l3=l2) printf(Qt);else if(ti-l3=l3) printf(Kt);else printf(%dt,ti-l3);break;case 2:printf( ”红桃”);if(ti-26=l) printf(At);else if(ti-26=ll) printf(Jt);else if(ti-26=l2) printf(Qt);else if(ti-26=l3) printf(Kt);else printf(%dt,ti-26);break;case 3:printf(黑桃”);if(ti-39=l) printf(At);else if(ti-39=ll) printf(Jt);else if(ti-39=l2) printf(Qt);else if(ti-39=l3) printf(Kt);else printf(%dt,ti-39);break;case 4:if(ti%l3=l) printf(小鬼 t);else printf(大鬼t);break;void main()int i;p=&q;Xipai();fo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号