这次做一个横版游戏,以前都是做完游戏后,才公布源码和制作过程。这回改一下,游戏没做,先讨论设计方法。
横版游戏像“超级玛丽”“魂斗罗”,首先要解决的问题是地图问题。我以前想把整个地图存在一个大数组里,当需要检测某个地方是什么时,直接从数组中读出。这种方法并不好,只有益智类、棋牌类的游戏,地图很小时,用数组比较合适(包括上次做的纸牌)。还是用“对象”封装的方法比较好。把地图中的元素都分割成一个个对象,然后用双向链表串起来。
对象的结构:每个对象首先有一个ID,说明这个对象是什么,例如:地面、树木、障碍物、金币、砖块、玩家、敌人等等。还要有坐标、宽高。还要有贴图信息,即这个对象是由哪些图片组成的,以及这些图片的组织方法。用这样的一个结构表示游戏画面中的所有东西。然后要考虑游戏逻辑:
1.吃金币-》金钱增加
2.顶带有“?”的砖块-》金钱增加,出现蘑菇
3.人物移动、跳跃-》人物移动到新的坐标,或无法移动,或没有落到地面上,游戏失败
4.碰撞到敌人-》游戏失败
5.落下,碰撞到敌人-》敌人角色死亡...
这些逻辑,都在碰撞检测后触发。触发这些逻辑事件后,需要做两项工作:1.相应数据更改(金钱增加、或角色消失)。2.播放相应动画(角色走动、子弹的动画、金币闪烁、分数显示)。
主要工作就这些,具体实现起来,该是怎样呢?是否应继续细化结构,类、函数的接口怎样设计,图像操作和特效怎么做,下回分解。