




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此程序为21点扑克牌游戏,玩家一共可以要五张牌,但如果牌的点数超过21,则自动出局;在不超过21点的情况下,玩家与庄家比牌的点数大小,大者为赢,相同则为平局。 程序说明: 1)将所有的函数与相应的数据封装到类中,并改写主程序。使程序简化。 2)程序中一共有13张扑克牌可以随时抽取,大于10的点数为0.5。 3)超级玩家永远不会输掉,即超级玩家可以查看下一张牌,若大于21点,则可以拒绝,当然游戏规则上不能泄露这点秘密。 4)超级玩家可以查看下一张牌,即输入指定的字符串或字符,然后按要求输入正确密码后才能看自己的和计算机的牌,并指定下一级牌的点数。 5)每次要牌后可以设定赔率,即如果开始下的是10元钱的注,如果牌好,你可以要求继续下注,当然不能超过你所有的总钱数。 6)将界面的提示说明改成中文界面,界面的解释详细友好,可以吸引更多的玩家。 类的封装 设计一个类,将出牌,下注等的操作包含进去,玩家和计算机。均为这个类的对象。这样,在玩牌及判断输赢时,函数只需要用这两个对象的引用做参数即可,大大简化了函数。 具体的参考的数据结构如下; classCCard private: intnaPip5;/一共五张牌 intnNumber;/实际发了多少牌 intnDollar;/有多少钱 intnGamble;/赌注 intnWin;/赢局数 intnLost;/输局数 intnDraw;/平局数 public: CCard();/构造函数,初始化 voidFirstPlayTwo();/最初两张牌 intGetNumber();/返回牌的张数 doubleGetPip();/返回点数 voidDidplayPip();/依次显示牌面的点数 voidDidplayPip(int);/除了第一张牌,依次全部显示牌面点数(针对计算机牌的显示) voidTurnPlay();/出一张牌 voidWin();/赢了计算赌注 voidLose();/输了 voidDraw();/平局 intSetGamblec(int);/设置赌注,赌本不够返回-1 intGetMoney();/返回钱数 voidDisplayInfo();/显示必要的信息 char*GetCurrentCard();/返回当前牌点 voidDeleteCard(void);/删除当前牌点,作弊用 voidModifyCard(double);/修改当前牌,作弊用 intAddgamble(int);/加赌注 ; 主程序 #include #include /fuctions voidreplay(char&ans);/询问玩家是否再玩一局 voidhit(int&total);/要一张牌 voiddeal(int&player,int&cpu,int&playerturns,int&cputurns);/为计算机和玩家各发两张牌 voidBET(int&bet,int&money);/下注 voidprint(intwins,intlose,intdraw,intmoney);/输出最后结果 voidrules();/输出游戏规则 voidresults(intplayer,intcpu,intbet,int&money,int&draw,int&win,int&lose);/判断一局的结果 /*diyige*/ /wait.hbegin #include #include voidwait(intmilli)/暂停,milli毫秒 clock_tstart; start=clock(); while(clock()-start)milli); /wait.hend #include #include #include #include /= voidpause() /暂停,任按一键继续 cout任按一键继续endl; getch(); /= intGetInt(intL=0,intH=100) intent; coutPleaseEnterANumberBetweenLandHent; while(entH) coutErrorendl; coutValuemustbebetweenLandHent; return(ent); /= voidsign() /DisplaysISAACSHAFFER coutThisProgramWasWrittenByIsaacShafferendl; /= intrandom(longhi,longlo) /ThisProgramFindsARandomNumberBetweenHiandLow intran; srand(unsigned)time(NULL); ran=rand()%(hi-(lo-1)+lo; return(ran); /utility.hend intmain() intplayer=0,cpu=0,win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=0,bet; charans; system(cls);/执行系统命令,清屏 rules(); coutans; if(ans=y)|(ans=Y)/检查输入是否为Yes coutttt您的赌本为100美元endl;/起始的赌本 money=100; coutttt; pause();/暂停,任按一键继续 else return(0); do system(cls); if(money0)/看看有无赌本 cout对不起,您没赌本了endl;/若赌本输光,结束程序 return(0); BET(bet,money);/下注的程序 deal(player,cpu,playerturns,cputurns);/给玩家和计算机各发两张牌 do coutans; if(ans=h)|(ans=H)/如果玩家要牌 playerturns+;/玩家手中的牌数增加一张 if(playerturns5)/判断玩家手中的牌数是否超过5张 coutttt你手中的牌不能超过5张牌;/若超过5张不能继续要牌 if(playerturns6)&(ans=h)/判断是否符合玩家要牌的条件 coutendl; hit(player);/调用发牌程序 while(ans=h)|(ans=H);/继续询问玩家是否要牌 for(;(cpu16)&(cputurns6);cputurns+)/计算机开始要牌的条件 coutendl; coutttt计算机要了一张牌endl; hit(cpu);/调用发牌程序 coutendl; coutendl; coutttt计算机的牌面为:cpuendl;/输出计算机的牌面的总点数 coutttt您的牌面为:playerendl;/输出玩家的牌面的总点数 coutendl; results(player,cpu,bet,money,draw,win,lose);/判断输赢 replay(ans);/询问是否继续玩牌 while(ans=y)|(ans=Y); print(win,lose,draw,money);/游戏结束,输出结果 coutendl; couttttt; return(0); /- voidrules()/游戏规则 coutttWELCOMETOISAACSHAFFERSBLACKJACKGAMEendl; couttttHEREARESOMESIMPLERULESendl; coutttt1:YouCanonlyhaveamaxof5cards.endl; coutttt2:Ifyoubustyouautomaticallylose.endl; coutttt3:Ifyouwinyouwindoublewhatyoubet.endl; coutttt4:TheDealerstopsatorafter16.endl; couttttt; pause(); /- voidBET(int&bet,int&money)/接收玩家下注 system(cls); coutttt您现有的:$moneyendl; coutbet; if(bet0) bet=bet*-1; money=money-bet; /- voiddeal(int&player,int&cpu,int&playerturns,int&cputurns) /为计算机和玩家各发两张牌 intplayercard1,playercard2,cpucard1,cpucard2; playerturns=2; cputurns=2; playercard1=random(13,1);/取得13与1之间的随机数 coutntttDEALINGHAND=10)/若牌面的点数大于10,按10来计点数 playercard1=10; if(playercard2=10) playercard2=10; if(cpucard1=10) cpucard1=10; if(cpucard2=10) cpucard2=10; player=playercard1+playercard2;/玩家两张牌的总点数 cpu=cpucard1+cpucard2;/计算机两张牌的总点数 coutttt现有您的牌面总数是:playerendl; coutplayercard1; coutplayercard2; coutendl; coutttt计算机有一张cpucard1显示endl; coutendl; cout*cpucard1=10) card=10; total=total+card;/牌点总数 coutttt牌面是:cardendl;/输出牌面 coutttt总的牌面是:totalendl;/输出总点数 /- voidresults(intplayer,intcpu,intbet,int&money,int&draw,int&win,int&lose) /判断一局的结果 if(cpu=player)/平局 coutttt平局21)/玩家超过了21点 coutttt很遗憾,你输了endl; lose+; else if(cpuplayer)/玩家赢了 cout21)/计算机超过了21点 coutttt计算机输了endl; if(player21) coutplayer) coutttt很遗憾,你输了endl; lose+; /- voidreplay(char&ans)/询问玩家是否再玩一局 coutans; /- voidprint(intwins,intlose,intdraw,intmoney) couttttt赢的次数:winsendl; couttttt输的次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 骨髓库知识竞赛题及答案
- DB65T 4402-2021 石榴测土配方施肥技术规程
- DB65T 4329-2020 商用电馕坑安全通 用要求
- 模拟电路期末试题及答案
- 12《低碳生活每一天》(教学设计)-部编版道德与法治四年级上册
- 学生学习行为改进的目标教学设计:人教版高中地理必修二2.3 城市化
- 10我们所了解的环境污染 教学设计-2024-2025学年道德与法治三年级上册统编版
- 2025年中国数学高考真题及答案
- 2025年风电项目土地资源利用评价与优化方案报告
- 冲压车间考试题目及答案
- 生病学生上学协议书
- 社区用房使用协议书
- 乡村积分超市协议书
- 小学一年级上册体育全册教案
- 电焊工理论知识培训课件
- 高压配电抢修方案范本
- 2025-2030中国茶酒行业市场发展现状及发展趋势与投资研究报告
- 北美128个护理诊断
- 2025高考英语全国II卷试题分析及备考策略指导课件
- 人口老龄化带来的公共卫生挑战-深度研究
- 全国公开课大赛一等奖小学二年级下册数学新人教版《除法的初步认识-除法》课件
评论
0/150
提交评论