大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! 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实现打砖块游戏(四):砖块类的实现的更多相关文章

  1. (NO.00004)iOS实现打砖块游戏(七):关卡类的实现

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 关卡游戏的精髓都集中在游戏的关卡里,其中包含了游戏的所有要素,至 ...

  2. (NO.00004)iOS实现打砖块游戏(十):砖块!更多的砖块!

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 到目前为止游戏基本可玩,但是砖块数量是不变的,等玩家打光所有的砖 ...

  3. (NO.00004)iOS实现打砖块游戏(八):游戏中小球与砖块的碰撞

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在回到GameScene.m中,我们所有的碰撞处理就放在该类中 ...

  4. (NO.00004)iOS实现打砖块游戏(六):反弹棒类

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 打砖块游戏另一个要素是反弹棒,我们在这篇类来实现反弹棒类. 创建 ...

  5. (NO.00004)iOS实现打砖块游戏(五):游戏场景类

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 创建游戏场景类头文件 在Xcode创建新GameScene类,继 ...

  6. (NO.00004)iOS实现打砖块游戏(三):游戏主场景和砖块

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 制作墙体 首先在SpriteBuilder中新建Wall.ccb ...

  7. (NO.00004)iOS实现打砖块游戏(十四):3球道具的实现

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 反弹棒变化道具实现前面已经介绍过了,我们下面可以在小球上做些文章 ...

  8. (NO.00004)iOS实现打砖块游戏(十六):导弹发射道具的实现(下)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇我们完成了导弹道具相关的道具制作,本篇中我们来完成其实现 ...

  9. (NO.00004)iOS实现打砖块游戏(十五):导弹发射道具的实现(上)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇中我们实现了3球道具,但是好像还是不过瘾,如果能让反弹棒更 ...

随机推荐

  1. Miox带你走进动态路由的世界——51信用卡前端团队

    写在前面: 有的时候再做大型项目的时候,确实会被复杂的路由逻辑所烦恼,会经常遇到权限问题,路由跳转回退逻辑问题.这几天在网上看到了51信用卡团队开源了一个Miox,可以有效的解决这些痛点,于是乎我就做 ...

  2. Docker学习笔记【一】

    [本篇学习笔记来源于 Docker 从入门到实践] 1.什么事Docker?[What] Docker在容器的基础上,进行了进一步的封装,从文件系统.网络互联到进程隔离等,极大的简化了容器的创建和维护 ...

  3. SQL语句删除字段,改变字段长度

    1.改变字段长度 ALTER TABLE T_MSG_SEND_R_ACC MODIFY reply_content VARCHAR(512); 2.删除字段ALTER TABLE MSG_TX_BA ...

  4. sqlserver批量更新数据

    update t_hr_teadept set rjkm=b.yjkmfrom t_hr_teadept a inner join t_tr_bzxx_km b on a.bzh=b.bzh wher ...

  5. drools 手动创建kmoudle.xml文件

    @Test public void test() { KieServices kieServices = KieServices.Factory.get(); KieResources resourc ...

  6. python学习之路基础篇(第八篇)

    一.作业(对象的封装) 要点分析 1.封装,对象中嵌套对象 2.pickle,load,切记,一定要先导入相关的类二.上节内容回顾和补充 面向对象基本知识: 1.类和对象的关系 2.三大特性: 封装 ...

  7. 剑指架构师系列-spring boot的logback日志记录

    Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志 ...

  8. Docker实例:创建一个点到点连接

    默认情况下,Docker 会将所有容器连接到由 docker0 提供的虚拟子网中. 用户有时候需要两个容器之间可以直连通信,而不用通过主机网桥进行桥接. 解决办法很简单:创建一对 peer 接口,分别 ...

  9. 初识mybatis(二)

    上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...

  10. sklearn:聚类clustering

    http://blog.csdn.net/pipisorry/article/details/53185758 不同聚类效果比较 sklearn不同聚类示例比较 A comparison of the ...