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

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


我们现在来依次看一下上篇中提到的各个方法,首先介绍的是updateStateLabel方法:

#pragma mark MainScene游戏相关辅助方法

//更新主角状态标签,格式为:神速 无敌 爆裂 穿墙 穿弹 遥控
-(void)updateStateLabel{
    NSString *state = [NSString stringWithFormat:@"%@%@%@%@%@%@",
                       _isPlayerSpeedUp ? @"神速":@"    ",
                       _player.isInvincible ? @"无敌":@"    ",
                       !_isFearBomb ? @"爆裂":@"    ",
                       _player.canAcrossBrick ? @"穿墙":@"    ",
                       _player.canAcrossBomb ? @"穿弹":@"    ",
                       _isManualExplode ? @"遥控":@"    "];
    [_hudLayer updateStateLabel:state];
}

代码很好理解,就是根据当前主角的状态创建状态字符串然后显示在标签中,当然更可取的方法是使用图标来显示,这个可以留作以后扩展.

接下来看一下initNoWallTiles方法,该方法的作用是遍历所有非墙的瓦块坐标,为后面的方法调用做准备,起到一个缓存数据换速度的目的:

//初始化不是墙的所有瓦块坐标,还要排除(0,0),(0,1),(1,0)三个瓦块.
-(void)initNoWallTiles{
    CGPoint badTilePos1 = ccp(0, 0);
    CGPoint badTilePos2 = ccp(0, 1);
    CGPoint badTilePos3 = ccp(1, 0);

    for (int x = 0; x < _tileMap.mapSize.width; x++) {
        for (int y = 0; y < _tileMap.mapSize.height; y++) {
            CGPoint tilePos = ccp(x, y);
            if (CGPointEqualToPoint(tilePos, badTilePos1) ||
                CGPointEqualToPoint(tilePos, badTilePos2) ||
                CGPointEqualToPoint(tilePos, badTilePos3)) {
                continue;
            }else if (![self isWallAtTileCoord:tilePos]) {
                [_notWallTiles addObject:[NSValue valueWithCGPoint:tilePos]];
            }
        }
    }
    NSAssert(_notWallTiles.count == 249, @"_notWallTiles must equ 249");
}

代码中依次遍历了所有瓦块,将非墙瓦块的坐标加入到_notWallTiles数组中,这样后面的随机生成地图方法里我们可以很方便的使用这些数据了.注意其中剔除了3个坐标,分别为:

(0,0) , (0,1) 和 (1,0)

因为游戏主角炸弹人需要在(0,0)处产生,所以(0,1)和(1,0)自然不能放置砖块,否则主角自身就会”死路一条”,最后用一个断言来检查非墙瓦块的个数是否为249,这个是事先手动计算好的,总共为30x10=300个瓦块,减去6*8=48个不可摧毁墙体,再减去3个上述坐标,最后剩余249个瓦块可以操作.

(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 ;) 上一篇我们初步看了一下MainScene类的初始化方法里都做了神 ...

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

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

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

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

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

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

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

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

随机推荐

  1. PHP Laravel框架入门心得 | How to study PHP Laravel Framework

    PHP有不少开发框架,其中比较出名的有Symfony和Laravel. 我说说我最近入门Laravel的感受和学习方法吧. 1.第一个感受是Laravel的社区讨论和学习资源真的是太棒了,中文化也做得 ...

  2. oracle安装过程和创建本地数据库

    环境: win7 64位 工具: PLSQL Developer 百度云下载:链接:https://pan.baidu.com/s/14L3VCG8YwHzpdhEN7ama0w 密码:jlre or ...

  3. 一个小小的抽奖活动测试脚本(python2.7)

    # coding=utf-8import requestsimport cx_Oracletns=cx_Oracle.makedsn('172.30.0.155',1521,'szdev')db1=c ...

  4. Linux之软链接与硬链接

    什么是链接? 链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件. 它是用来干什么的? 你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS ...

  5. C语言程序设计预备作业。

    1. 阅读邹欣老师的博客--师生关系,针对文中的几种师生关系谈谈你的看法,你期望的师生关系是什么样的? 答:我理想中的师生关系是Coach/Trainee(健身教练/健身学员)的关系.因为邹老师就如同 ...

  6. H3C系列之三层交换机系统版本升级

    本文涉及到的硬件与软件交换机:H3C S3600-28TP-SItftp软件:tftpd32小软件升级的文件:S36SI_E-CMW310-R1702P44.zip 关于升级的文件说明如下: S36S ...

  7. 解决警告: Setting property 'source' to 'org.eclipse.jst.jee.server_:' did not find a matching property.的方法

    今天第一次搭建struts2框架,跟着网上的教程导入对应的jar包之后就开始写登录的jsp页面,但是运行时出现了问题, 浏览器显示"The requested resource is not ...

  8. Luogu P1226 取余运算||快速幂_快速幂

    超短代码 #include<iostream> #include<cstdio> using namespace std; long long b,p,k; long long ...

  9. 关于java的Synchronized,你可能需要知道这些(下)

    上一篇文章介绍了synchronized的基本使用方法和实现,在实现部分说明了synchronized的底层实现依赖系统互斥锁mutex,但是这个一个重型锁,竞争导致线程阻塞挂起,后续拿到锁后再恢复线 ...

  10. MLDS笔记:浅层结构 vs 深层结构

    深度学习出现之前,机器学习方面的开发者通常需要仔细地设计特征.设计算法,且他们在理论上常能够得知这样设计的实际表现如何: 深度学习出现后,开发者常先尝试实验,有时候实验结果常与直觉相矛盾,实验后再找出 ...