超级玛丽制作揭秘14爆炸效果,金币

【Unity2D】实现打怪掉落物品(如爆金币等)的功能 本文章记录实现打怪掉落物品的功能,以下代码为2D实现,3D模式稍加修改即可。 阅读详情

 大家的支持就是我的动力。

子弹每次攻击到效果,都会显示一个爆炸效果。只涉及图片显示,它的结构很简单。如下:
struct MapObject
{
 int x;
 int y;
 int w;
 int h;
 int id;
 int iframe;
 int iframemax;//最大帧数
 int show; //是否显示
};
存储问题。
爆炸效果仍然使用数组加游标的方法,如下:
 struct MapObject BombArray[MAX_MAP_OBJECT];
 int iBombNum;

生成。
当子弹和小怪碰撞后,生成。
函数:void GAMEMAP::ClearEnemy(int i)
代码部分:
 //生成
BombArray[iBombNum].show=1;
 BombArray[iBombNum].id=ID_ANI_BOMB;
 BombArray[iBombNum].iframe=0;
 BombArray[iBombNum].x=MapEnemyArray[i].x-BOMB_XOFF;
 BombArray[iBombNum].y=MapEnemyArray[i].y-BOMB_YOFF;
 //修改数组游标
 iBombNum=(iBombNum+1)%MAX_MAP_OBJECT;

显示。
和子弹、小怪的显示方法相同。
函数:void GAMEMAP::ShowAniObj(MYANIOBJ & bmobj)
代码部分:
 for(i=0;i<MAX_MAP_OBJECT;i++)
 {
  if (BombArray[i].show)
  {
   ystart=BombArray[i].y;
   xstart=BombArray[i].x;
   bmobj.DrawItem(xstart,ystart,BombArray[i].id, BombArray[i].iframe); 
  }
 }

帧刷新。
和子弹、小怪的帧刷新方法相同。
函数:void GAMEMAP::ChangeFrame(int itimeclip)
代码部分:
for(i=0;i<MAX_MAP_OBJECT;i++)
 {
  if(BombArray[i].show)
  {
   BombArray[i].iframe++;
//当第四张图片显示完毕,设置为不可见。
   if(BombArray[i].iframe>3)
   {
    BombArray[i].show=0;
   }
  } 
 }

碰撞检测:爆炸效果不涉及碰撞检测。
消失:如上所述,爆炸效果在动画结束后消失。

金币。
金币的处理比小怪更简单。当玩家和金币碰撞后,金币消失,增加金钱数量。
存储问题。
用数组加游标的方法(下一个版本中封装起来),如下:
 struct MapObject MapCoinArray[MAX_MAP_OBJECT];
 int iCoinNum;

金币的生成。
和小怪相似,从地图文件中加载。以第二关为例,地图文件中的金币数据是:
6 5 32 32 3    
7 5 32 32 3    
8 5 32 32 3    
9 5 32 32 3    
18 4 32 32 3   
19 4 32 32 3   
20 4 32 32 3
数据依次表示横坐标,纵坐标,宽,高,图片id
函数:int GAMEMAP::LoadMap()
代码部分:
 while(temp[0]!='#' && !feof(fp))
 {
  sscanf(temp,"%d %d %d %d %d",
   &MapCoinArray[i].x,
   &MapCoinArray[i].y,
   &MapCoinArray[i].w,
   &MapCoinArray[i].h,
   &MapCoinArray[i].id);   
  MapCoinArray[i].show=1;
  MapCoinArray[i].iframe=0;
  //坐标转换,乘以32
  MapCoinArray[i].x*=32;
  MapCoinArray[i].y*=32;
  //设置这个动画元件的最大帧
  switch(MapCoinArray[i].id)
  {
  case ID_ANI_COIN:
   MapCoinArray[i].iframemax=4;
   break;
  }
  i++;
  iCoinNum++;
  //读取下一行数据
  FGetLineJumpCom(temp,fp); 
 }

