(NO.00004)iOS实现打砖块游戏(四):砖块类的实现
2015-11-29 08:43
459 查看
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)
用Xcode打开之前SpriteBuilder创建的项目,我们现在是时候写点代码了 ;)
因为我们要产生各种颜色的砖块所以有必要写一个枚举来区分,新建一个Comm.h文件,在其中增加砖块颜色的枚举定义:
回到Brick.h中使之包含Comm.h文件,我们还需要通过实例按颜色来区分砖块,所以在添加一个属性:
我们还需要一个值来表示砖块的分值,so再定义一个属性:
注意我们不希望从外界能够修改该属性,所以将其定义为只读类型.
和一般实例创建方法不同的是,我们并没有使用[super init]方法,而是直接使用SpriteBuilder为我们现成准备好的建立实例方法,然后将其替换为对应的精灵帧文件即可.
下面创建一个方法来实现分值和颜色的设置:
因为这两个属性在外界不可以设置,所以单独写一个方法来赋值.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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; }
因为这两个属性在外界不可以设置,所以单独写一个方法来赋值.
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 我是运营,我没有假期
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- 纯javascript实现的小游戏《Flappy Pig》实例