VC++贪吃蛇游戏设计+流程图(11)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

VC++贪吃蛇游戏设计+流程图(11)


(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)