(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球道具,但是好像还是不过瘾,如果能让反弹棒更 ...
随机推荐
- html表单验证
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- pytorch_SRU(Simple Recurrent Unit)
导读 本文讨论了最新爆款论文(Training RNNs as Fast as CNNs)提出的LSTM变种SRU(Simple Recurrent Unit),以及基于pytorch实现了SRU,并 ...
- OVF文件考究
一.什么是OVF文件 开源虚拟化格式OVF(不同于小写的ovf)文件是一种开源的文件规范,它描述了一个开源.安全.有效.可拓展的便携式虚拟打包以及软件分布格式,它一般有几个部分组成,分别是o ...
- dataview findrows
DataView dvStu = dsStu.Tables[0].Copy().DefaultView;//当前学年学期下所有学生 dvStu.Sort = "bjmc,xm"; ...
- display:none
$("#loadimg").css("display",""); <span id="loadimg" clas ...
- redis中密码设置
先打开redis-server 再打开redis-cli 在redis-cli对redis进行操作 可以通过编辑redis.conf配置文件来设置密码. 1.重启Redis设置密码: 在配置文件中有个 ...
- return、break和continue
return.break和continue 这三个关键字有一个共同点,那就是读能让后面的语句不执行,不同的地方就是挑的距离不一样. return很强大,如果一个函数中有一个return,并且执行了,那 ...
- GC其他:引用标记-清除、复制、标记-整理的说明
对象死亡历程 1.基本的mark&sweep是必须的,后续的都是对他的改进, 2.young代理的survivor就是使用了复制算法,避免碎片 3.还有标记整理算法(压缩),就是将存活的对象移 ...
- JavaScript 题目(作用域)
var length = 10 function fn(){ alert(this.length) } var obj = { length: 5, method: function(fn) { fn ...
- delphi 线程教学第四节:多线程类的改进
第四节:多线程类的改进 1.需要改进的地方 a) 让线程类结束时不自动释放,以便符合 delphi 的用法.即 FreeOnTerminate:=false; b) 改造 Create 的参数 ...