(NO.00004)iOS实现打砖块游戏(四):砖块类的实现
2015-11-29 08:43
423 查看
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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; }
因为这两个属性在外界不可以设置,所以单独写一个方法来赋值.
相关文章推荐
- iOS开发>学无止境 - NSLocale的重要性和用法简介
- AJ学IOS 之第三方登录友盟实现
- AJ学IOS之安装cocoapods
- AJ学IOS之去除服务器返回数据中的html标签,去除指定字符串,替换字符串
- iOS开发>学无止境 - Cell 里的视图控制器
- iOS开发>学无止境 - 使用MVC模式帮ViewController瘦身
- AJ学IOS 之ipad开发Popover的调色板应用_popover显示后其他控件仍然能进行交互
- AJ学IOS 之ipad开发Popover的基本使用
- AJ学IOS 之ipad开发qq空间项目横竖屏幕适配
- AJ学IOS 之二维码学习,快速打开相机读取二维码
- AJ学IOS 之二维码学习,快速生成二维码
- AJ学IOS 之tableView的下拉放大图片的方法
- AJ学IOS 之BLOCK的妙用_利用block实现链式编程
- AJ学IOS 之微博项目实战(13)发送微博调用相机里面的图片以及调用相机
- AJ学IOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件
- AJ学IOS 之微博项目实战(11)发送微博自定义TextView实现带占位文字
- AJ学IOS 之微博项目实战(10)微博cell中图片的显示以及各种填充模式简介
- AJ学IOS 之微博项目实战(9)微博模型之时间相关重要操作,判断刚刚,昨天,今年等等
- AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- AJ学IOS 之CoreLocation反地理编码小Demo输入经纬度得到城市