金币显示:
和小怪的显示方法相同.
函数:void GAMEMAP::ShowAniObj(MYANIOBJ & bmobj)
代码:
 //显示金币,和其他物品
 for(i=0;i<iCoinNum;i++)
 {
  ystart=MapCoinArray[i].y;
  xstart=MapCoinArray[i].x;
  bmobj.DrawItem(xstart,ystart,MapCoinArray[i].id, MapCoinArray[i].iframe); 
 }

金币帧刷新:
和小怪的帧刷新方法相同.
函数:void GAMEMAP::ChangeFrame(int itimeclip)
代码:
 for(i=0;i<MAX_MAP_OBJECT;i++)
  {
   //如果金币可见,帧加一
   if(MapCoinArray[i].show)
   {       MapCoinArray[i].iframe=(MapCoinArray[i].iframe+1)%MapCoinArray[i].iframemax;
   }
  }

金币碰撞检测:
和小怪的碰撞检测方法相似,区别在于:金币的碰撞检测没有判断是否可见,只要金币位于屏幕中,和玩家碰撞,则金币消失,金钱数量iMoney增加。
函数:int GAMEMAP::CheckAni(int itimeclip)
代码:
 for(i=0;i<iCoinNum;i++)
 {
  tempx=MapCoinArray[i].x;
  tempy=MapCoinArray[i].y;
  
  if ( IN_AREA(tempx, viewx-32, VIEWW) )
  {
   //玩家坐标是rmain.xpos rmain.ypos
   if( RECT_HIT_RECT(rmain.xpos,
    rmain.ypos,
    32,32,
    tempx,
    tempy,
    MapCoinArray[i].w,MapCoinArray[i].h)
    )
   {
    switch(MapCoinArray[i].id)
    {
    case ID_ANI_COIN:
     //增加金钱数量
     iMoney+=10; 
     //金币消失
     ClearCoin(i);
     break;
    }    
    return 0;
   }  
  }
 } // end of for

金币消失:
和小怪的消失不一样.不需要设置show为0, 而是直接删除元素.即数组移动的方法.
函数:void GAMEMAP::ClearCoin(int i)
代码:
 //检查合法性
 if(i<0 || i>=iCoinNum)
  return;
 //减少一个金币,或者减少一个其他物品
 for(;i<iCoinNum;i++)
 {
  MapCoinArray[i]=MapCoinArray[i+1];
 }
 //修改数量
 iCoinNum--;
由此可见,直接删除元素,省去了是否可见的判断。但凡事都有两面性,移动数组显然比单个元素的设置要慢(实际上不一定,可以优化)。方法多种多样,这就是程序的好处,永远有更好的答案。
所有的动态元素都介绍完了。所谓动态元素,就是有一个生成、运行、销毁的过程。只不过,有的复杂一些,如子弹、旋风、蘑菇兵、火圈,有些元素简单一些,如爆炸效果、金币。方法都大同小异,要强调的是,这不是最好的方法。碰到金币后,会出现‘+10’的字样,怎么做呢?这个问题会再次说明,方法多种多样。且听下回分解。
附:
超级玛丽第一版源码链接:http://download.youkuaiyun.com/source/497676
超级玛丽增强版源码链接:http://download.youkuaiyun.com/source/584350

如何用python制作游戏,利用python制作小游戏 可爱的金币天使朗诵起了秋天的诗句还玩着用Python的海龟画图模块制作的3D物理互碰弹球。秋日的私语可不能告诉别人,那就是,我要送你一束火红的鲜花。《Python创意编程100例turtle篇》是李兴球原创的用turtle模块编制作精选作品集合。大家好,小编来为大家解答以下问题,如何用python制作游戏,利用python制作小游戏,今天让我们一起来看看吧!大家好,小编来为大家解答以下问题,如何用python制作游戏,利用python制作小游戏,今天让我们一起来看看吧!第39例:turtle射击游戏基础。 阅读详情

