(NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)
来源:互联网 发布:excel防止数据丢失 编辑:程序博客网 时间:2024/06/06 05:35
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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个瓦块可以操作.
1 1
- (NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)
- (NO.00005)iOS实现炸弹人游戏(四):游戏数据的初始化(一)
- (NO.00005)iOS实现炸弹人游戏(六):游戏数据的初始化(三)
- (NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示
- (NO.00005)iOS实现炸弹人游戏(二):素材选择的取舍
- (NO.00005)iOS实现炸弹人游戏(九):游戏主角(二)
- (NO.00005)iOS实现炸弹人游戏(一):游戏的整体规划设计
- (NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)
- (NO.00005)iOS实现炸弹人游戏(十):游戏主角(三)
- (NO.00005)iOS实现炸弹人游戏(三):从主场景类谈起
- (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
- 初始化游戏状态数据二
- 炸弹人 游戏
- (NO.00004)iOS实现打砖块游戏(五):游戏场景类
- (NO.00004)iOS实现打砖块游戏(二):实现游戏主界面动画
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(五)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二十)
- Redis作为PHP session容器
- xcode必装插件VVDocumenter
- OC中的内存管理
- ArcGIS API for Javascript热区图
- JavaScript调用COM接口说明
- (NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)
- Storm入门教程:前言
- Win7x64下TortoiseSVN中patch后出现中文乱码的解决
- JAVA Properties使用
- 大数据量下高并发同步的讲解(不看,保证你后悔)
- Storm入门教程:安装部署步骤详解(1)
- sem_timedwait 会被signal的信号唤醒及处理办法
- python 定制类
- javascript标准对象与包装对象