一个简单猜数字游戏的实现(一)
一个简单的猜数字游戏的实现(一)
前言:
这几天看Essential C++, 第一章Stanley B.Lippman用C++实现了一个猜数字的小游戏,细细体会,程序虽小,但五脏俱全,一个完整的程序设计思路,变量命名,小的语法细节及指针带来的弹性设计,细细揣摩受益颇多,在这里把程序的设计过程和夹杂着自己的思路整理一下,也感谢侯捷老师细致的翻译。
1.功能需求分析:
游戏功能:
给出Fibonacci数列的前两个数字,用户猜测第三个数字;
注:
我们往往从用户那里得到一个较为模糊的需求,软件功能的概括描述,或游戏功能的简单概括,而我们在用计算机实现时需要得到一个细致的需求分析,通过从计算机的角度思考及和用户的不断反馈,逐渐的细化功能需求,最终获得一个从计算机角度的需求文档。
需求文档:
游戏提示用户给出猜测,在游戏设计中,我们需要考虑猜测结果正确或错误的处理方式,如果正确应给出提示;
如果错误,询问用户是否愿意猜一次,并设置一个次数上限,当猜错的次数超过此上限时应提示用户并结束游戏。
有了详细的需求文档我们就可以进行下一步的数据结构设计和程序流程设计了;
设计时将程序划分为若干个小的模块,考虑实现该功能模块的数据结构及代码,最后考虑整个流程及相应的流程控制量;
2.设计过程:
游戏的数列需用一个数组保存,用大小为3的整型数组;
程序提示前两个数字,用户输入猜测数字,并与数组第三个数字比较;
数据结构:
数列:
int Fibonacci[3];
用户输入信息:
int usr_guess;
猜测次数:
const int max_tries=3;
int num_tries=0;
流程控制量:
char usr_rsp;
bool usr_more;
3.实现:
见上传文件:猜数字游戏(1).rar
4.小结:
一个良好的变量命名习惯和变量初始化习惯;
一些经典程序功能模块要能够熟练简洁快速的实现,从需要的变量到代码;
如询问用户 的流程控制:
char usr_rsp; //获取用户输入
bool usr_more; //循环控制布尔量
if(usr_rsp=='n'||usr_rsp=='N')
usr_more=false;