VC++贪吃蛇游戏设计+流程图(11)
时间:2017-02-26 15:40 来源:毕业论文 作者:毕业论文 点击:次
(4)英雄榜对话框的设计 贪吃蛇英雄榜对话框的设计,单击英雄榜菜单栏时,即弹出当前英雄榜所记录的最高得分以及当前等级与大名。如图1.8所示。 (5)游戏帮助菜单的设计 贪吃蛇游戏帮助菜单的设计,单击游戏帮助菜单栏时,会弹出相关帮助对话框。如图1.9所示。 图1.9游戏帮助对话框 1.1.2 主游戏类设计 (1)果实出现的设计思路 A:采用随机数生成果实出现坐标。 B:判断当前生成的果实坐标是否在贪吃蛇身体范围内。 C:如果在,重新生成直至不在为止。如果不在,则把坐标位置返回给调用对象。 (2)贪吃蛇更新的设计思路 A:接收玩家按下的方向键消息,并保存到方向变量中。 B:定义一个时间定时器,时间间隔由游戏等级决定如图1.10所示。 时间间隔 游戏等级 100ms 低 50ms 中 30ms 高 图1.10时间间隔与游戏等级对照 C:当每次时间间隔到达时,则根据方向变量来更新贪吃蛇body向量。 D:判断body向量的第一个元素中的坐标数据是否碰到边界或者蛇身如果有转到G步 E:判断body向量中的第一个元素中的坐标数据是否与当前坐标重合,如果有,表示贪吃蛇已迟到果实。这时就向贪吃蛇body向量添加一个元素,并重新生成一个果实。 F:重绘整个贪吃蛇界面及果实。重复前面步骤A~F G:游戏结束时,计算当前游戏分数,如果分数超过最高分,设置英雄榜中的写入标志并弹出英雄榜对话框;否则提示游戏结束。 1.1.3 核心算法设计 (1)主游戏类的实现 A:主游戏类的声明中包含了绘制蛇身函数,初始化游戏函数,随机果实分配函数以及设置当前游戏等级函数等的声明。代码如下: #ifndef __SNAKE_GAME_H__ #define __SNAKE_GAME_H__ //主游戏类 #include "Afxtempl.h" //插入模板头文件 #define GAME_LEVEL_LOW 2 #define GAME_LEVEL_NOR 4 #define GAME_LEVEL_HIGH 8 #define DIREC_UP 1 #define DIREC_DOWN 2 #define DIREC_RIGHT 3 #define DIREC_LEFT 4 #define LOW_LEVEL_SLEEP 100 #define NOR_LEVEL_SLEEP 50 #define HIGH_LEVEL_SLEEP 30 class CSnakeGame:public CWnd { public: void HeroWrite(); void ReDrawBody(CPoint pt); void InitGame(); CSnakeGame(); virtual ~CSnakeGame(); BOOL GameStart(); //游戏开始函数 void InitFoods(); //初始化果实函数 void SetGameLevel(int level); private: CPoint m_psFood; //当前食物坐标 int m_nDirect; //当前蛇先进方向 int m_nScore; //当前游戏分数 int m_nlevel; //当前游戏等级 int m_nHighScore; //当前游戏最高分 CArray<CPoint,CPoint> m_body; //蛇身向量 (责任编辑:qin) |