




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计题目: 21点游戏 二十一点游戏是一款操作简单,老少皆宜,并且带有很强娱乐性的游戏。二十一点游戏也是我们学习C语言过程中用来锻炼我们编程能力的一种简单有效的方式。编写二十一点游戏的目的就是在编写过程中学习和掌握各种编程的能力,二十一点游戏中有我们经常接触到的一些头文件,和小的函数体,以及一些相关知识,能让我们在实践中得到锻炼。一、 设计目的与要求1、程序设计的源程序功能如下:(1)将所有的函数与相应的数据封装到类中,并改写主程序,使程序简化。(2)程序中一共有13张扑克牌可以随机抽取,大于10的点数为10,现要求大于10的点数全部为半点。(3)要求庄家永远不会暴庄,即庄家可以查看下一张牌,若大于21点,则拒绝,当然,在游戏规则上不能泄露这点秘密。(4)高级玩家可以查看下一张牌,即按h键,然后按要求输入密码,密码正确可以看牌,并决定是否要牌。(5)每次要牌后可以设定赔率,即如果开始下的是10元钱的注,如果牌好,你可以要求再下注,当然不能超过你所有的总钱数。(6)将界面的提示说明改成中文界面,界面的解释详细友好,可以吸引更多的玩家。二、 课程设计(1)题目要求把源程序封装在类中,需要编写一个类来封装所有相关函数和变量,同时对main主函数进行改写,以完成题目的要求。(2)题目要求把抽到的大于10点的牌的点数设为半点,只需要设计随机取下一张牌的成员函数时用if语句判定牌的点数是否大于10,大于10的牌对其重新赋值为0.5即可。(3)题目要求超级玩家在输入密码后可以查看下一张牌,只需设计一成员函数,判定玩家是否继续要牌之前加入对玩家是否输入h键的判定,如果有输入,则调用为处理玩家输入密码而单独编写的成员函数,在该函数中,首先判定玩家的密码输入是否正确,不正确则返回0,正确则返回1。(4)题目要求玩家可以根据手上的牌决定是否下注,只需设计一成员函数,检查玩家的赌注累计不超过他所拥有的总资本。三、 设计描述1、为满足上述第一条要求,在程序中增加了一个类play,封装到类中的函数有:void replay(); /检测是否重玩void hitplayer(); /玩家要牌void hitcpu();/电脑要牌void deal(); /开始发牌void BET(); /加注void print(); /打印最终结果void rules(); /显示规则void results();/判断获胜方int getmoney();/读取钱数至主程序void shuruans();/输入判断用字符(如Y,S等)void firstbet();/首次下注;void writer(void) ; /写入文本文件void load(void); /读取文本文件源程序已有的函数中,void replay(),void rules(), void results(), void print()已经较为完善,仅需将其英文界面部分改为中文即可,而其他函数则应按要求改写。2、为满足上述第二条要求,按一般玩法=10的数本应该都按10来算,而这里这些书全都算作0.5,所以if(card=10)card=0.5;即可。3、第三条要求较为困难,将原程序中的一个void hit(int &total)函数改编为void hitplayer()与void hitcpu()两个函数,分别用来运行玩家及庄家的要牌过程。要求庄家永远不会暴庄,即是要让庄家可以看牌并判断要牌后点数是否超过21点。因此函数改写为:void play:hitcpu(void)float total;for(;(cpu16)&(cputurns6);cputurns+) cout=10)card=0.5;total=cpu+card;if(total=21)cpu=total;coutttt庄家拿牌endl;coutttt这张牌是 :cardendl;coutttt总共 :cpuendl; wait(1350);使用一个中间变量total即可判断且不影响庄家的实际总点数。设置超级玩家即是设计一成员函数,判断是否输入正确密码。由于要求要牌也是输入H,因此只需要将函数语句一并编入void hitplayer()中,函数如下:void play:hitplayer(void)char str20;char c;nocheats=0;cout请输入密码str;card=random(13,1);if(card10) card=0.5;if(strcmp(str,Password)=0)cout下张牌是cardendl;cout输入y要牌,其他键不要c;if(c=y|c=Y)player=player+card;coutttt牌面是:cardendl;elsenocheats=1; coutttt总的牌面是:playerendl;elseplayer=player+card;coutttt牌面是:cardendl;coutttt总的牌面是:playerendl; 由strcmp()语句判断输入密码的正确性,若正确则可看牌并决定是否要牌,若不正确则由于已选择要牌(已输入了要牌指令“H”)则拿牌并计入总点数中。加入参数nocheats是由于判断是否要牌的语句在主函数中,不加入参数则可能出现玩家不要牌后仍可再次拿牌(正确结果应是结束玩家拿牌,改由庄家拿牌)。4、第四条要求中的总下注数不超过总资产数。因此需设计函数使每次要牌后能输入加注数并加入总下注数中。使用void BET()完成加注设定,函数如下:void play:BET() int a=0;docoutttt你拥有money元endl;couta;if(amoney)cout你没有足够的钱!money);bet=bet+a;money=money-a;也是使用中间变量a,目的在于判断总下注数不超过总资产数,若超出则将警告并要求重新输入,且不会误计入总下注数中。又由于每局后下注金额应清零,且加注提示应与下注提示不同,故增设函数如下:void play:firstbet(void)coutttt你拥有money元endl;coutbet;if(betans;这样在类体外就可以通过void shuruans()对ans进行赋值.四、 调试分析1、 游戏开始2、 游戏过程3、 游戏结果五、 总结主函数的设计显得有些繁冗杂乱,有很多的程序段有简化的空间。但由于能力有限,不能给出更好的设计方案。以至于函数中出现很多而且肢体庞大的条件、循环语句,程序的可读性也不强。对简化函数体的设计要求没有达到。密码设计段的知识运用有问题,因为对设计原理不太明白,只是按照题给提示编写该部分程序,或许存在设计上的错误。两三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公室文具用品采购供应合同协议
- 采购合同评审与审批模板
- 早餐水彩课件模板
- 人教版三年级上册第四单元4.1《口算乘法》课时练(含答案)
- 历史的长河:九年级语文历史题材课文教学教案
- 职业需求与教育目标的交融探索专科生之路
- 早教清洗双手课件
- 早教培训课件
- 土地承包经营权与农作物种植养护协议
- 纪念129爱国运动课件
- 新员工社保讲解
- DB1508T 152-2024 玉米品字型播种北斗导航机械化作业技术规程
- 2025-2030中国复合外套金属氧化物避雷器行业产销需求与投资前景展望报告
- 商用厨房设备维护保养规范
- 完形填空20篇(15空)-牛津译林版七年级英语下学期期末高频易错点专练(带详解)
- 《新媒体营销与运营实战(微课版)》-教学大纲
- 耳鼻喉科规培汇报
- 2025年蔬菜专业面试题库及答案
- 2025年心理健康指导师资格考试试题及答案
- 压力开关校准培训课件
- 重庆渝地资产经营管理有限公司招聘笔试题库2025
评论
0/150
提交评论