超级玛丽制作揭秘13小怪和火圈,模板
小怪的显示问题.
蘑菇兵和火圈处于同一个数组,很简单.
函数:void GAMEMAP::ShowAniObj(MYANIOBJ & bmobj)
代码:
//显示敌人
for(i=0;i<MAX_MAP_OBJECT;i++)
{
if (MapEnemyArray[i].show)
{
bmobj.DrawItem(MapEnemyArray[i].x,MapEnemyArray[i].y,
MapEnemyArray[i].id,MapEnemyArray[i].iframe);
}
}
同样,如同图片处理所讲,显示一个图片,只需要坐标,id,帧.
帧刷新和小怪运动.
函数:void GAMEMAP::ChangeFrame(int itimeclip)
代码:
//移动时间:每隔一段时间ENEMY_SPEED,移动一下
if(0 == itimeclip% ENEMY_SPEED)
{
for(i=0;i<MAX_MAP_OBJECT;i++)
{
//如果小怪可见
if(MapEnemyArray[i].show)
{
//帧刷新
MapEnemyArray[i].iframe=(MapEnemyArray[i].iframe+1)%MapEnemyArray[i].iframemax;
switch(MapEnemyArray[i].id)
{
case ID_ANI_ENEMY_NORMAL:
case ID_ANI_ENEMY_SWORD:
//蘑菇兵移动(士兵,刺客)
MapEnemyArray[i].x+=MapEnemyArray[i].movex;
//控制敌人移动:向左移动到左边界后,移动速度movex改为向右。移动到右边界后,改为向左。
if(MapEnemyArray[i].movex<0)
{
if(MapEnemyArray[i].x<=MapEnemyArray[i].xleft)
{
MapEnemyArray[i].movex=ENEMY_STEP_X;
}
}
else
{
if(MapEnemyArray[i].x>=MapEnemyArray[i].xright)
{
MapEnemyArray[i].movex=-ENEMY_STEP_X;
}
}
break;
}
至此,所有小怪不停移动。(火圈的movex为0,不会移动)
碰撞检测和消失。
在前面的子弹、旋风的碰撞处理中已讲过。碰撞后,生命值减少,减为0后,消失。
火圈.
火圈会产生新的蘑菇兵,怎样实现的呢?思路:不断地检测火圈是否出现在屏幕中,出现后,生成蘑菇兵。
函数:int GAMEMAP::CheckAni(int itimeclip)
代码部分:
//如果在显示范围之内,则设置显示属性
for(i=0;i<MAX_MAP_OBJECT;i++)
{
//判断是否在屏幕范围内
if ( IN_AREA(MapEnemyArray[i].x, viewx, VIEWW) )
{
//如果有生命值,设置为可见
if(MapEnemyArray[i].health)
{
MapEnemyArray[i].show=1;
switch(MapEnemyArray[i].id)
{
//普通级火圈
case ID_ANI_BOSS_HOUSE:
//每隔一段时间, 产生新的敌人
if(itimeclip == TIME_CREATE_ENEMY)
{
MapEnemyArray[iMapEnemyCursor]=gl_enemy_normal;
MapEnemyArray[iMapEnemyCursor].x=MapEnemyArray[i].x;
MapEnemyArray[iMapEnemyCursor].y=MapEnemyArray[i].y+32;
//移动游标
iMapEnemyCursor=(iMapEnemyCursor+1)%BOSS_CURSOR;
}
break;
//下面是战斗级火圈,处理相似
}
}
}
else
{
//不在显示范围内,设置为不可见
MapEnemyArray[i].show=0;
}
}
这样,火圈就不断地产生蘑菇兵.
再说一下模板.
这里的模板不是c++的模板.据说template技术已发展到艺术的境界.游戏中用到的和template无关,而是全局变量.如下:
//普通蘑菇兵
struct ROLE gl_enemy_normal=
{
0,
0,
32,
32,
ID_ANI_ENEMY_NORMAL,
0,
2,
0,
0,
-ENEMY_STEP_X,//speed
1,
1
};
当火圈不断产生新的蘑菇兵时,直接把这个小怪模板放到数组中,再修改一下坐标即可.(对于蘑菇刺客,还要修改id和生命值)
游戏的主要逻辑完成.此外,还有金币,爆炸效果等其他动态元素,它们是怎么实现的?且听下回分解。
附:
超级玛丽第一版源码链接:http://download.csdn.net/source/497676
超级玛丽增强版源码链接:http://download.csdn.net/source/584350
超级玛丽制作揭秘13小怪和火圈,模板相关推荐
- 超级玛丽制作揭秘12旋风攻击,小怪,火圈
书接上回.前面介绍了子弹的生成.显示.运动.碰撞.消失的过程.这个过程可以推广到其他精灵上.今天讲旋风.蘑菇兵.火圈. 作为魔法攻击方式的旋风,和子弹大同小异. 旋风的存储与子弹同存储在一个数组中,如 ...
- 超级玛丽制作揭秘5魔法攻击 类MYANIMAGIC
类说明:玩家有两种攻击方式:普通攻击(子弹),魔法攻击(旋风).这个类是专门处理旋风的.我最初的想法是用一些特殊的bitblt方法制造特效,例如或.与.异或.试了几次,都失败了.最后只能用" ...
- QQ空间Qzone龙年春节彩蛋“会喷火的龙”制作揭秘
by Rizen 一.背景 今年春节Qzone做的春节活动是让用户许三个新年愿望(发表空间说说的方式),然后自己去拉好友来"赞"自己发的愿望,当每一个愿望积累"赞&quo ...
- 【Cocos Creator 实战 1 】跑酷_马戏团_跳火圈
仿照参考下面链接教程所作 https://blog.csdn.net/potato47/article/details/51295889 [游戏简要] 1打开游戏角色默认播放run动画 2点击屏幕角色 ...
- html5 canvas粒子火圈动画js特效
下载地址 一款基于html5 canvas制作的粒子火圈动画特效,粒子火圈旋转着并火光四溅的动画效果. dd:
- 125KHz 100cm ID 读卡电路_智能卡制作频率13.25MHZ与125KHZ的区别
经常我们在制作智能卡的时候会遇见频率这个词,今天有个客户想知道智能卡响应频率13.25MHZ与125KHZ的区别.其实这也是大部分客户想知道的东西,今天我就讲一下智能卡制作频率13.25MHZ与125 ...
- 央视揭秘“微商传销”:通过朋友圈炫富发展下线
央视揭秘"微商传销":通过朋友圈炫富发展下线 2016-02-22 08:12:00 现代快报 原标题:央视揭秘"微商传销" 通过朋友圈炫富发展下线 一份工 ...
- (链表解决)13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子,找出最后留在圈子里的人的序号。
题目 13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子.找出最后留在圈子里的人的序号. 代码 #include <stdio.h> #define n 13 ty ...
- 【视频教程】帝国CMS制作网站系列教程13—全站全文搜索及模板
作为一个程序员,搭建一个自己的博客网站是件非常容易的事情,但是作为很多非程序员非计算机专业的学习者来讲,可能就需要花点时间进行学习,而如果你想通过自学来学习怎么制作一个属于自己的网站的话,那这套帝国C ...
最新文章
- html作业三,3.15作业
- word转换成pdf java代码_java代码实现word转换成pdf
- LeetCode 1910. 删除一个字符串中所有出现的给定子字符串
- phalapi-进阶篇1(Api,Domain,和Model)
- 开放式系统编程技术_使用开放式硬件构建更好的辅助技术
- LINUX用C检查文件的大小的代码
- http长轮询短轮询
- cocos2dx lua代码和图片资源加密和解密
- Draft:IPv6 Neighbor Discovery Multicast Address Listener Registration翻译
- 关于我用iVX沉浸式体验了一把0代码创建电影院购票小程序这件事
- 【有利可图网】PS教程:设计制作一颗超逼真的精致透明玻璃球!
- dell win10忘记密码怎么办
- 台式机安装Windows11正式版(跳过TPM)
- 即时通讯环信IM的集成使用
- 字符格式(gbk utf8等)
- 苹果AI秀——Core ML强势来袭
- ChatGPT真的像媒体宣传的那样“四平八稳”吗?
- 电脑任务栏桌面图标透明紊乱解决方法
- Oracle EBS R12 AP应付模块 查询发票付款信息SQL
- 一元线性回归模型及其Python案例
热门文章
- 永中“闹鬼”,天理不容
- 零基础程序员想要学好.Net,跟着这7个步骤学习就可以了
- call的用法及底层实现
- SpringMVC框架面试专题(初级-中级)-第六节
- bash: vue: command not found 或则 ‘vue‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
- Linux环境下交叉编译mosquitto及其依赖
- 服务器2012r2系统安装管理员,尽管受委派的管理员必须启用 Windows Server 2012 R2 中的更改权限设置 Acl cmdlet 无法正常工作...
- 利用RIS远程安装Windows系统
- 解决Excel使用透视表的那些困扰,透视表增删改、新增比值字段、填充、拆分多表、非重复计数
- 公司,Oracle SQL 查询练习