大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)


上一篇我们初步看了一下MainScene类的初始化方法里都做了神马事,其中随机化地图是在initGameDataFromGD方法里做的,我们就来深入看看这个方法.

该方法是一个比较长的方法,里面又调用了若干其他方法,我把其中主要的代码在下面列出来:

//用游戏数据初始化当前关卡的数据
-(void)initGameDataFromGD{
    [_gd loadGameData];

    //省略初始化HUD层的标签内容的一大堆代码

    _player.canAcrossBrick = _gd.canPlayerAcrossBrick;
    _player.canAcrossBomb = _gd.canPlayerAcorssBomb;

    _isPlayerSpeedUp = _gd.isPlayerSpeedUp;
    if (_isPlayerSpeedUp) {
        _player.speedPerStep = 0.4;
    }

    [self updateStateLabel];

    _totalSec = _gd.curLevelLeftTime;
    [_hudLayer updateTimeLabel:_totalSec];

    [self initNoWallTiles];
    //随机化地图方法
    [self randomCreateMap];
    [self initWalkableTiles];

    //初始化所有FS类的名称
    [FireSprite initClassNames];
    [self spawnFireSprites3];
}

该方法里面比较”杂”,它主要做了如下这些事:

  1. 将iOS设备中存储的数据读到内存中,这样每次玩的记录和内容都可以保存和再加载,这是在loadGameData方法中完成的,后面会介绍
  2. 根据游戏数据设置HUD层中对应的标签,HUD是我们游戏中的仪表盘:

其中包括了剩余的生命数,炸弹数,当前累积的分数,当前炸弹的威力大小,游戏剩余的时间等等标签.在实际游戏中显示如下:

最左边那列竖条实际是显示在屏幕可见范围之外,需要的时候在弹进来,这里先不用管吧.

  1. 根据游戏数据设置游戏主角的属性:是否可以穿墙和穿炸弹,是否处于高速移动状态
  2. 更新HUD中的状态标签,调用的是updateStateLabel方法,后面会提及
  3. 接下来初始化可布局的所有瓦块坐标,调用的方法是initNoWallTiles方法
  4. 然后调用randomCreateMap来创建随机地图,别急马上就会讲到
  5. 初始化所有可达的瓦块,调用的方法为initWalkableTiles方法
  6. 初始化FireSprite敌人类中的所有类名称
  7. 根据关卡中的数据”产出”敌人,调用的是spawnFireSprites3方法

(NO.00005)iOS实现炸弹人游戏(四):游戏数据的初始化(一)的更多相关文章

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

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

  2. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

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

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

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

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

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

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

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

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

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

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

  8. (NO.00005)iOS实现炸弹人游戏(一):游戏的整体规划设计

    在这新的系列中,我们来尝试完成一款经典的游戏:炸弹人 这是以前红白机上的炸弹人,由于游戏可玩性强,玩法又简单,在后面的机型上陆续推出了很多款续作. 在随后的触屏设备上也出现了炸弹人的模拟版,用的是模拟 ...

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

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

随机推荐

  1. FFT模板(BZOJ2179)

    实现了两个长度为n的大数相乘. #include <cstdio> #include <cmath> #include <complex> using namesp ...

  2. google-gson 解析json

    http://www.cnblogs.com/jianyungsun/p/6647203.html 在JSON官网我们可以查看到各个语法对json的支持,对于java来说比较成熟的是google-gs ...

  3. 【vuejs深入二】vue源码解析之一,基础源码结构和htmlParse解析器

    写在前面 一个好的架构需要经过血与火的历练,一个好的工程师需要经过无数项目的摧残. vuejs是一个优秀的前端mvvm框架,它的易用性和渐进式的理念可以使每一个前端开发人员感到舒服,感到easy.它内 ...

  4. 欢迎大家来到DevLegal的博客

    申明:以下博文欢迎转载,转载请注明出处和作者 若非作者原创,则会标记出处与原作者,其余则为原创. 本人在校大学僧一枚,软件工程专业,希望通过将自己的学习心得与体会写出来,勉励自己学习,同时与大家一起分 ...

  5. MySQL my.cnf 配置文件注释

    以下是my.cnf配置文件参数解释 [client] port                     = 3309socket                   = /home/longxiben ...

  6. 酷伯伯实时免费HTTP代理ip爬取(端口图片显示+document.write)

    分析 打开页面http://www.coobobo.com/free-http-proxy/,端口数字一看就不对劲,老规律ctrl+shift+c选一下: 这就很悲剧了,端口数字都是用图片显示的: 不 ...

  7. Radio Station

    B. Radio Station time limit per test:  2 seconds memory limit per test:  256 megabytes input: standa ...

  8. Bootstrap3 排版-引用

    在你的文档中引用其他来源的内容. 默认样式的引用 将任何 HTML 元素包裹在 <blockquote> 中即可表现为引用样式.对于直接引用,我们建议用 <p> 标签. Lor ...

  9. Bootstrap3 排版-改变大小写

    通过这几个类可以改变文本的大小写. <p class="text-lowercase">Lowercased text.</p> <p class=& ...

  10. Linux下文件的mtime/atime/ctime研究

    概述 在Linux下,对于某一个文件或文件夹时间的描述有三种:文件修改时间mtime,文件访问时间atime,文件状态改变时间ctime.在Linux下无法获取到文件的创建时间,因为根本就没有保存这个 ...