扑克牌洗牌发牌过程模拟课程设计

上传人:汽*** 文档编号:435844058 上传时间:2023-09-10 格式:DOC 页数:25 大小:685KB
返回 下载 相关 举报
扑克牌洗牌发牌过程模拟课程设计_第1页
第1页 / 共25页
扑克牌洗牌发牌过程模拟课程设计_第2页
第2页 / 共25页
扑克牌洗牌发牌过程模拟课程设计_第3页
第3页 / 共25页
扑克牌洗牌发牌过程模拟课程设计_第4页
第4页 / 共25页
扑克牌洗牌发牌过程模拟课程设计_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《扑克牌洗牌发牌过程模拟课程设计》由会员分享,可在线阅读,更多相关《扑克牌洗牌发牌过程模拟课程设计(25页珍藏版)》请在金锄头文库上搜索。

1、珠海学院课 程 设 计 报 告学院、系:吉林大学珠海学院计算机科学与技术系专业名称:计算机科学与技术设计科目:程序设计基础课程设计学生姓名:指导教师:完成时间:2015年5月5日第一章扑克牌洗牌发牌过程模拟编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。对每个人的牌要按桥牌的规则输出。即一个人的牌要先按牌的花色(顺序为梅花、方块、红心和黑桃)进行分类,同一类的牌要再按A、K、Q、J、3、2牌的大小顺序排列。另发牌应按四个人的顺序依次分发。1.1 设计任务与目标模拟人工洗牌的题目,用自己所学的C+进行编写,并且完善随机洗牌算法,以及排序算法的优化,学习习课程的学习经验,加强自己的动手实践能

2、力,增加知识,强化学习,是自己获得进步。1.2 方案设计与论证1.2.1 根据题目要求,设置一个结构体card,因为一张牌有花色和数字的不同,所以结构体card包括了flag和value两个成员,其中flag用整型1,2,3,4来分别表示梅花,方块,红心和黑桃四种花色;value用1,2,3,4,5,6,7,8,9,10,11,12,13来表示牌上的数字。因此一张牌可以由flag和value的组合来唯一确定。在ASCFlag和ASCValue分别来表示ASCII码的扑克花印以及扑克符号。洗牌(shuffle)。由于洗牌时牌的顺序是随机的,所以用到了voidsrand(unsignedseed)

