超级玛丽制作揭秘15金币提示,攻击提示

 提示信息,是玩家得到的反馈。比如,碰到金币,金币消失,此时就要显示“+10”;攻击小怪,小怪却没有消失,这时要显示血条,告知玩家小怪的生命值。下面讲提示信息。
金币提示:
+10的字样,并没有用文字处理,而是用图片(4帧的动画)。这样,实现起来很简单,和爆炸效果用同一个数组存储,处理方法相同。
金币的碰撞检测函数:int GAMEMAP::CheckAni(int itimeclip)
代码:
 for(i=0;i<iCoinNum;i++)
 {
  //判断玩家是否碰到金币
    switch(MapCoinArray[i].id)
    {
    case ID_ANI_COIN:
     //碰到金币
     iMoney+=10; 
     //金币消失,显示+10字样
     ClearCoin(i);
     break;
金币消失函数:void GAMEMAP::ClearCoin(int i)
代码:
 switch(MapCoinArray[i].id)
 {
 case ID_ANI_COIN:
  //碰到了金币,显示+10字样. 和爆炸效果的处理一样, 只是图片id不同
  BombArray[iBombNum].show=1;
  BombArray[iBombNum].id=ID_ANI_COIN_SCORE;
  BombArray[iBombNum].iframe=0;
  BombArray[iBombNum].x=MapCoinArray[i].x-COIN_XOFF;
  BombArray[iBombNum].y=MapCoinArray[i].y-COIN_YOFF;
  iBombNum=(iBombNum+1)%MAX_MAP_OBJECT;
  break;
 }

攻击提示:需要给出攻击对象名称,血条。
存储:
 //攻击对象提示
 char AttackName[20];//攻击对象名称
 int iAttackLife;//攻击对象当前生命值
 int iAttackMaxLife;//攻击对象最大生命值

提示信息设置:在小怪被攻击的时候,设置提示信息。
函数:void GAMEMAP::ClearEnemy(int i)
代码:
//设置攻击对象生命值
 iAttackLife=MapEnemyArray[i].health;
 switch(MapEnemyArray[i].id)
 {
 case ID_ANI_BOSS_HOUSE:
  //设置名称
  strcpy(AttackName,"普通级火圈");
  //设置最大生命值
  iAttackMaxLife=BOSS_HEALTH;
其他攻击对象处理相似。

显示:
函数: void GAMEMAP::ShowOther(HDC h)
代码:
//如果攻击对象生命值不为0, 显示提示信息
 if(iAttackLife)
 {
  //输出名称
  TextOut(h,viewx+ATTACK_TO_TEXT_X,
   ATTACK_TO_TEXT_Y,AttackName,strlen(AttackName));
  
  //显示血条
  xstart=viewx+ATTACK_TO_X-iAttackMaxLife*10;
  //按最大生命值显示一个矩形, 作为背景
  bmMap.DrawItemNoMaskWidth(xstart-1, ATTACK_TO_Y-1,ID_MAP_HEALTH_BK,
   iAttackMaxLife*BMP_WIDTH_HEALTH, 0);
  //按当前生命值对应的宽度, 显示一个红色矩形
  bmMap.DrawItemNoMaskWidth(xstart, ATTACK_TO_Y,ID_MAP_HEALTH,
   iAttackLife*BMP_WIDTH_HEALTH, 0);
 }
提示信息功能完成。

金钱数量显示:和攻击提示位于同一个函数void GAMEMAP::ShowOther(HDC h)
代码:
 sprintf(temp,"MONEY: %d",iMoney);
 TextOut(h,viewx+20,20,temp,strlen(temp));
至此,攻击系统(子弹、旋风、蘑菇兵,火圈),金币(金币,金钱数量),提示信息(金币提示,攻击提示),这几类元素都介绍过了,还有一个,武器切换,就是从魂斗罗里抠来的那个东西,且听下回分解。
附:
超级玛丽第一版源码链接:http://download.csdn.net/source/497676
超级玛丽增强版源码链接:http://download.csdn.net/source/584350

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值