相关推荐

马里奥制造 超级玛丽制造 maker

马里奥制造 超级玛丽制造 maker 移动端 pc端 安卓

超级玛丽制作揭秘21游戏数据管理

 进入每一关之前,需要对所有游戏数据初始化。进入隐藏地图,同样需要初始化。而且,从隐藏地图返回上层地图,还要保证玩家角色出现在“出水管”处。地图数据、玩家数据、视图数据,都要设置正确。所有的游戏数据,即封装在gamemap中的数据,分成如下几种:场景数据:包含当前关卡的地图,所有精灵,金币,提示信息。视图数据:视图窗口坐标。玩家数据:玩家角色的个人信息,例如金钱数量,攻击方式,游戏次数。1. 

programking的快乐生活 1375

iframe调用加loading特效

iframe调用加loading特效特别合适远程调用速度慢而等待问题,简单方便

超级玛丽制作揭秘12旋风攻击,小怪,火圈

书接上回。前面介绍了子弹的生成、显示、运动、碰撞、消失的过程。这个过程可以推广到其他精灵上。今天讲旋风、蘑菇兵、火圈。作为魔法攻击方式的旋风,和子弹大同小异。旋风的存储与子弹同存储在一个数组中,如下:struct ROLE FireArray[MAX_MAP_OBJECT];使用时,用id区分。旋风生成函数:int GAMEMAP::CheckAni(int itimeclip)代码部分: //发

programking的快乐生活 1428

5种爆炸序列帧贴图

5种爆炸贴图资源;适合2D游戏开发;还有一些TGA和PSD资源,方便用PS调整;

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

max_map_count超出导致的OOM

max_map_count超出导致的OOM

虚极静笃 2万+

手把手教你做基于stm32的红外、语音、按键智能灯光控制(上)

这次项目使用的板子是stm32f103c8t6最小系统板,这个板子在tb上都能够买到,随便一个最小系统板都可以,== 注意在买最小系统板的时候需要买一个stlink下载器来下载程序。显示模块是使用的0.96英寸的OLED屏幕,注意是使用的IIC通信协议的OLED屏幕,不是使用SPI总线协议的。这次写的代码还顺便集成了检测温湿度的功能,所以要使用DHT11温湿度传感器,来采集温度。本文所设计的基于单片机的灯光控制系统主要由模式选择功能、手动模式和自动模式组成。LED灯自然就是要控制的部件了。

nbbskk的博客 6557

超级玛丽

MARIO CODE INSIDE超级玛丽制作揭秘制作 programking  博客 http://blog.youkuaiyun.com/programking  目  录 一、       超级玛丽制作揭秘1工程开始... 2二、       超级玛丽制作揭秘2图片基类MYBITMAP. 4三、       超级玛丽制作揭秘3游戏背景 类MYBKSKY. 7四、 

lipu13314601878的专栏 3087

如何使用3D高斯分布进行环境建模

使用3D高斯分布来进行建模,关键在于通过引入不确定性描述来提高建图的鲁棒性和精度。与传统点云表示相比,3D高斯分布提供了一种更为灵活和有效的方式来处理空间数据,能够通过协方差矩阵表示点的空间不确定性,帮助优化SLAM过程中的定位和地图更新。

JaydenQ的博客 2355

有限元中的对称魔法:用1/6模型算整个涡轮叶片(含MATLAB代码)

本文深入解析了有限元分析中针对循环对称结构的高效求解策略。通过利用涡轮叶片等结构的几何重复性,仅需对1/6基本扇区建模并施加循环对称条件,即可精确推演整体力学行为,大幅降低计算规模。文章从数学原理推导到MATLAB代码实现,提供了完整的实战指南,适用于旋转机械的静力、模态及谐响应分析。

fire9的博客 310

利用python制作小游戏,如何用python制作游戏

