在这新的系列中,我们来尝试完成一款经典的游戏:炸弹人

这是以前红白机上的炸弹人,由于游戏可玩性强,玩法又简单,在后面的机型上陆续推出了很多款续作.

在随后的触屏设备上也出现了炸弹人的模拟版,用的是模拟手柄操作

那么我们尝试编写的炸弹人App和以前版本有什么不同呢?

1.首先玩家控制的方式不同

以前的版本需要实物手柄或模拟手柄操控,但是我们的炸弹人游戏完全是触屏版,不需要手柄控制.

2.两大类道具

玩家除了可以炸毁砖块取得标准道具外,还可以在游戏中随时使用即时道具,这将立刻改变游戏的敌我平衡,如果合理利用可以从劣势一下变为过关的优势.如果在商业游戏中可以考虑让玩家用RMB来购买这些”超级”道具:

如上图,目前设计3种超级道具,在后面我们会一一来实现.

因为实现的是炸弹人游戏,所以炸弹人游戏的精髓是不可缺少的,主要由以下几点:

1.玩家炸开砖块找到出口后,进入出口即告胜利,游戏进入下一关卡

2.如果游戏中玩家被自己炸弹炸到,被敌人碰到,或是用完剩余时间即告游戏失败,如果玩家生命为0则回到第一关开始游戏,否则从当前关卡重新开始

3.玩家可以在游戏中任意暂停和恢复

4.多种敌人

在猫猪版的炸弹人中设计了4种敌人,分别如下

  • 普通火焰人,特点:速度慢,在整个游戏中成呆傻状
  • 狗狗,特点:速度快,你跑不过它的…
  • 果冻怪,特点:速度最慢,但是可以时不时的瞬间移动,而且可以穿墙移动
  • 猫猫追踪者,特点:速度一般,但是可以偶尔猛追玩家不放,直到搞死玩家

根据想象力还可以有更多的敌人类型哦

5.还原FC炸弹人经典元素

如果炸弹炸到道具,道具就会被摧毁且变出一个新的敌人;如果炸到门,门中就会窜出一大堆敌人.

6.多种道具

游戏中道具多达12种,每种都有独特的效果:

//游戏道具枚举,其值和地图.tmx文件中properites地图块集中的ID值相对应
//其中数字的间断值表示此处没有道具(道具对应的地图集中的ID非法或无效)
typedef enum {
    GPTypeWinAtOnce = 0,
    GPTypeScoreUp = 1,
    GPTypeRemoteCtrl = 2,
    GPTypePowerUp = 3,

    GPTypeNoFearBomb = 5,
    GPTypeLifeUp = 6,
    GPTypeAddBomb = 7,
    GPTypeNeverDieLimit = 9,
    GPTypeAcrossBrick = 10,
    GPTypeSpeedUp = 12,
    GPTypeMarkExit = 13,
    GPTypeAcrossBomb = 14,

    GPTypeEmpty = 10000
}GamePropertyType;

基本实现了FC中的所有道具,比如穿墙,穿炸弹,无敌,无惧炸弹和遥控爆炸等等.连一些极其罕见的道具也得以还原(在原FC中非常少见的道具);并且添加了一些原作中没有的道具,比如透视出口等,增加了娱乐性.

7.随机地图的生成,随机出口和道具的摆放.每一关的地形都是不一样的.

游戏的基本设计就是这样了,后续文章中我们就来逐步完成这些设计理念,Follow me ;)

(NO.00005)iOS实现炸弹人游戏(一):游戏的整体规划设计的更多相关文章

  1. (NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近一直在做另一个RPG游戏,所以本系列迟迟没有更新,上一篇博 ...

  2. (NO.00005)iOS实现炸弹人游戏(三):从主场景类谈起

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我又粗粗看了下整个项目的代码,比较多: 不少类都与其他类有着千丝 ...

  3. (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小 ...

  4. (NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 用plist列表文件来表示游戏数据 因为在这个炸弹人游戏中有很多 ...

  5. (NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们现在来依次看一下上篇中提到的各个方法,首先介绍的是updat ...

  6. (NO.00005)iOS实现炸弹人游戏(四):游戏数据的初始化(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇我们初步看了一下MainScene类的初始化方法里都做了神 ...

  7. (NO.00005)iOS实现炸弹人游戏(二):素材选择的取舍

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 前面一篇里我们基本明确了游戏的大致玩法和特点.下面就游戏中会用到 ...

  8. (NO.00005)iOS实现炸弹人游戏(十):游戏主角(三)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 下面我们来看游戏主角类里面几个播放特殊动画的方法,首先从run ...

  9. (NO.00005)iOS实现炸弹人游戏(九):游戏主角(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上篇介绍了游戏主角的初始化方法,下面我们一次来实现主角的其他方 ...

随机推荐

  1. bzoj1913[Apio2010]signaling 信号覆盖 计算几何

    1913: [Apio2010]signaling 信号覆盖 Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1583  Solved: 646[Subm ...

  2. Redis wind7 安装

    下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择,这里我们下载 Red ...

  3. C语言程序设计第五次作业--循环结构(1)

    (一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5×(f-3 ...

  4. Linux查看CPU、内存、进程使用情况(转)

    在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...

  5. Linux学习之CentOS(十七)-----释放 Linux 系统预留的硬盘空间 与Linux磁盘空间被未知资源耗尽 (转)

    释放 Linux 系统预留的硬盘空间  大多数文件系统都会保留一部分空间留作紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash,给监 ...

  6. Cannot change version of project facet Dynamic Web Module to 2.5的解决

    步骤1 右键项目 点击Project Facets 修改里面的 Dynamic Web Module 成2.5 maven-update看下有没有解决 步骤2 没有就导入 <dependency ...

  7. java new 关键字到底做了什么?

    一.关键字new概述 "new"可以说是Java开发者最常用的关键字,我们使用new创建对象,使用new并通过类加载器来实例化任何我们需要的东西,但你是否深入了解过new在编译的瞬 ...

  8. vue.js-路由

    1:编写router.js   import Router from "vue-router" import Vue from "vue" import rou ...

  9. Goaccess解析nginx日志备忘

    参考 http://nginx.org/en/docs/http/ngx_http_log_module.html?&_ga=1.92028562.949762386.1481787781#l ...

  10. Hibernate之SchemaExport的使用

    @Test public void testCreateDB(){ Configuration cfg = new Configuration().configure(); SchemaExport ...