(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;    //蛇身向量
上一篇:C#公司销售薪资系统设计+需求分析+ER图
下一篇:asp.net操作系统教学网站设计论坛模块

vc++几种排序算法演示软件实现

VC++在线学习平台的设计

VC++BlackList的主机防火墙设计+源代码

VC++五子棋游戏的设计

VC++基于GPU高光谱图像目标检测方法

基于VC++五子连珠游戏的设计

基于VC++俄罗斯方块游戏的设计

AT89C52单片机的超声波测距...

10万元能开儿童乐园吗,我...

志愿者活动的调查问卷表

承德市事业单位档案管理...

神经外科重症监护病房患...

公寓空调设计任务书

C#学校科研管理系统的设计

医院财务风险因素分析及管理措施【2367字】

中国学术生态细节考察《...

国内外图像分割技术研究现状