C++课程设计--福彩游戏设计报告

  • 格式:doc
  • 大小:99.00 KB
  • 文档页数:13

南京理工大学VC++课程设计报告 课 程 : VC++课程设计 选题名称 : 福彩游戏 一、程序设计要求 (1)定义一个福彩类,封装计算机开出的大奖号码及开奖过程函数和输出大奖号码的函数。 (2)定义一个用户类,封装用户输入的数字和用户所拥有的彩金。初始化彩金为100元。每次下注2元,可以多次下注,具体赢得大奖或二等、三等奖的奖金由自己设置,累加到用户的彩金中;二等奖或三等奖的规则也由自己设置。其中,用户的输入的数字与福彩号码的比较函数定义为福彩类的友元函数。 (3)程序只要不选择退出且彩金允许就可以反复下注。

二、程序设计思想 (1)类的封装 改程序的数据结构比较简单,主要数据就是彩金和大奖号码,因此,只要将与这两个数字相关的操作封装起来即可。 class CCustomer //定义用户类 { private: int nMoney; //用户彩金 int nRank; //中奖的等级 int Welfare[6]; //福彩投注号码 public: CCustomer( ); //构造函数 int SetWelfare( ); //接收福彩投注,成功返回1 void Compare(CWelfareLot&); //比较福彩,赋值中奖等级 void Show( ); //根据中奖等级计算奖金,输出结果 }; class CWelfareLot //定义福彩类 { private: int LotNum[6]; //大奖号码 public: CWelfareLot( ); //构造函数 void SetLot( ); //开奖过程 void PointLot( ); //输出大奖号码 friend void CCustomer ::Compare(CWelfareLot &); }; (2)开奖过程的编写 原程序的开奖过程比较简单,只是输出随机数结果,没有一般摇 奖的效果,可以将程序加以改进,使随机数不断变换显示,最后停在大奖号码上,这样效果更加逼真。 void CWelfareLot ::SetLot( ) { int nRnd,nNum; for(int i=0;i<6;i++) //要开出6个数字 { nRnd=rand( ); //随机取循环次数,数字变换的时间长度是随机的 for(int j=0;j{ nNum=rand( )%21; //随机取0~20之间的数字进行变化 if(nNum<10) cout<位数,显示后光标左移一位,再继续变换的数字将原数字覆盖,出现摇奖效果*/ else cout<数,左移两位 } cout

三、关键源代码注解 Ⅰ定义用户类: class person //用户类 { private: char code[20]; //用户输入的数字 int money; //用户拥有的彩金 friend class Game; //将输入数字作为福彩类的友元函数 };

Ⅱ定义福彩类私有成员: class Game //福彩类 { private: int play; //记录游戏者当前所在的局数 int ball; //记录游戏者总共玩的局数 int score; //记录游戏者赢的局数 char name[20]; //储存游戏者的姓名 char Reply2; //储存游戏者输入的字符y或n int seed; //储存游戏者输入的幸运数字 int PowerBall; //储存游戏者输入的PowerBall数字 int total; //记录游戏者得的总分数 int level; //储存游戏者所选的数字范围 int rule; //储存游戏者所选的游戏规则 int truematch[6]; //记录每个数字得的分数 int num [5]; //记录游戏者输入的whiteballl数字 int cp_num[6]; //储存电脑所产生的随机数 int bet; //赌注 int x; //记录游戏等级 char Reply3;

Ⅲ定义福彩类公有成员并构造相应函数: public : Game ( ) //构造函数初始化赌资,游戏者当前所在的局数,游戏者总共玩的局数,游戏者赢的局数 { player.money=100;play=1;ball=0;score=0; } void gameboy1( ) //初始化姓名 { cout>reply5; if(reply5=='y'||reply5=='Y') { char ch; int i=0; cout<<"请设置高级玩家密码 :"; cout.flush(); //清输出缓冲区 ch=getch(); while(ch!='#') //当输入#字符时循环结束 { player.code[i++]=ch; cout<<'*'; cout.flush(); ch=getch(); } player.code[i]=0; cout<<"\t\t密码载入中,请稍候........">x; //输入所选的游戏规则 while(x!=1&&x!=2&&x!=3) //判断输入的数字是否合乎要求 { cout<<" 请重新选择! 1 or 2 or 3">x; //重新输入数字 } switch(x) //根据输入的数字来确定游戏规则 { case 1: rule=6;break; case 2: rule=4;break; case 3: rule=2; } cout<<"数据载入中,请稍侯……">Reply3; while(Reply3!='e'&&Reply3!='h') //判断输入的字符是否合乎要求 { cout<<" 请重新输入! e or h">Reply3; //重新输入字符 } 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)} void _show( ) //设置游戏提示信息 {