ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:1.51MB ,
资源ID:8552127      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8552127.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(南京理工大学C++课程设计扑克游戏.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

南京理工大学C++课程设计扑克游戏.docx

1、南京理工大学C+课程设计扑克游戏南京理工大学C+课程设计扑克游戏C+课程设计实验报告姓名 郑星鑫 学号 913104210332 班级9131042103 任课教师 赵琦 时间 4月12日 选择题目 扑克牌游戏 难易级别 A级 实验报告成绩 一、 程序功能简介创建一副扑克牌,并完成洗牌等操作。二课程设计要求和目的1. 增加大王和小王。2. 删去一张指定的扑克后,余牌显示。3. 创建一副扑克,显示一副扑克,洗牌,依次发给四个人并显示。4. 需要对原程序做一些修改,保留生成牌和洗牌的部分,主要是修改main函数的结构,依次为:生成牌,洗牌,发牌,然后循环显示菜单,询问是否删除一张,删除一轮,面值排

2、序,花色排序等,在main函数中定义所生成的那副牌,并将其作为参数(对象引用),所有新增类的操作均以那副牌作为数据进行运算。三. 课程设计中要解决的问题分析和调试1.首先,去掉源程序的注释,以免修改程序时自己的注释与源文件注释混淆,便于找出修改程序时可能产生的错误。2.添加大小王:修改类Deck,将一副扑克牌对象内的扑克牌个数增加两张,对这两张牌的面值及花色分别赋值“S”1(小王),“B”2(大王)。3.游戏中四个人玩牌,要新建两个类:Per_Deck类表示某个人拿的牌,Play_Deck类表示四个人玩牌的过程。Perdeck是Deck和PlayDeck的友元类。class Per_Deck

3、public: Playing_Card m_Card20; /最多有20张牌 int nNum; /实际张数 Per_Deck(); /构造函数 void MakePerDeck(Deck &,int,int); /对象初始化 void Show(); /显示 void SortFace(); /按面值排序 void SortSuit(); /按花色排序 int Delete(int n); /删除牌号为n的那张 ;/*四个人玩牌的过程*class Play_Deck public: Per_Deck m_deck4; /一共是四个人玩牌 Play_Deck(); /构造函数 void Pl

4、ayCard(Deck &); /用指定的那副牌对四个人分别赋值 void Show(); /显示 int DeleteOne(int row,int column); /删除参数为第row个人的第column张牌 void SortDeckFace(); /对整副牌面值排序 void SortDeckSuit(); /对整副牌花色排序 int s(int a); /用于调用私有数据来显示排序后的牌;4.添加人性化界面,初始运行程序时加了一个友好的界面,用p,u,k,e这四个字母拼成了中文的”扑克”二字,增加游戏的趣味性,并附带输出了自己的姓名和学号。5.在主函数中调用DeckMakeDriv

5、er()函数,通过DeckMakeDriver()中的一个do循环控制主菜单的循环出现,并对可能出现的玩家输入问题进行分析修改。5.进入四个不同功能的游戏界面时,操作后询问是否显示被操作后的牌,再询问是否返回主菜单,否的话退出游戏。6.在对玩家的牌的面值以及花色排序时,在类PlayDeck()中增加int s()函数,用于调用私有数据来显示排序完后的牌。四、 源程序结构流程框图与说明 开始生成一副新牌输入洗牌次数进行洗牌依次输入给四位玩家的牌并显示主菜单1删除某位玩家一张牌是否显示牌显示被操作后的牌是否回主菜单是是2删除各位玩家一张牌是否显示牌显示被操作的牌是否回主菜单是是4按玩家牌的花色排序

6、是否显示牌显示操作后的牌是是否回主菜单是按玩家牌的面值排序是否显示牌显示操作后的牌是否回主菜单是结束5显示各位玩家的牌 五.源程序代码 以及草稿原件#include #include #include #include #include #include void Program_Init(); int main();void Center_Text(char ); int get_number(); char Get_Key(); void DeckMakeDriver(); int getRandInt(int min, int max); void prog_close();class

7、PerDeck; /增加 class Playing_Card private: int m_Value; char m_Face3; char m_Suit ; public: Playing_Card(); void showcard(); void Card_Make(int); friend class PerDeck; /增加; class Deck private: Playing_Card m_cardarray54; / int m_lastdelt;public: Deck(); void MakeDeck() ; void Deal_One(); void ShowDeck

8、(); void DeckShuff(int); void Remove_Card(); friend class PerDeck; /增加;class PerDeck /增加PerDeck Playing_Card mCard20; int nNum;public: PerDeck() void MakePerDeck(Deck& ,int); void Show(); void SortFace(); void SortSuit(); int Delete(int n); /endclass PlayDeck /增加PlayDeck PerDeck mDeck4;public: PlayD

9、eck() void PlayCard(Deck&); void Show(); int DeleteOne(int row,int column); int DeleteAll(int, int, int, int); void SortDeckFace(int); void SortDeckSuit(int); void s(int); /endvoid PerDeck:MakePerDeck(Deck & d,int a) /PerDeck成员的函数 nNum=a; int i=0; while(ia&d.m_lastdelt!=53) mCardi+=d.m_cardarray+d.m

10、_lastdelt;void PerDeck:Show() int nNewLine=0; Center_Text(此玩家的牌:); coutendl; while(nNewLinenNum) if(nNewLine%5=0)coutendl; mCardnNewLine+.showcard(); coutendl;void PerDeck:SortFace() Playing_Card k; for(int i=0;inNum;i+) for(int j=0;jmCardj+1.m_Value) k=mCardj; mCardj=mCardj+1; mCardj+1=k; void PerD

11、eck:SortSuit() Playing_Card k; for(int i=0;inNum;i+) for(int j=0;jmCardj+1.m_Suit) k=mCardj; mCardj=mCardj+1; mCardj+1=k; int PerDeck:Delete(int n) if(nnNum) cout超出这副牌张数endl; return nNum; else cout.width(5); cout 删除牌:; mCardn-1.showcard(); while(n-1nNum) mCardn-1=mCardn+; return -nNum; /endvoid Play

12、Deck:PlayCard(Deck & k) /PlayDeck的成员函数 int a,b,c,d; Center_Text(请依次输入给四位玩家的牌数(总张数小于等于54)。); coutabcd; if(a+b+c+d54) Center_Text(张数超过牌的张数,退出游戏。); exit(0); mDeck0.MakePerDeck(k,a); mDeck1.MakePerDeck(k,b); mDeck2.MakePerDeck(k,c); mDeck3.MakePerDeck(k,d);void PlayDeck:Show() Center_Text(玩家1); coutendl

13、; mDeck0.Show(); Center_Text(玩家2); coutendl; mDeck1.Show(); Center_Text(玩家3); coutendl; mDeck2.Show(); Center_Text(玩家4); coutendl; mDeck3.Show();int PlayDeck:DeleteOne(int row,int column) mDeckrow-1.Delete(column); return 1;int PlayDeck:DeleteAll(int a,int b,int c,int d) mDeck0.Delete(a); mDeck1.Del

14、ete(b); mDeck2.Delete(c); mDeck3.Delete(d); return 1; void PlayDeck:SortDeckFace(int b) mDeckb-1.SortFace();void PlayDeck:SortDeckSuit(int b) mDeckb-1.SortSuit();void PlayDeck:s(int a) mDecka-1.Show(); /endl int main() srand( (unsigned)time( NULL ) ); int Card_Number = 0; Program_Init(); DeckMakeDri

15、ver(); prog_close(); return 1; Playing_Card:Playing_Card() int i; for(i=1;i=3;) m_Facei = ; i+; m_Suit = ; m_Value = 0;void Program_Init() Center_Text(扑克牌游戏); cout endl n ; Center_Text(by YoriFish); Center_Text(单击 继续); cin.get();char Get_Key() char x; x = cin.get(); cout endl; return x;void Playing_

16、Card:showcard() cout ; cout m_Face ; cout.width(1); cout m_Suit; cout ; void Center_Text(char ShellText80) int length; int center; length= strlen(ShellText); center = (80 - length)/2; for(;center!=0;center-) cputs( ); cputs(ShellText); coutendl; /增加 int get_number() int Input_Integer = 0; Center_Tex

17、t(Please enter an integer between 0 and 53. 54 to quit.); / cout Input_Integer; return Input_Integer;void Playing_Card:Card_Make(int num) int i = 0; char j; int face_num = num % 13; if(num/13=4) /增加 switch(face_num) case 0: strcpy(m_Face, S);break; case 1: strcpy(m_Face, B);break; else /增加 switch(fa

18、ce_num) case 0: strcpy(m_Face, A);break; case 9: strcpy(m_Face,10);break; case 10: strcpy(m_Face, J);break; case 11: strcpy(m_Face, Q);break; case 12: strcpy(m_Face, K);break; default: j = char(face_num + 49); if(i3) m_Facei = ; i+; m_Facei = j;i+; m_Facei = NULL; break; if(num 12 & num 25 & num 38

19、& num 51)m_Value=14; else m_Value = face_num + 1;void DeckMakeDriver() Deck deck_1; deck_1.MakeDeck(); deck_1.ShowDeck(); Get_Key(); int b; /增加 Center_Text(请输入洗牌次数。); cinb; /end deck_1.DeckShuff(b); deck_1.ShowDeck(); cout endl endl endl; char y; PlayDeck four; /增加 four.PlayCard(deck_1); coutendla;

20、if(a=1) int b,c; char y; cout请输入要删除第几位玩家的第几张牌。bc; four.DeleteOne(b,c); coutendl是(Y)否(N)显示删除后玩家的牌? y; y = toupper(y); if(y=Y)four.s(b); coutendl; if(a=2) int b,c,d,e; char y; cout请依次输入欲删除各玩家牌的序号。bcde; four.DeleteAll(b,c,d,e); coutendl是(Y)否(N)显示删除后玩家的牌?y; y = toupper(y); if(y=Y)four.Show(); coutendl;

21、if(a=3) int b; char y; cout请输入要对那位玩家排序b; four.SortDeckFace(b); cout是(Y)否(N)显示排序后的牌? y; y = toupper(y); if(y=Y)four.s(b); if(a=4) int b; char y; cout请输入要对那位玩家排序b; four.SortDeckSuit(b); cout是(Y)否(N)显示排序后的牌? y; y = toupper(y); if(y=Y)four.s(b); if(a=5) four.Show(); cout是(Y)否(N)回到菜单?y; y = toupper(y); w

22、hile(y=Y); /endvoid Deck:MakeDeck() m_lastdelt = 53; / while(m_lastdelt -1) m_cardarraym_lastdelt.Card_Make(m_lastdelt); m_lastdelt-; void Deck:ShowDeck() int index = m_lastdelt + 1; int newline = 0; Center_Text(新的一副牌); cout endl; while(index=53) / if(newline % 11 = 0) cout endl; m_cardarrayindex.sh

23、owcard(); newline+; index+; int getRandInt(int min, int max) int numToReturn; numToReturn = rand(); numToReturn = numToReturn % (max - min + 1) + min; return numToReturn;void Deck:DeckShuff( int times) int x, split; Center_Text(洗牌); cout endl; for(x=0;x=times;x+) split = getRandInt(20,35); Deck topdeck; Deck bottomdeck; int i; int bottomdeckindex = 1; int topdeckindex = 1; for(i=0;im_cardarrayi; topdeckindex+; i+; for(i=(split);im_ca

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1