3、和intrand(void)函数。通过srand函数设置rand函数所用得到随机数产生算法的种子值来不断改变rand函数的随机数的启动种子值,以产生最佳的随机数。又由于相同的种子后面的rand()函数会出现一样的随机数。所以为了防止随机数每次重复常常使用系统时间来初始化,即使用time函数来获得系统的时间,将time_t型数据转化为(unsigned)型再传给srand函数,即srand((unsigned)time(&t);而在这里所用的则是srand(time(NULL),直接传入一个空指针。用0到51的整数分别对应52张牌随机产生0到51之间的一个整数,将该整数所对应的那张牌与0对应的那

4、张牌交换,然后随机产生1到51之间的一个整数,重复该过程,使他们仅交换数组下标,从而不改变扑克符号和花印。1.2.3 排序(sort)。排序包括按花色排序和按大小排序。在按花色排序中,利用sort函数,根据冒泡排序法,从第一张牌开始依次与其后面的牌比较flag的大小,若第一张牌的flag大于后面的,则两者交换,否则继续。同理:在按照大小排序时,按照冒泡排序法,大的值在前,小的在后。而在花色排好之后,只需要在某种花色的内部进行大小排序即可。1.2.4 牌的显示(colour PX)。牌的显示包括花色和数字。用switch函数把原来的flag和value成员赋值给ASCFlag和ASCValue成

5、员,让ASCFlag和ASCValue成员打印出ASCII码花色和符号。1.2.5 设置四个数组Au,Bu,Cu,Du来分别表示四个人的牌。然后模拟出52张牌。(2)洗牌。(3)发牌:发牌时是根据顺序轮流分给四个人(4)排序。将牌发好之后再根据排序函数分别对四个人的牌进行花色和大小的排序。(5)输出。即用print函数将牌输出。结束。1.3 程序框图或流程图,程序清单与调用关系1.4 全部源程序清单/ 扑克3.cpp : 定义控制台应用程序的入口点。/#include stdafx.h#include#include#include#includeusing namespace std;typ

6、edef class CARDpublic:int flag;/扑克的类型int value;/扑克编号string ASCFlag;/用ASCII码表示扑克花印string ASCValue;/表示扑克符号Card;class pu_kepublic:pu_ke();/初始化扑克void shuffle();/洗牌void deal();/扑克分牌void sort(Card PX);/排序扑克void colour(Card PX);/給扑克印色void print();/扑克输出Card P113,P213,P313,P413;private:Card P52;Card swap;pu_

7、ke:pu_ke()/初始化扑克int Flags4=1, 2, 3,4;int Value13=1,2,3,4,5,6,7,8,9,10,11,12,13;for(int i=0;i13;i+)Pi.flag = Flags0;Pi.value = Valuei;for(int i=13;i26;i+) static int temp0=0;Pi.flag = Flags1;Pi.value = Valuetemp0+;for(int i=26;i39;i+)static int temp1=0;Pi.flag = Flags2;Pi.value = Valuetemp1+;for(int

8、i=39;i52;i+)static int temp2=0;Pi.flag = Flags3;Pi.value = Valuetemp2+;void pu_ke:shuffle()/交换下标数组int index; int value; srand(int)time(0); /* 每次发牌的时候任意分配待交换的数据 */ for(index = 0; index 52; index +) value = rand() % 52; swap = Pindex; Pindex = Pvalue; Pvalue = swap; void pu_ke:deal()/发牌for(int i=0,j=0

9、;i52;i+,j+)P1j = Pi+;P2j = Pi+;P3j = Pi+;P4j = Pi;void pu_ke:colour(Card PX)/扑克印色char a,b,c,d;a=5,b=4,c=3,d=6;for(int i=0;i13;i+)switch(PXi.flag)case 1: PXi.ASCFlag = a;break;case 2: PXi.ASCFlag = b;break;case 3: PXi.ASCFlag = c;break;case 4: PXi.ASCFlag = d;break;switch(PXi.value)case 1: PXi.ASCVal

10、ue = A;break;case 2: PXi.ASCValue = K;break;case 3: PXi.ASCValue = Q;break;case 4: PXi.ASCValue = J;break;case 5: PXi.ASCValue = 10;break;case 6: PXi.ASCValue = 9;break;case 7:PXi.ASCValue = 8;break;case 8: PXi.ASCValue = 7;break;case 9: PXi.ASCValue = 6;break;case 10: PXi.ASCValue = 5;break;case 11

11、: PXi.ASCValue = 4;break;case 12: PXi.ASCValue = 3;break;case 13: PXi.ASCValue = 2;break;void pu_ke:print()/输出结果cout玩家一:玩家二:玩家三:玩家四:endl;for(int i=0;i13;i+)coutP1i.ASCFlag P1i.ASCValueP2i.ASCFlag P2i.ASCValueP3i.ASCFlag P3i.ASCValueP4i.ASCFlag P4i.ASCValueendl;void pu_ke:sort(Card PX)/用冒泡排序法排序Card t

12、emp;for(int pass=1;pass13;pass+)/先排花色for(int i=0;iPXi+1.flag)temp = PXi;PXi = PXi+1;PXi+1 = temp;int temp1;int temp2;int temp3;int temp4;for(int i=0;i13;i+)/分离花色if(PXi.flag=1)temp1 = i;if(PXi.flag = 2)temp2 = i;if(PXi.flag = 3)temp3 = i;if(PXi.flag = 4)temp4 = i;for(int pass=1;passtemp1+1;pass+)/对扑克编号进行排序(冒泡法)for(int j=0;jPXj+1.value)temp = PXj;PXj = PXj+1;PXj+1 = temp;

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

当前位置:首页 > 办公文档 > 工作计划

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