欢迎来到天天文库
浏览记录
ID:10257398
大小:53.50 KB
页数:5页
时间:2018-06-14
《c++课程设计 扑克牌游戏》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C++课程设计实验报告1、程序名称:扑克牌游戏2、程序设计功能:创建一副扑克牌,并完成洗牌等相关操作。3、程序设计要求:(1)增加大小王。(2)删去一张指定的牌后,余牌显示。(3)创建一副扑克,显示一副扑克牌,洗牌,一次分发给四个人并显示。程序设计过程中根据设计思想添加功能:(1)根据洗牌参数,添加入可以让玩牌者控制洗牌次数的功能。(2)在可以完成每人删除一张牌的功能基础上,增加可以删除一轮牌(也就是同时每人删除一张牌)的功能。4、对题目的分析与注释总体分析:根据题目的设计要求,增加满足要求所需要的函数,实现相应功能,通过合
2、理安排调用过程,实现题目要求的功能。注释:(已在程序设计过程中指出)5、增加功能的设计思路(1)增加大小王实现函数:Deck::MakeDeck()PlayingCard::CardMake()Deck::MakeDeck()将参数nLastDelt由51增加到53,生成一副扑克牌的54张牌(0~54),实际上是多分配了两张大小王的空间,控制参数nLastDelt的变化,再通过调用函数PlayingCard::CardMake()将参数传递给nNum,为每张牌(包括大小王)赋予正确的面值和花色,由此生成一副完整的牌。其中对大
3、小王的赋值是添加的功能,具体实现过程如下:voidPlayingCard::CardMake(intnNum)//跟据nNum生成一张扑克牌,nNum不同,生成的面值花色{inti=0;charj;if(nNum==53)//生成大王{strcpy(achFace,"B");chSuit=2;nValue=15;}if(nNum==52)//生成小王{strcpy(achFace,"S");chSuit=1;nValue=14;}由此段程序可知,参数nLastDelt是由大到小变化的,所以54张牌中首先生成大小王,至于其他牌
4、的生成,是课本源程序上自带的,牌的花色由相应的ASCII码来赋值。(2)删去一张指定的牌后,余牌显示。实现函数:Deck::DelOne()PlayingCard::ShowCard()Deck::Delete()通过switch语句满足case的条件后,开始进行删除一张牌(调用函数Deck::DelOne()),系统会询问要删除第几个人的第几张牌,在这里考虑到用户可能会误输入大于人数或大于个人牌数的错误数字,因此设计了如果参数不符合要求就返回选择菜单这一步。之后调用Delete()函数将牌删除。Delete()函数为新增函
5、数,具体如下:voidDeck::Delete(intm,intn)//删除一张,n指删除排的位置(第几张牌){for(inti=n;i<13;i++)card[m][i]=card[m][i+1];card[m][13]=PlayingCard();//将删除的后面的牌依次向前移,并为最后一张赋空,虽然最后一张赋空但其空间仍存在,因此运行时会显示问号。}将牌删除以后,调用ShowCard()显示删除的那张牌,并显示剩余的那张牌以及未删除的人的所有牌。(1)创建一副扑克,显示一副扑克牌,洗牌,一次分发给四个人并显示。实现函数
6、:DeckMakeDriver()Deck::MakeDeck()PlayingCard::CardMake()Deck::ShowDeck()Deck::DeckShuff()Deck::SendDeck()PlayingCard::ShowCard()主函数中直接调用函数DeckMakeDriver()来实现,其中发牌函数SendDeck()为新增函数,具体实现过程如下:voidDeck::SendDeck()//为四个玩家分牌并显示{intm=0,n=0,p=0,q=0;for(inti=0;i<54;i++){swi
7、tch(i%4){case0:card[0][m]=m_cardarray[i];m++;break;case1:card[1][n]=m_cardarray[i];n++;break;case2:card[2][p]=m_cardarray[i];p++;break;case3:card[3][q]=m_cardarray[i];q++;break;}}for(inta=0;a<2;a++){cout<8、].ShowCard();}cout<
8、].ShowCard();}cout<
此文档下载收益归作者所有