消息处理系统和Windows的消息处理机制其实非常相似,都是先等待消息,然后根据收到的消息转到相应的函数进行处理。所不同的是Windows 接收的消息大多是系统或是用户输入产生的,而我们的消息都是自定义的,如:在森林中行走时碰到了强盗,那么我们就让程序产生‘打斗消息’(即:Message=打斗),消息处理系统收到这个消息后就会马上转到打斗模块中去。

不要把消息处理想的太复杂,打个简单的比方:假如你是一位接线员,在你前面的桌上有很多部电话,那么你要做的是:有电话响时就接电话,没有电话响时就什么都不做。是不是很简单!其实消息处理也就是这个道理。

消息处理的大体框架如下:

 

//首先定义一些消息:

#define 行走 1 //行走消息定义为1

#define 打斗 2 //打斗消息定义为2

#define 对话 3 //对话消息定义为3

#define 升级 4 //升级消息定义为4

#define 事件 5 //事件消息定义为5

#define 结束 6 //结束消息定义为6

……

//定义程序中要用到的变量

DWORD Message; //消息变量

Role_Struct Hero; //定义小飞刀的属性结构

Map_Struct Map; //定义地图的属性结构

……

WinMain() //进入程序

{

初始化主窗口;

初始化DirectDraw环境,并调入程序需要的图形、地图数据;

while( 1 ) //消息循环

{

switch( Message )

{

case 行走: 行走模块();

case 打斗: 打斗模块();

case 对话: 对话模块();

case 事件: 事件模块();

case 退出: 退出游戏();

}

}

}

OK!我们的程序框架已经出来了,这时你心中也一定有了一个相当清晰的轮廓吧!好了,到目前为止该游戏的整体规划也就可以告一段落了,今后几天的工作重心将转到具体模块的实现方法了。