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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

扑克牌游戏.docx

1、扑克牌游戏#include #include #include #include #include #include #include #include int a,b,c,d; /用于记录各位玩家所删去的牌的张数;class Playing_Card /扑克类public: char m_Face3; /扑克的数字大小 char m_Suit ; /扑克的花色(黑、红、梅、方)Playing_Card(); / 构造函数 void showcard(); / 显示一张牌 void Card_Make(int); /制造一张牌;class Deck /一副扑克(54张)private: Pla

2、ying_Card m_cardarray54; / 扑克牌数组 int m_lastdelt;public: Deck(); / 构造函数 void MakeDeck() ; / 制造一副牌 void ShowDeck(); / 显示一副牌 void DeckShuff(int); / 洗牌 void Remove_Card(int x); / 将一张牌置空; void Move(); / 删去大小王 void SendDeck(); / 发牌 void Delete_One_Card(int); / 删去一张牌; Playing_Card Driver413; / 四个玩家的牌; void

3、 blank();void showout(); / 输出开始界面void Center_Text(char ); / 将char 中的内容居中;char Get_Key(); / 输入一个字符;void DeckMakeDriver(); / 测试函数;int getRandInt(int min, int max); / 得到一个随机数;void prog_close(); / 暂停程序; void show(char*,double); /打字效果/*Main*void main() /主函数用于调用其他函数; srand( (unsigned)time( NULL ) ); / 设置随

4、机数; int Card_Number = 0; showout(); /调用此函数显示相关信息; DeckMakeDriver(); /调用此函数; exit(-1); /退出程序 Playing_Card:Playing_Card() /Playing_Card类中的构造函数,产生的对象为一张空牌; int i; for(i=0;i3;) m_Facei = ; i+; m_Suit = ; void show(char*pp,double n) for(unsigned int i=0;istrlen(pp);i+) int m; m=(int)n; Sleep(m); coutppif

5、lush; void showout() coutendlendl; show( *欢迎进入扑克牌游戏* nnn,1); show( p u k n,1); show( p u k n,1); show( ppppppp u kkkkkkkkkkkkkkk n,1); show( p u k n,1); show( p u u kkkkkkkkk n,1); show( p p u u k k n,1); show( p p u u kkkkkkkkk n,1); show( p p u e e n,1); show( p u e e n,1); show( p p u e e e n,1);

6、 show( p u e e e e e nnn,1); show( 设计者:宗 柳nn,1); show( 学号:05081901nn,1); show( 班级:0508190102nn,1); coutendlendl; show(请按键继续.,1); cin.get();char Get_Key() /从用户处得到一个字符,可用来暂停程序; char x; x = cin.get(); cout endl; return x;void Playing_Card:showcard() /显示一张牌; cout setw(4); /输出四个空格; cout m_Face ; /输出牌的面值;

7、 cout.width(1); cout m_Suit; /输出牌的花色; cout ;void Center_Text(char ShellText80) /将ShellText80中的字符居中显示; int length; int center; length= strlen(ShellText); /计算出字符串ShellText的长度; center = (80 - length)/2; /计算出离屏幕左端的空格数; for(;center!=0;center-) cputs( ); /输出空格; cputs(ShellText); /输出ShellText80中的内容; void P

8、laying_Card:Card_Make(int num) /制造一张牌;int i = 0; char j; int face_num = num % 13; switch(face_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);

9、 /将face_num + 49的计算结果转换成字符; if(i3) m_Facei = ; i+; m_Facei = j;i+; m_Facei = NULL; break; if(num 12 & num 25 & num 38 & num = 51)m_Suit = 4; / 制造13张牌从方片A-方片K;void DeckMakeDriver() int i,m; system(cls); /清屏; Deck deck_1; /定义一个Deck类的对象; coutendlendl; Center_Text(现在创建了一副新牌);/调用Center_Text()函数,将括号内的信息输出

10、,并使其居于屏幕的中间 coutendl; deck_1.MakeDeck(); / 制造一副牌; deck_1.ShowDeck(); / 显示一副牌; coutendlendlendlendl; Center_Text(请按键开始洗牌. .); Get_Key(); / 用户任输入一个字符,用来暂停程序; deck_1.DeckShuff(250); / 洗牌 250 次; deck_1.ShowDeck();/ 显示洗好后的牌 coutendlendlendlendl; Center_Text(请按键继续. .); Get_Key(); / 用户任输入一个字符,用来暂停程序; cout

11、endlendlendlendl; deck_1.Move(); /删去牌中的大、小王; deck_1.ShowDeck(); /将大小王删去后的牌显示; coutendlendlendl; Center_Text(请按键开始发牌. .); Get_Key(); / 用户任输入一个字符,用来暂停程序; system(cls); /清屏; cout=endlendl; deck_1.SendDeck(); /发牌给四个玩家; cout玩家(1)的牌为:endl; for(i=0;i13;i+)deck_1.Driver0i.showcard(); /显示此玩家(1)的牌; blank(); /输

12、出各张牌所对应的序号于牌的下方; cout玩家(2)的牌为:endl; for(i=0;i13;i+)deck_1.Driver1i.showcard(); /显示此玩家(2)的牌; blank(); /输出各张牌所对应的序号于牌的下方; cout玩家(3)的牌为:endl; for(i=0;i13;i+)deck_1.Driver2i.showcard(); /显示此玩家(3)的牌; blank(); /输出各张牌所对应的序号于牌的下方; cout玩家(4)的牌为:endl; for(i=0;i13;i+)deck_1.Driver3i.showcard(); /显示此玩家(4)的牌; bl

13、ank(); /输出各张牌所对应的序号于牌的下方; cout=; cout请按键显示游戏玩家菜单. .; Get_Key(); Center_Text(*游戏玩家菜单*); coutendlendl; Center_Text( 1 - 玩家(1); coutendl; Center_Text( 2 - 玩家(2); coutendl; Center_Text( 3 - 玩家(3); coutendl; Center_Text( 4 - 玩家(4); coutendl; Center_Text(*); coutendlendl; cout请输入所要处理牌的玩家的序号:; int input1;

14、char input2; do if(input2=y|input2=Y) coutinput1; coutendl; switch(input1) case 1: for(m=0;m13-a;m+) deck_1.Driverinput1-1m.showcard(); /显示此玩家(1)的牌; blank(); /输出各张牌所对应的序号于牌的下方; deck_1.Delete_One_Card(input1); /删除玩家(1)的第input1张牌; break; case 2: for(m=0;m13-b;m+) deck_1.Driverinput1-1m.showcard(); /显示

15、此玩家(2)的牌; blank(); /输出各张牌所对应的序号于牌的下方; deck_1.Delete_One_Card(input1); /删除玩家(2)的第input1张牌; break; case 3: for(m=0;m13-c;m+) deck_1.Driverinput1-1m.showcard(); /显示此玩家(3)的牌; blank(); /输出各张牌所对应的序号于牌的下方; deck_1.Delete_One_Card(input1); /删除玩家(3)的第input1张牌; break; case 4: for(m=0;m13-d;m+) deck_1.Driverinp

16、ut1-1m.showcard(); /显示此玩家(4)的牌; blank(); /输出各张牌所对应的序号于牌的下方; deck_1.Delete_One_Card(input1); /删除玩家(4)的第input1张牌; break; default: cout输入错误!endl; exit(-1); cout是否还要处理其余玩家的牌?若是,按;若否,按任意键退出!n请按键选择:; cininput2; cout1) / 先制造除大、小王外的其余52张牌; m_cardarraym_lastdelt-2.Card_Make(m_lastdelt-2); / 调用Card_Make(int n

17、um)函数制造52张牌; m_lastdelt-; / 每制造一张牌m_lastdelt-1; if(m_lastdelt=1) /制造一张大王; strcpy(m_cardarraym_lastdelt+51.m_Face, W); m_cardarraym_lastdelt+51.m_Suit=2; m_lastdelt-; if(m_lastdelt=0) /制造一张小王; strcpy(m_cardarraym_lastdelt+53.m_Face, w); m_cardarraym_lastdelt+53.m_Suit=1; void Deck:ShowDeck() int inde

18、x = m_lastdelt; /经调用MakeDeck()函数后,此时的m_lastdelt值为0; int newline = 0; while(index=53) if(newline % 13 = 0) cout endlendl; /屏幕一行显示11张牌; m_cardarrayindex.showcard(); / 调用showcard()函数,显示每一张牌 newline+; / 记录已显示的牌的张数; index+; void Deck:SendDeck() /按牌的顺序依次将牌发给四个玩家; int i; for(i=0;i13;i+) Driver0i=m_cardarra

19、yi*4; Driver1i=m_cardarrayi*4+1; Driver2i=m_cardarrayi*4+2; Driver3i=m_cardarrayi*4+3; 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; /sp

20、lit是分开成两部分的位置,如上部分、下部分 system(cls); coutendlendl; Center_Text(以下为洗过后的牌); coutendl; for(x=0;x=times;x+) split = getRandInt(20,35); / 通过getRandInt(int min, int max)函数得到一个随机数; Deck topdeck; / 制造两副新的空牌topdeck和bottomdeck; Deck bottomdeck; int i; int bottomdeckindex = 1; int topdeckindex = 1; for(i=0;im_c

21、ardarrayi; topdeckindex+; i+; for(i=(split);im_cardarrayi; bottomdeckindex+; i+; int deckoutindex = 0; /用来记录从topdeck.cardarraysplit和bottomdeck.cardarray54-split中向deck_1.cardarray54中已赋值的牌的总数; int numcardstomovetop; / 记录随机数; int numcardstomovebottom; / 记录随机数; int j; int h = 0; bottomdeckindex = 54 - s

22、plit; /bottomdeck.cardarray54中所拥有的牌的张数为54 - split张并赋值给bottomdeckindex; topdeckindex =split; /topdeck.cardarray54中所拥有的牌的张数为split张并赋值给topdeckindex; while(deckoutindex = 53) numcardstomovetop = getRandInt(2,7); /从上部分抽取的张数,是2-7之间的随机数 numcardstomovebottom = getRandInt(2,7); / 从下部分抽取的张数, 是2-7之间的随机数; for(j

23、=0;j 0) /检查从bottomdeck.cardarray54-split中抽取的牌是否还有剩余; this-m_cardarraydeckoutindex = bottomdeck.m_cardarraybottomdeckindex; deckoutindex+; bottomdeckindex-; for(h=0;h 0) & (deckoutindex m_cardarraydeckoutindex=topdeck.m_cardarraytopdeckindex; deckoutindex+; topdeckindex-; this-m_lastdelt = 0; /将m_lastdelt重新修改为0,以便后面显示牌;void blank() /输出每个玩家的牌所对应的序号; int j; coutendl; for(j=1;j=13;j+) if(j=10)cout

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

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