资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
/*preprocessor directives*#include #include #include #include #include #include / used to seed the random number generator/*扑克类*class Playing_Card friend class PerDeck;public:int m_Value; /扑克的实际面值,用整型值表示,从1开始,113char m_Face3; /扑克的数字大小,用字符串的形式表示,为A,2,3,.,10,J,Q,Kint order;char m_Suit; /扑克的花色(黑、红、梅、方)public:Playing_Card();/ 构造函数,初始化扑克牌对象,实际上是将对象清零void showcard();/ 显示扑克牌对象的面值,花色void Card_Make(int); /为一张扑克牌对象赋予特定的面值和花色 void AskPaidui(); /询问是否进行扑克小人游戏void Paidui(); /扑克小人排序游戏int getCount();/* 一副扑克(54张)*class Deckfriend class PerDeck;friend class PlayDEck;public:Playing_Card m_cardarray54,temp;/ 一副扑克牌有54张扑克牌组成(包括大小王)int m_lastdelt; /标记这副扑克牌删除的张数public:Deck();/ 构造函数,初始化一副扑克牌对象,实际上是将其内的54张扑克牌清零void MakeDeck();/ 生成一副扑克,即对其内的54张扑克牌赋予正确的面值及花色void ShowDeck();/ 显示余下的所有的扑克牌void DeckShuff(int);/ 洗牌,其参数是洗牌的次数/void Remove_Card();/ 将删除的那张扑克牌的内容清零,使这张牌在屏幕上显示不出来;/mistakenly using a nonexistant card/can bu used to send a card ?/*某个人拿的牌*class PerDeckpublic:Playing_Card m_Card20,temp;/最多有20张牌int nNum;/实际张数PerDeck()void MakePerDeck(Deck&,int);/对象初始化,参数为指定的那副牌及实际赋值个数void Show();/ 显示void SortFace();/按面值排序void SortSuit();/按花色排序void Delete(int n);/删除序号为n的那一张;/*四个人玩牌的过程*class PlayDeckpublic :PerDeck m_deck4;/一共是4个人玩牌int delt,sort;public: PlayDeck() void PlayCard(Deck&);/用指定的那副牌对四个人分别赋值 void ShowAll();/ 显示 void DeleteOne(int row,int column);/删除一张,参数为第row个人的第column那一张 void DeleteAll(int,int,int,int);/删除一轮,参数分别代表4个人各删除哪一张 void SortDeckFace();/对整副牌按面值排序 void SortDeckSuit();/对整副牌按花色排序 void AskSort();/询问排序方法 void AskDelete();/询问删除方法 int get_int(); /获得一个整数 ;/*/*prototypes* void Program_Init();/ 程序初始化,输出初始化信息int main();void Center_Text(char );/ 将参数(字符串)显示在屏幕的中间int get_number();/ 接收用户输入的数值,作为函数值返回int choose_number();/判断选择是删除一张还是一轮的办法char Get_Key();/ 获得一个字符,作为函数值返回void DeckMakeDriver();/ 主要算法,调用多个函数,执行声成牌,洗牌删除等操作int getRandInt(int min, int max);/ 取得两参数见的随机值void prog_close();/ 暂停程序运行,查看中间运行结果char continue_quit();/*Main*int main() srand( (unsigned)time( NULL ) );/ 初始化随机数种子int Card_Number = 0;Program_Init(); / 显示程序初始化信息DeckMakeDriver();/ 调用函数的主要算法,包含程序的主要操作过程prog_close();/ 暂停程序的运行,供用户查看运行结果return 1;/ 结束Deck : Deck()/ 初始化一副牌,将54张牌清零int lastdelt = 0;int i;for(i=0;i=53;i+)m_cardarrayi = Playing_Card(); /构造一个临时对象赋值 void Deck:DeckShuff( int times) /洗牌,参数为次数int x, split; /split是分开成两部分的位置,如上部分、下部分Center_Text( 开始洗牌 );cout endl;for(x=0;x=times;x+)/ 开始循环,每循环一次将牌全部重排一遍split = getRandInt(20,35);/ 随机选取split的值Deck topdeck;/ 生成两副扑克牌对象Deck bottomdeck;int i;int bottomdeckindex = 1;int topdeckindex = 1;for(i=0;im_cardarrayi;topdeckindex+;i+;for(i=(split);im_cardarrayi;bottomdeckindex+;i+;int deckoutindex = 0;int numcardstomovetop;int numcardstomovebottom;int j;int h = 0;bottomdeckindex = 54 - split;/下部分扑克牌的张数topdeckindex =split;/ 上部分扑克牌的张数while(deckoutindex = 53)numcardstomovetop = getRandInt(2,7);/从上部分抽取的张数,是2-7之间的随机数numcardstomovebottom = getRandInt(2,7);/ 在下部分扑克牌中随机选择27之间的随机数/*将下部分的牌赋值给原来的那副牌*/for(j=0;j 0) /当下部分那副牌没有循环完时继续 /*从下部分那副牌的最后张数开始,依次向c初始的扑克牌赋值*/this-m_cardarraydeckoutindex = bottomdeck.m_cardarraybottomdeckindex;deckoutindex+;bottomdeckindex-;for(h=0;h 0) & (deckoutindex m_cardarraydeckoutindex=to
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号