扑克牌洗牌发牌过程模拟选编.doc

珠海学院 课 程 设 计 报 告 学院、系: 吉林大学珠海学院计算机科学与技术系 专业名称: 设计科目 学生姓名: 指导教师: 完成时间: 2015年5月5日 扑克牌洗牌发牌过程模拟 编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。对每个人的牌要按桥牌的规则输出。即一个人的牌要先按牌的花色(顺序为梅花、方块、红心和黑桃)进行分类,同一类的牌要再按A、K、Q、J、…、3、2牌的大小顺序排列。另发牌应按四个人的顺序依次分发。 设计任务与目标 学习方案设计与论证 colour PX[])。牌的显示包括花色和数字。用switch函数把原来的flag和value成员赋值给ASCFlag和ASCValue成员,让ASCFlag和ASCValue成员打印出ASCII码花色和符号。 1.2.5 设置四个数组A[u],?B[u],?C[u],?D[u]来分别表示四个人的牌。然后模拟出52张牌。(2)洗牌。(3)发牌:发牌时是根据顺序轮流分给四个人?(4)排序。将牌发好之后再根据排序函数分别对四个人的牌进行花色和大小的排序。(5)输出。即用print函数将牌输出。结束。 1.3 程序框图或流程图,程序清单与调用关系 全部源程序清单 // #include stdafx.h #includecstdlib #includestring #includetime.h #includeiostream using namespace std; typedef class CARD { public: int flag; //扑克的类型 int value; //扑克编号 string ASCFlag; //用ASCII码表示扑克花印 string ASCValue; //表示扑克符号 }Card; class pu_ke { public: pu_ke(); //初始化扑克 void shuffle(); //洗牌 void deal(); //扑克分牌 void sort(Card PX[]); //排序扑克 void colour(Card PX[]); //給扑克印色 void print(); //扑克输出 Card P1[13],P2[13],P3[13],P4[13]; private: Card P[52]; Card swap; }; pu_ke::pu_ke() //初始化扑克 { int Flags[4]={1, 2, 3,4}; int Value[13]={1,2,3,4,5,6,7,8,9,10,11,12,13}; for(int i=0;i13;i++) { P[i].flag = Flags[0]; P[i].value = Value[i]; } for(int i=13;i26;i++) { static int temp0=0; P[i].flag = Flags[1]; P[i].value = Value[temp0++]; } for(int i=26;i39;i++) { static int temp1=0; P[i].flag = Flags[2]; P[i].value = Value[temp1++]; } for(int i=39;i52;i++) { static int temp2=0; P[i].flag = Flags[3]; P[i].value = Value[temp2++]; } } void pu_ke::shuffle() //交换下标数组 { int index; int value; srand((int)time(0)); /* 每次发牌的时候任意分配待交换的数据 */ for(index = 0; index 52; index ++){ value = rand() % 52; swap = P[index]; P[index] = P[value]; P[value] = swap; } } void pu_ke::deal() //发牌 { for(int i=0,j=0;i52;i++,j++) { P1[j] = P[i++]; P2[j] = P[i++]; P3[j] = P[i++]; P4[j] = P[i];

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档