




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京理工大学VC课程设计报告课 程 : VC+课程设计选题名称 : 福彩游戏一、程序设计要求(1)定义一个福彩类,封装计算机开出的大奖号码及开奖过程函数和输出大奖号码的函数。(2)定义一个用户类,封装用户输入的数字和用户所拥有的彩金。初始化彩金为100元。每次下注2元,可以多次下注,具体赢得大奖或二等、三等奖的奖金由自己设置,累加到用户的彩金中;二等奖或三等奖的规则也由自己设置。其中,用户的输入的数字与福彩号码的比较函数定义为福彩类的友元函数。(3)程序只要不选择退出且彩金允许就可以反复下注。二、程序设计思想(1)类的封装改程序的数据结构比较简单,主要数据就是彩金和大奖号码,因此,只要将与这两个数字相关的操作封装起来即可。class CCustomer /定义用户类private: int nMoney; /用户彩金 int nRank; /中奖的等级 int Welfare6; /福彩投注号码public: CCustomer( ); /构造函数 int SetWelfare( ); /接收福彩投注,成功返回1 void Compare(CWelfareLot&); /比较福彩,赋值中奖等级 void Show( ); /根据中奖等级计算奖金,输出结果;class CWelfareLot /定义福彩类private: int LotNum6; /大奖号码public: CWelfareLot( ); /构造函数 void SetLot( ); /开奖过程 void PointLot( ); /输出大奖号码 friend void CCustomer :Compare(CWelfareLot &);(2)开奖过程的编写原程序的开奖过程比较简单,只是输出随机数结果,没有一般摇奖的效果,可以将程序加以改进,使随机数不断变换显示,最后停在大奖号码上,这样效果更加逼真。void CWelfareLot :SetLot( ) int nRnd,nNum; for(int i=0;i6;i+) /要开出6个数字 nRnd=rand( ); /随机取循环次数,数字变换的时间长度是随机的 for(int j=0;jnRnd;j+) nNum=rand( )%21; /随机取020之间的数字进行变化if(nNum10)coutnNumb; /*当取的数字小于10,即一位数,显示后光标左移一位,再继续变换的数字将原数字覆盖,出现摇奖效果*/ else coutnNumbb; /当取的数字是两位数,左移两位coutnNum“ ”;LotNumi=nNum; /变换到最后的数字即为大将数字(3)程序的进一步改进原程序要求玩家提供计算机随机数的种子,但如果种子固定,那么产生的随机数也固定,大奖的号码每次都相同,达不到原游戏的目的。我们还是用当前的时间作为随机数种子去顺序产生随机值,使得大奖号码都是随机的。如果大奖号码纯粹是随机数,那么玩家获得大奖几乎是不可能的,所有的玩家玩家都希望在游戏中找到乐趣,所以可以将游戏稍稍改进一下,用指定的用户名和密码进入,首先预定好大奖号码,开奖的操作照常进行,只不过停止变换后显示的数字是我们预定的,这样就可以使您成为虚拟世界的百万富翁!三、关键源代码注解定义用户类:class person /用户类private:char code20; /用户输入的数字int money; /用户拥有的彩金friend class Game; /将输入数字作为福彩类的友元函数;定义福彩类私有成员:class Game /福彩类private:int play; /记录游戏者当前所在的局数int ball; /记录游戏者总共玩的局数int score; /记录游戏者赢的局数char name20; /储存游戏者的姓名char Reply2; /储存游戏者输入的字符y或nint seed; /储存游戏者输入的幸运数字int PowerBall; /储存游戏者输入的PowerBall数字int total; /记录游戏者得的总分数int level; /储存游戏者所选的数字范围int rule; /储存游戏者所选的游戏规则int truematch6; /记录每个数字得的分数int num 5; /记录游戏者输入的whiteballl数字int cp_num6; /储存电脑所产生的随机数int bet; /赌注int x; /记录游戏等级char Reply3;定义福彩类公有成员并构造相应函数: public :Game ( ) /构造函数初始化赌资,游戏者当前所在的局数,游戏者总共玩的局数,游戏者赢的局数player.money=100;play=1;ball=0;score=0; void gameboy1( ) /初始化姓名coutendl;cout请输入您的姓名:1 to 20 characters: ; cin.getline (name,20); coutendl; void set( ) /设置密码 cout您是否要设置密码y or n:reply5;if(reply5=y|reply5=Y)char ch; int i=0; cout请设置高级玩家密码 :; cout.flush(); /清输出缓冲区 ch=getch(); while(ch!=#) /当输入#字符时循环结束player.codei+=ch; cout*; cout.flush(); ch=getch();player.codei=0; couttt密码载入中,请稍候.endl; wait(2000); /真实性处理 system(cls); /执行系统命令,清屏else strcpy(player.code,1111);coutendl; void menu( ) /选择游戏规则cout#游戏规则#endl;cout1大奖:当输入的6个数字全部匹配时游戏者赢!若赢您可获得所下赌注三倍的奖金,若输您将失去同样多的金额!endl;cout*; cout2二等奖:当输入的6个数字中至少有4个匹配时游戏者赢!若赢您可获得所下赌注两倍的奖金,若输您将失去同样多的金额!endl;cout*; cout3三等奖:当输入的6个数字中至少有2个匹配时游戏者赢!若赢您可获得与您所下赌注相等的奖金,若输您将失去同样多的金额!endl; coutendl;coutnamex; /输入所选的游戏规则while(x!=1&x!=2&x!=3) /判断输入的数字是否合乎要求cout 请重新选择! 1 or 2 or 3x; /重新输入数字 switch(x) /根据输入的数字来确定游戏规则case 1: rule=6;break;case 2: rule=4;break;case 3: rule=2;cout数据载入中,请稍侯endl;wait(2000); /真实性处理system(cls); /执行系统命令,清屏void _level( ) /选择游戏的难易程度cout#游戏难易程度说明#endl;coute:简单,在1-20中选择号码!endl;couth:困难,在1-40中选择号码!(若赢奖金在原基础上增加一倍哦!)endl;coutendl;coutnameReply3;while(Reply3!=e&Reply3!=h) /判断输入的字符是否合乎要求cout 请重新输入! e or hReply3; /重新输入字符switch(Reply3) /根据输入的字符初始化数字范围确定游戏难易case e: level=20;break;case h: level=40; int getgamenbr() /根据时间初始化随机数种子并产生随机数int ran; srand(unsigned)time(NULL);ran=rand()%level+1; /在已确定的范围内产生随机数 return (ran);void wait(int milli) /延时函数,产生多个种子clock_t start;start=clock();while(clock()-start)milli);void _show( ) /设置游戏提示信息 cout -n; cout * 欢迎来到福彩中心! 祝您好运! *n; cout -n; coutendl; cout#游戏说明#n; cout1.本游戏设置了普通玩家与高级玩家,高级玩家可设定大奖号码;endl; cout2.高级玩家密码可先设定,不设则采用默认密码(1111).endl;void BET( ) /设置赌注coutn;cout您拥有金钱:¥player.moneyendl;coutbet;if (bet0)bet=bet*(-1);system(cls); /执行系统命令,清屏void money_show()coutplayer.moneyendl; void setlot( ) /开奖过程int nr,nn;for(int i=0;i6;i+)nr=rand();for(int j=0;jnr;j+)nn=getgamenbr(); /调用成员函数来产生随机数if(nn10)coutnnb;elsecoutnnbb;coutnn ;cp_numi=nn; /将随机数储存在一维数组cp_numi中wait(800); void gameover( ) /游戏结束并显示信息结束程序 coutnname你一共玩了ball局,赢了score局!谢谢你的参与!:-)endl; exit (1); /结束程序 void _do( ) /游戏的执行函数_show(); gameboy1(); set( );do menu();system(cls); /执行系统命令,清屏_level();Game:BET();cout nname, 请输入whiteball号码n; /游戏者输入whiteball 号码cout n;int j; /记录循环次数for (j=0; j5; j+)cout输入球号码 # j+1 numj) /检验输入的字符是否符合条件cin.clear(); /清除错误字符while (!(cin.get() =n) /提取完在缓冲区中的字符或字符串continue;cout 对不起,您输入的数字不符合要求!请在1-level中选择号码!n; /显示重新输入的提示信息cout输入球号码 # j+1: ;if (numj1) /检验输入的数字是否小于确定范围中的最小值cout 对不起,您输入的号码小于1!请在1-levellevel) /检验输入的数字是否大于确定范围中的最大值cout 对不起,您输入的号码大于 level!请在1- level中选择号码!n; /显示重新输入的提示信息j-; cout namePowerBall; /输入PowerBall号码 char ans;coutn; coutans;int panduan=0;if(ans=Y|ans=y) char gao20; /验证密码 char ch; int i=0; cout请输入高级玩家验证密码(以#字符结束):; cout.flush(); /清输出缓冲区 ch=getch(); while(ch!=#) /当输入#字符时循环结束gaoi+=ch; cout*; cout.flush(); ch=getch();gaoi=0; if (!strcmp(player.code,gao) /默认密码处理 wait(2000);couttt您已通过密码验证endl;coutendl;cout请输入六个数字作为大奖号码endl;for(int j=0;jcp_numj; panduan=1;else couttt密码错误!endl;if (panduan=0) setlot( ); /调用开奖成员函数产生随机数 /调用成员函数来检验玩家输入的数字是否与电脑产生的随机数相匹配并将得分储存在数组truematch6中 truematch0= isMatch(num0,cp_num); truematch1= isMatch(num1,cp_num); truematch2= isMatch(num2,cp_num); truematch3= isMatch(num3,cp_num); truematch4= isMatch(num4,cp_num); truematch5= isMatch(PowerBall,cp_num);total=(truematch0 + truematch1 +truematch2+ truematch3 + truematch4 + truematch5); /计算总得分 /显示游戏结果 system(cls); /执行系统命令,清屏 coutn*; cout n第play局; coutn*n; cout n;/显示电脑产生的随机数 cout 电脑产生的号码为: cp_num0 cp_num1 cp_num2 cp_num3 cp_num4 PB cp_num5n; cout-n;/显示玩家选择的数字 cout name,您选择的号码为: num0 num1 num2 num3 num4 PB PowerBalln; cout-n;/显示玩家选择的各个数字的得分情况cout name,您猜中的有(猜中为1,不中为0): truematch0 truematch1 truematch2 truematch3 truematch4 PB truematch5;/显示玩家的总得分 cout n猜中总数为: total=rule) /根据总分判断玩家是否赢得此局 cout 恭喜 , 您赢了!endl; score+; /记录赢的局数 switch(Reply3) /计算玩家剩余金额 case e: player.money=player.money+(bet*(4-x); cout您的剩余金额为player.moneyendl;break; case h: player.money=player.money+(bet*(4-x)*2); cout您的剩余金额为player.moneyendl;break; else switch(Reply3) case e: player.money=player.money-(bet*(4-x); break; case h: player.money=player.money-(bet*(4-x)*2); break; cout 对不起 , 您输了!endl;cout您的剩余金额为player.money; coutn*n; if(player.money=0) /判断是否还有赌本 cout对不起,您没有赌本了!; ball+; break; else coutname, 您想继续游戏吗? y or n Reply2; /输入字符以确定是否要继续 play=play + 1; /局数加一 ball+; /记录总共玩的局数 while( Reply2=y|Reply2=y); /当输入y字符时继续游戏否则循环结束gameover();friend int isMatch(int test, int cp_num); /将用户的输入的数字与福彩号码的比较函数定义为福彩类的友元函数; int isMatch(int test, int cp_num ) /test为所要判断的数字 int match = 0; /记录得分 for (int i=0; i6; i+) /与电脑产生的所有数字对比 if (test = cp_numi) match = 1;/如果匹配则得分为1 cout n; return match; /返回得分值主函数:void main(void) /主函数Game player1; /建立对象 player1._do( ); /游戏的执行过程 四、设计过程中遇到的问题及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 展览场地设备租赁合同(14篇)
- 广东科学技术职业学院《微机原理与应用A》2023-2024学年第二学期期末试卷
- 河南工业职业技术学院《种子质量检验理论与技术》2023-2024学年第二学期期末试卷
- 青海民族大学《用户研究与体验》2023-2024学年第二学期期末试卷
- 扬州中瑞酒店职业学院《竞技武术套路5》2023-2024学年第二学期期末试卷
- 2025年辽宁省建筑安全员B证考试题库
- 苏州大学应用技术学院《色谱学》2023-2024学年第二学期期末试卷
- 2025年江西省安全员C证(专职安全员)考试题库
- 山西财贸职业技术学院《工程信息学》2023-2024学年第二学期期末试卷
- 哈尔滨幼儿师范高等专科学校《英语课程标准解析与教材研究》2023-2024学年第二学期期末试卷
- 矿山井架设计规范
- 空天地一体化公路智能巡查技术应用与实践
- CJJ129-2009 城市快速路设计规程
- punctuation-英语标点的使用
- 股权纠纷案例分析申诉报告
- 2022云南省中考道法真题试卷和答案
- 如何在质保到期后提供售后服务
- 劳务经济人培训课件
- 海尔集团周云杰发表主题为《无界生态 无限可能》战略报告
- 汉字真有趣教学设计
- 经典成语故事叶公好龙
评论
0/150
提交评论