(NO.00004)iOS实现打砖块游戏(四):砖块类的实现
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)
用Xcode打开之前SpriteBuilder创建的项目,我们现在是时候写点代码了 ;)
创建Brick类头文件
新建一个Brick类,继承自CCSprite,打开Brick.h文件添加初始化类方法:
+(instancetype)brickWithColor:(BrickColor)color;
因为我们要产生各种颜色的砖块所以有必要写一个枚举来区分,新建一个Comm.h文件,在其中增加砖块颜色的枚举定义:
typedef enum {
brkColorUnknown,
brkColorBlack,
brkColorBlue,
brkColorGreen,
brkColorPink,
brkColorPoolBlue,
brkColorPurple,
brkColorRed,
brkColorYellow,
brkColorColours,
brkColorMax
}BrickColor;
回到Brick.h中使之包含Comm.h文件,我们还需要通过实例按颜色来区分砖块,所以在添加一个属性:
@property (nonatomic,assign,readonly) BrickColor brickColor;
我们还需要一个值来表示砖块的分值,so再定义一个属性:
@property (nonatomic,assign,readonly) NSInteger value;
注意我们不希望从外界能够修改该属性,所以将其定义为只读类型.
完成Brick类的实现
现在打开Brick.m文件,我们首先完成brickWithColor的实现:
+(instancetype)brickWithColor:(BrickColor)color{
NSString *brickImgPath = nil;
//砖块的分值
NSInteger value = -1;
switch (color) {
case brkColorBlack:
brickImgPath = @"Images/brickBlack.png";
value = 1;
break;
case brkColorBlue:
brickImgPath = @"Images/brickBlue.png";
value = 2;
break;
case brkColorGreen:
brickImgPath = @"Images/brickGreen.png";
value = 5;
break;
case brkColorPink:
brickImgPath = @"Images/brickPink.png";
value = 10;
break;
case brkColorPoolBlue:
brickImgPath = @"Images/brickPoolBlue.png";
value = 3;
break;
case brkColorPurple:
brickImgPath = @"Images/brickPurple.png";
value = 15;
break;
case brkColorRed:
brickImgPath = @"Images/brickRed.png";
value = 100;
break;
case brkColorYellow:
brickImgPath = @"Images/brickYellow.png";
value = 50;
break;
case brkColorColours:
brickImgPath = @"Images/brickColours.png";
value = 500;
break;
case brkColorUnknown:
case brkColorMax:
default:
NSAssert(NO, @"Invalid brick color!");
break;
}
Brick *brick = (Brick*)[CCBReader load:@"Elements/Brick"];
brick.spriteFrame = [CCSpriteFrame frameWithImageNamed:brickImgPath];
[brick setValue:value andColor:color];
return brick;
}
和一般实例创建方法不同的是,我们并没有使用[super init]方法,而是直接使用SpriteBuilder为我们现成准备好的建立实例方法,然后将其替换为对应的精灵帧文件即可.
下面创建一个方法来实现分值和颜色的设置:
-(void)setValue:(NSInteger)value andColor:(BrickColor)color{
_value = value;
_brickColor = color;
}
因为这两个属性在外界不可以设置,所以单独写一个方法来赋值.
(NO.00004)iOS实现打砖块游戏(四):砖块类的实现的更多相关文章
- (NO.00004)iOS实现打砖块游戏(七):关卡类的实现
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 关卡游戏的精髓都集中在游戏的关卡里,其中包含了游戏的所有要素,至 ...
- (NO.00004)iOS实现打砖块游戏(十):砖块!更多的砖块!
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 到目前为止游戏基本可玩,但是砖块数量是不变的,等玩家打光所有的砖 ...
- (NO.00004)iOS实现打砖块游戏(八):游戏中小球与砖块的碰撞
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在回到GameScene.m中,我们所有的碰撞处理就放在该类中 ...
- (NO.00004)iOS实现打砖块游戏(六):反弹棒类
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 打砖块游戏另一个要素是反弹棒,我们在这篇类来实现反弹棒类. 创建 ...
- (NO.00004)iOS实现打砖块游戏(五):游戏场景类
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 创建游戏场景类头文件 在Xcode创建新GameScene类,继 ...
- (NO.00004)iOS实现打砖块游戏(三):游戏主场景和砖块
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 制作墙体 首先在SpriteBuilder中新建Wall.ccb ...
- (NO.00004)iOS实现打砖块游戏(十四):3球道具的实现
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 反弹棒变化道具实现前面已经介绍过了,我们下面可以在小球上做些文章 ...
- (NO.00004)iOS实现打砖块游戏(十六):导弹发射道具的实现(下)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇我们完成了导弹道具相关的道具制作,本篇中我们来完成其实现 ...
- (NO.00004)iOS实现打砖块游戏(十五):导弹发射道具的实现(上)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇中我们实现了3球道具,但是好像还是不过瘾,如果能让反弹棒更 ...
随机推荐
- 毕业回馈-89C51之GPIO使用(流水灯)
今天分享一个89c51制作的8位流水灯案例.使用Proteus仿真. 同上一遍文章不同.上一篇文章中对于GPIO操作主要是位操作,即sbit led1=P0^0;其中P0^0代表p0.0这个引脚,然后 ...
- 入口开始,解读Vue源码(一)-- 造物创世
Why? 网上现有的Vue源码解析文章一搜一大批,但是为什么我还要去做这样的事情呢?因为觉得纸上得来终觉浅,绝知此事要躬行. 然后平时的项目也主要是Vue,在使用Vue的过程中,也对其一些约定产生了一 ...
- Linux允许、禁止ping包
默认情况下Linux系统允许ping,但是在某些情况下为了安全起见,我们都把服务器设置为禁ping 临时允许ping命令可使用命令: echo 0 >/proc/sys/net/ipv4/ic ...
- 腾讯北京SNG一面
写在前面 面试官超nice,以一种聊天的形式跟你交流.上午10点10左右开始,11点40结束.总的来说,基础还可以,但是有些东西的底层学的还是不够深. 问题回忆 自我介绍 怎么平衡科研与项目开发之间的 ...
- 算法二叉搜索树之AVL树
最近学习了二叉搜索树中的AVL树,特在此写一篇博客小结. 1.引言 对于二叉搜索树而言,其插入查找删除等性能直接和树的高度有关,因此我们发明了平衡二叉搜索树.在计算机科学中,AVL树是最先发明的自平衡 ...
- javascript装饰器模式
装饰器模式 什么是装饰器 原名decorator 被翻译为装饰器 可以理解为装饰 修饰 包装等意 现实中的作用 一间房子通过装饰可以变得更华丽,功能更多 类似一部手机可以单独使用 但是很多人都愿意家个 ...
- Ubuntu 16.04LTS 安装 MATLAB 2014B
环境:Ubuntu 16.04LTS 软件:MATLAB 2014B MATLAB 2014B 下载地址(带Crack): 链接: https://pan.baidu.com/s/1nvGtmEd 密 ...
- HTML5 唤起 APP
<p><a href="xxx://app/question/95">点击跳转,直接回帖报名</a></p> /* global n ...
- python脚本批量生成数据
在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...
- Go 语言多维数组
Go 语言支持多维数组,以下为常用的多维数组声明方式: var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type 以下实例声明了三维的整型数组: ...