制作飞镖忍者(1) Cocos2d-x 3.0alpha0(4)

来源:未知 责任编辑:责任编辑 发表时间:2013-12-06 08:43 点击:

        this->scheduleUpdate();
11.编译运行,这时当子弹和怪物碰撞时,它们就会消失;
12.接下来,创建一个新的场景,来指示"You Win"或者"You Lose"。创建新类

GameOverLayer.h文件代码为:

#include "cocos2d.h"
USING_NS_CC;

class GameOverLayer:public LayerColor{
    
public:
    GameOverLayer();
    ~GameOverLayer();
    
    
    
    bool initWithWon(bool won);
    static Scene* sceneWithWon(bool won);
    void gameOverDone();
};
GameOverLayer.cpp文件代码为:

//
//  GameOverLayer.cpp
//  HelloCpp
//
//  Created by 杜甲 on 13-12-1.
//
//

#include "GameOverLayer.h"
#include "HelloWorldScene.h"

GameOverLayer::GameOverLayer()
{
    
}
GameOverLayer::~GameOverLayer()
{
    
}
GameOverLayer* GameOverLayer::createWithWon(bool won)
{
    GameOverLayer* pRet = new GameOverLayer();
    if (pRet && pRet->initWithWon(won)) {
        
    }
    else{
        CC_SAFE_RELEASE_NULL(pRet);
    }
    return pRet;
}

bool GameOverLayer::initWithWon(bool won)
{
    bool bRet = false;
    do {
        CC_BREAK_IF(!LayerColor::initWithColor(Color4B(255, 255, 255, 255)));
        
        char* message;
        if (won) {
            message  = "You Won";
        }
        else
        {
            message = "You Lose";
        }
        Size winSize = Director::getInstance()->getWinSize();
        LabelTTF* label = LabelTTF::create(message, "Arial", 32);
        label->setColor(Color3B(0, 0, 0));
        label->setPosition(Point(winSize.width / 2, winSize.height / 2));
        this->addChild(label);
        
        this->runAction(Sequence::create(DelayTime::create(3),
                                         CallFunc::create(std::bind(&GameOverLayer::gameOverDone, this)), NULL));
        bRet = true;
    } while (0);
    return bRet;
}

Scene* GameOverLayer::sceneWithWon(bool won)
{
    Scene* scene = NULL;
    do {
        scene = Scene::create();
        
        CC_BREAK_IF(!scene);
        
        GameOverLayer* layer = GameOverLayer::createWithWon(won);
        CC_BREAK_IF(!layer);
        scene->addChild(layer);
        
    } while (0);
    return scene;
    
}
void GameOverLayer::gameOverDone()
{
    Director::getInstance()->replaceScene(HelloWorld::createScene());
    
}
游戏结束时,切换到以上所建的场景,场景上的层显示一个文本,在3秒之后返回到HelloWorld场景中。
13.最后,为游戏添加一些游戏逻辑。记录玩家消灭怪物的数量,进而决定该玩家输赢。在HelloWorldScene.h文件中,添加如下:

    int _monstersDestroyed;
添加头文件引用:

#include "GameOverLayer.h"
在update定时函数中,monstersToDelete循环removeChild(monster, true)的后面添加被消灭怪物的计数,并判断胜利条件,代码如下:

            _monstersDestroyed++;
            if (_monstersDestroyed > 2) {
                Scene* gameOverScene = GameOverLayer::sceneWithWon(true);
                Director::getInstance()->replaceScene(gameOverScene);
            }
	
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1