当玩家碰到武器包(就是魂斗罗里那个东西),攻击方式切换。
思路:把它放到存储金币的数组中,用id区别。碰撞检测时,如果是金币,金币消失,如果是武器包,攻击方式切换。
存储:和金币位于同一个数组MapCoinArray。
生成:由地图文件加载。比如第一关的地图文件数据:
25 4 52 25 5
各参数含义:横坐标 纵坐标 宽 高 图片id
加载函数:int GAMEMAP::LoadMap()
代码:和金币的加载相同,唯一区别是金币图片有4帧,武器包只有2帧,设置如下:
MapCoinArray[i].iframemax=2;
显示:和金币的处理相同,相同函数,相同代码。(再次显示出图像层的好处)
帧刷新:和金币的处理相同,相同函数,相同代码。(再再次显示出图像层的好处)
碰撞检测:和金币的处理相同。
函数:int GAMEMAP::CheckAni(int itimeclip)
代码:如果是武器包,设置新的攻击方式,武器包消失。
switch(MapCoinArray[i].id)
{
case ID_ANI_ATTACK:
//设置新的攻击方式
iAttack=ATTACK_MAGIC;
//武器包消失
ClearCoin(i);
break;
}
武器包的消失:和金币的处理相同,相同函数,相同代码,这是逻辑层的好处(放在同一个数组中,处理简单)。
至此,攻击系统,金币系统,提示信息,武器切换,全部完成。只需要一个地图把所有的物品组织起来,构成一个虚拟世界,呈现在玩家眼前。地图怎样处理?且听下回分解。
附:
超级玛丽第一版源码链接:http://download.csdn.net/source/497676
超级玛丽增强版源码链接:http://download.csdn.net/source/584350