博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)
阅读量:7062 次
发布时间:2019-06-28

本文共 1817 字,大约阅读时间需要 6 分钟。

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

如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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个瓦块可以操作.

你可能感兴趣的文章
Android Listview中Button按钮点击事件冲突解决办法
查看>>
【技术篇】SQL的四种连接-左外连接、右外连接、内连接、全连接
查看>>
可翻折的TextViewExpandableTextView
查看>>
【软件工程】1.软件工程概述
查看>>
IOS学习和总结KVO
查看>>
Java EE7和Maven工程入门(2)
查看>>
MVP 模式在 Android 中的使用
查看>>
《数据结构》—— 队列
查看>>
hadoop 3.0 集群部署,超详细-Ali0th
查看>>
MySQL数据库MyISAM存储引擎转为Innodb
查看>>
我的友情链接
查看>>
在OpenSUSE上配置Apache+MySQL+PHP(写给自己看的笔记)
查看>>
初识Nginx
查看>>
Android WebView 缓存处理
查看>>
我的友情链接
查看>>
Nmap网络扫描从入门到精通实战视频课程
查看>>
我的友情链接
查看>>
简单讲解加密技术
查看>>
CentOS 7 编译安装PHP7
查看>>
CentOS7.5 安装golang语言环境
查看>>