猜数字游戏源代码
纸币折心-观月张孝祥
猜数字游戏
本案例知识要点
Visual C++
6.0下创建Win32
Console Application并运行的方法
C++程序中类的定义和实现
C++程序中类文件的引用及类的实
例化
一、案例需求
1.案例描述 <
br>由计算机产生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
#2. class Guess
#3. {
#4. private:
# 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. }
#
Guess::Compare(int InputValue)
比较猜数是否正确
#19. {
#20. CompareTimes++; 所猜次数加1
#21. return InputValue-Value;
比较所猜数字和目标数字是否相同,相同
返回0
#22. }
#23. int Guess::GetCompareTimes()
获得已猜次数
#24. {
#25.
return CompareTimes;
#26. }
*************************************
*
源文件
*************************************
#1. #include
#2. #include
将已定义的类文件包含到主程序文件中
#3. using namespace
std;
#4. int main()
#5. {
#6. int InputValue;
#<<欢迎使用本程序**n
#8. for(;;)
#9. {
#10.
char Select;
#11. Guess guessobj;
实例化Guess类
#12.
cout<<我已经想好数字啦(0~99),请
猜吧!n
#13.
for(;;)
#14. {
#15. int
CompareResult;
#16.
cout<<我想的是:
#17. cin>>InputValue;
获得游戏者输入的所猜数字
#18.
CompareResult=e
(InputValue);
判断游戏者所猜数字是否正确
#19.
if(CompareResult==0) 正确
#20. {
#21. int GuessTimes=
pareTimes();
#22. cout<<恭喜您,猜对啦!
<<您一共猜了次
#23.
break;
#24. }
#25. else
if(CompareResult>0)
#26. {
#27.
cout<<对不起,您猜的数大
啦!n
#28. }
#29. else
#30. {
#31. cout<<对不起,您猜的数小
啦!n
#32.
}
#33. }
#34.
cout<<您还想再玩
吗?('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控制台应用程序需要
经过创
建工程、添加并编辑类文件、添加并
编辑程序源文件、工程编译、连接、执行等
几个步骤。 <
br>(2)通过建立Win32控制台程序用Guess
类来实现:初始化所猜的目标数字、比较输<
br>入数字和目标数字以及统计已猜次数。
在Guess类文件中,定义构造函数Guess()
来实现对所猜目标数字的初始化。 (3)在主程序中要对定义的Guess进行
引用,必须将已经定义的Guess.h类文件包含到主程序文件中。在程序中要对已经定义
的类进行引用,必须将已定义的类实例化为
对象
。在类的实例化过程中调用Guess类的
构造函数Guess()实现对所猜目标数字的初
始
化。对需要引用的类实例化后,就可以通
过对象引用成员函数。
(4)程序通过无条件双重循
环来实现猜
数过程,外层循环用来控制当一次猜数结束
后是否继续进行猜数游戏,只有当用户选
择
“n”时才退出循环,游戏结束。内层循环
用来控制一次游戏的猜数过程。当游戏参加
用户猜数错误时继续循环,只有猜数正确时
才退出内层循环。
2.案例提高
本案例的每一次猜数过程没有次数限制,
只有当游戏者猜对数字以后才完成一次猜
数
过程。修改案例设置最大猜数限制,当猜
数次数达到最大猜数次数时,提示猜数结
束,游戏失败
。