(NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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实现炸弹人游戏(五):游戏数据的初始化(二)的更多相关文章
- (NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近一直在做另一个RPG游戏,所以本系列迟迟没有更新,上一篇博 ...
- (NO.00005)iOS实现炸弹人游戏(三):从主场景类谈起
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我又粗粗看了下整个项目的代码,比较多: 不少类都与其他类有着千丝 ...
- (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小 ...
- (NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 用plist列表文件来表示游戏数据 因为在这个炸弹人游戏中有很多 ...
- (NO.00005)iOS实现炸弹人游戏(四):游戏数据的初始化(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇我们初步看了一下MainScene类的初始化方法里都做了神 ...
- (NO.00005)iOS实现炸弹人游戏(二):素材选择的取舍
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 前面一篇里我们基本明确了游戏的大致玩法和特点.下面就游戏中会用到 ...
- (NO.00005)iOS实现炸弹人游戏(一):游戏的整体规划设计
在这新的系列中,我们来尝试完成一款经典的游戏:炸弹人 这是以前红白机上的炸弹人,由于游戏可玩性强,玩法又简单,在后面的机型上陆续推出了很多款续作. 在随后的触屏设备上也出现了炸弹人的模拟版,用的是模拟 ...
- (NO.00005)iOS实现炸弹人游戏(十):游戏主角(三)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 下面我们来看游戏主角类里面几个播放特殊动画的方法,首先从run ...
- (NO.00005)iOS实现炸弹人游戏(九):游戏主角(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上篇介绍了游戏主角的初始化方法,下面我们一次来实现主角的其他方 ...
随机推荐
- 使用rsync在windows(服务端)与linux(客户端)之间同步
说明: 1.cwRsyncServer服务端 系统:Windows7 IP地址:192.168.0.110 2.Rsync客户端 系统:CentOS 6.7 IP地址:192.168.0.141 实现 ...
- Windows提示dll组件丢失
我们在运行一些软件时,常常会遇到这种问题.下面就来提供解决办法: 登陆网址:www.dll-files.com. 找到页面的搜索部分,并且进行相关搜索: 下图显示了相关的dll下载链接. 下载解压即可 ...
- Win10无法删除文件提示“你需要来自system的权限”
不得不说win10的管理权限非常迷 windows10用户在删除文件时,就会遇到错误提示"你需要来自SYSTEM的权限才可以对此文件夹进行更改".以下是具体解决方法. 解决方案 ...
- Linux下用程序实现统计cpu和内存的利用率
Linux下没有直接可以调用系统函数知道CPU占用和内存占用.那么如何知道CPU和内存信息呢.只有通过proc伪文件系统来实现. proc伪文件就不介绍了,只说其中4个文件.一个是/proc/stat ...
- c语言程序设计第四次作业——顺序结构
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- SpringMVC中url-pattern /和/*的区别
http://blog.csdn.net/u010648555/article/details/51612030
- js将当前时间格式化为年-月-日 时:分:秒
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- webpack 前后端分离开发接口调试解决方案,proxyTable解决方案
如果你有单独的后端开发服务器 API,并且希望在同域名下发送 API 请求 ,那么代理某些 URL 会很有用. dev-server 使用了非常强大的 http-proxy-middleware 包. ...
- Deap Learning (吴恩达) 第一章深度学习概论 学习笔记
Deap Learning(Ng) 学习笔记 author: 相忠良(Zhong-Liang Xiang) start from: Sep. 8st, 2017 1 深度学习概论 打字太麻烦了,索性在 ...
- lodop打印收费小票
//收费系统打印机功能:收费/退费,需要使用到lodop var LODOP;//打印机 $(function () { //初始化 $("body").append('<o ...