生机勃勃的农场孕育了漂亮的二叉分形树。可爱的金币天使朗诵起了秋天的诗句还玩着用Python的海龟画图模块制作的3D物理互碰弹球。秋日的私语可不能告诉别人,那就是,我要送你一束火红的鲜花。《Python创意编程100例turtle篇》是李兴球原创的用turtle模块编制作精选作品集合。在这个集合里包括了历史、天文、国学、游戏、音乐艺术、课件、数学几何、编程技巧、绘画艺术甚至相声与诗词等。大家好,小编来为大家解答以下问题,如何用python制作游戏,利用python制作小游戏,今天让我们一起来看看吧!

chatgpt001的博客 476

从零到一:ESP32-P4 PPA加速的配置陷阱与避坑指南

本文详细解析ESP32-P4结合LVGL的PPA硬件加速配置中的常见陷阱,包括内存对齐、缓冲区设置和同步机制等关键问题。提供实用的避坑指南和优化方案,帮助开发者高效启用esp32p4的PPA加速功能,显著提升图形渲染性能。

sky77的博客 396

Python创意编程100例turtle篇题目串烧

海龟变身孙悟空,迷宫寻宝讲相声! 哪吒妙用孙子兵法,世界名人尽赞之。忍者品德好,遇见合金弹头主角时怦然心动了,赠送了他花框音乐盒。 生机勃勃的农场孕育了漂亮的二叉分形树。超级玛丽玩起坦克大战还邀请解《》放《》军一起击落外星木马战队。可爱的金币天使朗诵起了秋天的诗句还玩着用Python的海龟画图模块制作的3D物理互碰弹球。 奥特曼原来很喜欢玩跳跃方块游戏和星际赛车游戏啊。后羿射日之前在干什么呢?原来...

李兴球的专栏 1万+

Win10环境下VS2019离线部署OnnxRuntime的完整指南

本文提供了在Windows 10系统下,为Visual Studio 2019进行OnnxRuntime离线部署的完整教程。针对网络受限环境,详细讲解了如何获取正确的离线安装包、配置本地NuGet源,并逐步指导项目配置与测试,确保AI模型在C++环境中顺利运行。

weixin_29205061的博客 400

