消息处理系统和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!我们的程序框架已经出来了,这时你心中也一定有了一个相当清晰的轮廓吧!好了,到目前为止该游戏的整体规划也就可以告一段落了,今后几天的工作重心将转到具体模块的实现方法了。
浙公网安备 33010602011771号