看到大家这么支持,十分开心。继续开讲!这次讲游戏流程。大学时,很多人都做过俄罗斯方块,我当时做出来,也很开心。关键看一下流程:游戏开始,游戏胜负(有的会加一个暂停功能)。这是最简单的。
过关游戏,可以划分成不同的运行阶段,比如:开始菜单,游戏运行中,游戏胜负。像超级玛丽,要在进入游戏时,有一个停顿(显示生命,地图),当玩家胜利或失败后,需要画面停顿一段时间(也可以弹出个提示)。程序中,根据不同的状态,处理不同的消息和数据。有这样一个框架,程序就会比较清晰。整个过程如下:
显示部分,一般是WM_PAINT消息:
游戏初始状态:显示菜单,操作提示信息。
游戏等待状态:显示生命,地图信息。
游戏运行中:显示背景,地图,敌人,玩家角色,子弹,动画效果。
游戏胜负:显示提示信息。
游戏通关:显示通关提示信息。
按键处理部分(KEYDOWN,KEYUP):根据键值,再根据当前状态,作出不同处理。程序结构和以上相对应。这样有个好处,PAINT时,只负责绘图。KEYDOWN处理,只负责处理逻辑,然后发送PAINT消息。
还有大量的实时判断,放在哪里呢?如:子弹击中敌人,人物掉到河里,时间用完。这些处理放在WM_TIMER定时器消息里面(也要按照不同状态来处理)。这样就构成了三个部分: