一个简单猜数字游戏的实现(二)
一个简单的猜数字游戏设计与实现(2)
前言:
敏捷编程的设计思想是:先让它跑起来,然后在其内添加功能;
在前一篇文章中简单实现了猜测判断和流程控制,但只能对一种Fabonacci数列进行猜测,掌握规律后未免单调,故希望游戏扩展如下功能:
有六种数列:Fibonacci,Lucas,Pell,Triangular,Square,Pentagonal;
每种数列的数字排列有不同的规律,随机出现其中的一种数列的前两个数字;
用户猜测第三个数字;
1.设计思想:
用六个vector<int>分别存放6种数列的连续三个数字,用一个指针数组存储指向六个vector的指针,随机产生一个数组下标,从而可以随机的指向某一种数列,从而实现随机的对某一种数列进行预测;
数列种类:
const int seq_cnt=6;
数列种类定义成常量,方便以后的扩展;
数据结构:
六种数列:
vector<int> Fibonacci;
vector<int> Lucas;
vector<int> Pell;
vector<int> Triangular;
vector<int> Square;
vector<int> Pentagonal;
指针数组:
vector<int> *seq_addrs[seq_cnt];
工作指针:
vector<int> *pv;
随机索引下标的获取:
int seq_index=0;
srand(time(Null));
seq_index=rand()%seq_cnt;
2.实现
见上传的文件: 猜数字游戏(2).rar
3.总结:
在有关vector编程中,结合使用vector和vector指针数组,通过vector指针对某个特定的vector进行操作,是一个非常常见的编程技巧;
将各零散的不相关的数据整合到一个数组中,可以使用循环等结果对数据的顺序处理,vector类型通常将其指针整合到一个数组中,使用指针数组实现对若干个零散的vector的统一操作;
编程小技巧:
有关指针的初始化和使用:
初始化为0值;
使用时检测以防止对null指针进行提领操作
int *pi=0;
...
if(pi&&...)
...