猜数字游戏源代码

  • 格式:doc
  • 大小:55.00 KB
  • 文档页数:9

猜数字游戏
本案例知识要点
●Visual C++ 6.0下创建Win32 Console Application并运行的方法
●C++程序中类的定义和实现
●C++程序中类文件的引用及类的实例化
一、案例需求
1.案例描述
由计算机产生0到99的随机数,游戏参加者将猜到的数字从键盘输入,计算机对猜数结果进行判断直到猜出正确结果。

2.案例效果图
猜数字游戏运行效果如图2-1所示。

3.功能要求
(1)所猜0到99的目标数字由计算随机产生。

(2)0到99的随机数的产生、所猜数字和目标数字的比较等过程以类的形式实现。

(3)若游戏参加者所猜数字正确,则提示所猜总次数;若猜数错误,则提示所猜数字比目标数字大还是小。

二、案例分析
本案例中设计了一个Guess类,实现产生随机数、进行参加游戏者输入数字与目标数字的比较、计算猜数次数。

主程序中通过类的实例化实现猜数过程。

三、案例设计
为了实现猜数过程,设计Guess类,结构如图2-2所示。

●数据成员
int Value
产生的0到99间的目标数字。

int CompareTimes
为游戏者已猜次数。

●函数成员
Guess()
构造函数,用来产生随机目标数字。

int Compare(int InputValue)
用来判断游戏者所猜数字是否正确,其参数InputValue为游戏者所猜数字。

int GetCompareTimes()
用来获得游戏者已猜次数。

五、案例实现
猜数字游戏源程序代码如下所示。

************************************* // * Guess.h 类声明头文件
************************************* #1. #include <time.h>
#2. class Guess
#3. {
#4. private:
#5.int Value; //计算机产生的目标数字
#6. int CompareTimes; //所猜次数#7. public:
#8. Guess(); //构造函数的声明#9. int Compare(int InputValue); #10. int GetCompareTimes();
#11. };
#12. Guess:: Guess ()//构造函数的实现#13. {
#14. CompareTimes=0; //猜数次数置零#15. srand((unsigned)time(NULL)); //产生随机数种子#16. Value=rand()%100;
//产生0~99的随机数#17. }
#18.int Guess::Compare(int InputValue)
//比较猜数是否正确
#19. {
#20. CompareTimes++; //所猜次数加1 #21. return InputValue-Value;
//比较所猜数字和目标数字是否相同,相同//返回0
#22. }
#23. int Guess::GetCompareTimes()
//获得已猜次数
#24. {
#25. return CompareTimes;
#26. }
//
************************************* //* GuessNumber.cpp 源文件
************************************* #1. #include <iostream>
#2. #include "Guess.h"
//将已定义的类文件包含到主程序文件中#3. using namespace std;
#4. int main()
#5. {
#6. int InputValue;
#7.cout<<"\n** 欢迎使用本程序**\n"; #8. for(;;)
#9. {
#10. char Select;
#11. Guess guessobj;
//实例化Guess类#12. cout<<"我已经想好数字啦(0~99),请猜吧!\n";
#13. for(;;)
#14. {
#15. int CompareResult; #16. cout<<"\n我想的是:";
#17. cin>>InputValue;
//获得游戏者输入的所猜数字
#18. CompareResult=pare (InputValue);
//判断游戏者所猜数字是否正确
#19. if(CompareResult==0) //正确#20. {
#21. int GuessTimes=
guessobj.GetCompareTimes(); #22. cout<<"\n恭喜您,猜对啦!"<<endl <<"您一共猜了"<<GuessTimes<<"次"<<endl;
#23. break;
#24. }
#25. else if(CompareResult>0)
#26. {
#27. cout<<"\n对不起,您猜的数大啦!\n";
#28. }
#29. else
#30. {
#31. cout<<"\n对不起,您猜的数小啦!\n";
#32. }
#33. }
#34. cout<<"\n您还想再玩吗?('n'=No,Others=Yes)\n";
#35. cin>>Select;
#36. cout<<'\n';
#37. if(Select=='n'||Select=='N')
#38. {
#39. break;
#40. }
#41. }
#42. cout<<"********** 感谢您的使用! **********\n";
#43. return 0;
#44. }
六、案例总结与提高
1.案例总结
(1)本案例的重点是介绍Visual C++ 6.0下创建并运行一个C++Win32控制台应用程序的基本过程。

在Visual C++ 6.0下创建并运行一个C++Win32控制台应用程序需要
经过创建工程、添加并编辑类文件、添加并编辑程序源文件、工程编译、连接、执行等几个步骤。

(2)通过建立Win32控制台程序用Guess 类来实现:初始化所猜的目标数字、比较输入数字和目标数字以及统计已猜次数。

在Guess类文件中,定义构造函数Guess()来实现对所猜目标数字的初始化。

(3)在主程序中要对定义的Guess进行引用,必须将已经定义的Guess.h类文件包含到主程序文件中。

在程序中要对已经定义的类进行引用,必须将已定义的类实例化为对象。

在类的实例化过程中调用Guess类的构造函数Guess()实现对所猜目标数字的初始化。

对需要引用的类实例化后,就可以通过对象引用成员函数。

(4)程序通过无条件双重循环来实现猜数过程,外层循环用来控制当一次猜数结束后是否继续进行猜数游戏,只有当用户选择“n”时才退出循环,游戏结束。

内层循环用来控制一次游戏的猜数过程。

当游戏参加用户猜数错误时继续循环,只有猜数正确时才退出内层循环。

2.案例提高
本案例的每一次猜数过程没有次数限制,只有当游戏者猜对数字以后才完成一次猜数过程。

修改案例设置最大猜数限制,当猜数次数达到最大猜数次数时,提示猜数结束,游戏失败。