【定位模块算法】amcl(蒙特卡洛)粒子滤波定位算法(附C++代码)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言(1)amcl定位框架介绍(2)amcl定位框架组成(1)ROS-TF坐标转换树【ROS的工具】(2)robot_pose_ekf扩展卡尔曼位姿估计算法(3)定位amcl自适应蒙特卡洛定位,adaptive monte carlo localizaion**(3)amcl定位节点的订阅与发布(4)amcl定位功能包用法(1)编写amcl节点相关的launch(amcl_omni.l

qq_35635374的博客 4402

python创意turtle作品和代码,python turtle简单绘图

可爱的金币天使朗诵起了秋天的诗句还玩着用Python的海龟画图模块制作的3D物理互碰弹球。秋日的私语可不能告诉别人,那就是,我要送你一束火红的鲜花。《Python创意编程100例turtle篇》是李兴球原创的用turtle模块编制作精选作品集合。在这个集合里包括了历史、天文、国学、游戏、音乐艺术、课件、数学几何、编程技巧、绘画艺术甚至相声与诗词等。大家好,小编来为大家解答以下问题,用python的turtle画炫酷的图,python创意turtle作品和代码,今天让我们一起来看看吧!

2401_84668251的博客 1113

【C语言趣味教程】(0) 专栏介绍

这是一套C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人一贯的幽默式写作风格,当然,在有趣的同时也同样会保证文章的质量,旨在能够产出"有趣的干货" !本系列教程不管是零基础还是有基础的读者都可以阅读,可以先看看目录!标题前带星号 (*) 的部分不建议初学者阅读,因为内容难免会超出当前章节的知识点,面向的是对 C 语言有一定基础或已经学过

有道无术, 术尚可求。有术无道, 止于术。 2万+

coji小机器人_WowWee COJI 可编程机器人玩具——也许是我想多了

WowWee COJI 可编程机器人玩具——也许是我想多了2017-03-18 19:53:1510点赞18收藏14评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情国内新低价:WowWee COJI 可编程机器人玩具+凑单品¥210.34+¥25.73含税直邮(约¥236.07)儿童编程玩具,...

weixin_39972264的博客 627

Adams Car——Adams car与Simulink联合仿真

Adams与simulink悬架联合仿真

Mr.邹的博客 2125

【区块链 知识图谱】(高清、超详细)

本资源是【区块链 知识图谱】(高清、超详细),包含区块链开发Go语言,区块链分布式开发、Go与区块链面试强化、后端技术体系、区块链密码学、区块链分布式应用等等。适合Go语言开发者或区块链开发者知识的学习、整理。

android金币动效_5分钟快速实现Android爆炸破碎酷炫动效

原标题:5分钟快速实现Android爆炸破碎酷炫动效 今天分享的是ReadyShowShow同学的原创文章,一个破碎动画效果的实现套路,这个破碎动画,是一种类似小米系统删除应用时的爆炸破碎效果的动画。(原文链接:https://www.jianshu.com/p/11bed7dabe2c)效果图展示先来看下是怎样的动效(图片录制效果有点差,请见谅)。 一行代码即可调用该动画 newExplosio...

weixin_39794130的博客 473

Firefox Setup 52.9.0esr.exe

支持WinXP和Vista系统的最后的火狐浏览器Firefox ESR 52.9.0FireFox 52将是能够支持Windows XP和Windows Vista系统的最后的火狐浏览器。此外用户若希望获得新的功能,则需要将系统升级到Win7、Win10。

C++ 超级玛丽制作揭秘(包含完整源文件与文档)

首先,我说说对C++的最直观的感受吧!熟悉了.net 智能提示,开始一开始发现C++根本没有提示了。后来google了一下,下载了一个visual assist 这个插件,比vs自动提示强多了。 然后,就是习惯了在.net中,把所有的声明和方法实现写在同一文件中。可是C++不是这么回事。 他一个声明在头文件中,实现 在源文件中,说实在话,一开始并怎么习惯。后来渐渐就习惯了。然后,写C++的文件就是...

6625

creo3许可证

creo3许可证,网上有安装视频教程。安装前先看视频。

STM32F750 LWIP实现NETCONN_TCP 服务器(UCOSIII版本)【支持STM32F7系列单片机_网络通信】

STM32F750 LWIP网络通信实战。项目支持STM32F7系列单片机调测和移植。项目代码可直接编译、运行。

Android 流星雨,红包雨,大爆炸,瀑布飞花以及涟漪等炫酷效果

Leonids是一个与标准Android UI配合使用的粒子系统库。该库非常轻巧,LeonidsLib.jar只有81Kb。 首先声明一点:因为我也是刚了解ParticleSystem,因为我只是需要用里面的效果,说的不对的地方大家可以指出来。 我了解的效果有红包雨,流星雨,大爆炸,瀑布飞花以及涟漪这几张效果,其实还可以做很多的效果,需要自己去研究亲自试一试就明白了。 老规矩先看图: 流星...

李建国的博客 4474

Android ExplosionField之粒子破碎爆炸效果

Android ExplosionField之粒子破碎爆炸效果

shenggaofei的博客 622

Android实现图片点击爆炸效果

实现效果: 需要注意的点: ValueAnimator ValueAnimator,是针对值的,也就是说ValueAnimator不会对控件进行任何操作,而是控制值的变化,然后我们监听这个值的变化过程,从而来控制控件的变化。什么意思呢?例如我们使用属性动画来控制TextView的位移,我们在初始化ValueAnimator时,会设置一个初始值和结束的值,假如我用这两个值来控制Tex...

adolph_lu的博客 1084
上一篇: 研究生
下一篇: 超级玛丽制作揭秘15金币提示,攻击提示
programking
博客等级 码龄23年 450粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值