您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x简单游戏<植物大战僵尸>代码实现|第一部分:开始场景<后续会提供源码下载链接>

2014-03-17 13:27 1156 查看
  这个植物大战僵尸的小游戏Demo
虽然下,但是基本包括了:


  1.植物的选取、僵尸的攻击、发射子弹;

  2.太阳的生成、碰撞检测等功能;

 

 

 第一部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第一部分:开始场景

 第二部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第二部分:菜单场景

 第三部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第三部分:通关场景

 第四部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第四部分:通关失败场景

 第五部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第五部分:公用类

 第六部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第六部分:植物类

 第七部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第七部分:僵尸类

 第八部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第八部分:子弹类

 第九部分<A>:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第九部分:游戏场景GameScene.h
 第九部分<B>:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第九部分:游戏场景GameScene.cpp

 

 

#ifndef __MyTest__StartScene__

#define __MyTest__StartScene__

#include <iostream>

#include "CommonHeader.h"

class StartScene:public CCLayer {

    

public:
    StartScene();//构造函数
    ~StartScene();//析构函数
   //初始
   virtualbool init();
    CREATE_FUNC(StartScene);
    SCENE_FUNC(StartScene);
   void replaceScene();//更换场景
   void removeScrollGrass(CCSprite* sprite);//开场草坪
   void setMenu();//设置按钮

    
   bool flag =false;
    CCMenuItemFont *fontLoad;

};

#endif /* defined(__MyTest__StartScene__) */

//开始场景

#include "StartScene.h"

#include "MenuScene.h"

//#include "cocos2d.h"

//using namespace cocos2d;

//析构函数
StartScene::StartScene(){

}
StartScene::~StartScene(){

}

boolStartScene::init(){

   if (!CCLayer::init()) {

        return
false;
    }

    

    //获取设别宽度

//    CCSize size =  CCDiretcor::sharedDirector()->getWinSize();
   CCSize size =GET_WINSIZE;

    //添加背景
   CCSprite *bgSprite =CCSprite::create("titlescreen.png");
    bgSprite->setScale(2.0f);
    bgSprite->setPosition(ccp(size.width/2,size.height/2));
   this->addChild(bgSprite);

    

    //添加标题
   CCSprite *titleSprite =CCSprite::create("pvz_logo.png");
    titleSprite->setScale(1.5f);
    titleSprite->setPosition(ccp(size.width/2,size.height/2+200));
   this->addChild(titleSprite);

    

    //添加草坪
   CCSprite *grassLanSprite =CCSprite::create("down.png");
    grassLanSprite->setScale(2.0f);
    grassLanSprite->setPosition(ccp(size.width/2,size.height/2-120));
   this->addChild(grassLanSprite);

    

    //设置滚动草坪
   CCSprite *scrollGrassSprite =CCSprite::create("scrollgrass.png");
    scrollGrassSprite->setPosition(ccp(size.width/2-200,size.height/2-50));
    scrollGrassSprite->setScale(2.0f);

    //应为是滚动的草坪故要对静态图片进行处理

    //设置旋转方式--5秒钟旋转720度
   CCRotateBy *rotateBy =CCRotateBy::create(5,2*360);

    //设置缩放/5秒钟缩放0.5
   CCScaleBy *scaleBy =CCScaleBy::create(5,0.7);

    //将缩放和旋转通过spawn球-->组织起来
   CCSpawn *spawn =CCSpawn::create(rotateBy,scaleBy,NULL);

    //通过回调函数----开始动画直至移除--循环调用

    CCCallFuncN *removeFunc =CCCallFuncN::create(this,callfuncN_selector(StartScene::removeScrollGrass));

    //通过队列将关键动作串联起来
   CCSequence *scaleRotateSequce =CCSequence::create(spawn,removeFunc,NULL);

    //运行动画
    scrollGrassSprite->runAction(scaleRotateSequce);
   this->addChild(scrollGrassSprite);

    

    //设置草坪长草效果
   CCMoveTo *moveTo =CCMoveTo::create(5,ccp(size.width/2+250,size.height/2-82));

    //组织动画相当于动画帧
   CCSequence *moveSequnce =CCSequence::create(moveTo,NULL);

    //让滚动草坪执行改动做
    scrollGrassSprite->runAction(moveSequnce);

    

    //创建草坪
   CCSprite *grassSprite =CCSprite::create("grass.png");

    //创建一个时间进度出现的动画
   CCProgressTimer *progress =CCProgressTimer::create(grassSprite);

    CCLog("%f----960x640------%f",size.width,size.height);
    progress->setScale(2.0f);
    progress->setPosition(ccp(size.width/2-8,
size.height/2-60));
   this->addChild(progress);

    //设置进度条的样式

    progress->setType(kCCProgressTimerTypeBar);

    //7秒钟由0变为100

    CCProgressFromTo *progressTo =CCProgressFromTo::create(5,0,100);
    progress->setMidpoint(CCPointZero);
    progress->runAction(progressTo);

    

    

    //添加Loading

    fontLoad =
CCMenuItemFont::create("Loadings......");

    fontLoad->setTarget(this,menu_selector(StartScene::replaceScene));
   fontLoad->setColor(ccc3(255,0,0));

    fontLoad->setFontSize(20);

    

    //创建CCMenu

    CCMenu *menu =CCMenu::create(fontLoad,NULL);
    menu->setPosition(ccp(size.width/2,size.height/2-115));
   this->addChild(menu);

    

    //创建回调函数

    CCCallFunc *fun1 =CCCallFunc::create(this,callfunc_selector(StartScene::setMenu));

    //设置延迟5秒后执行func1
   CCSequence *menuSequence =CCSequence::create(CCDelayTime::create(5),fun1,NULL);
   this->runAction(menuSequence);

    

    return
true;
}

//更换场景
voidStartScene::replaceScene(){

   if (flag) {

        //设置切换场景方式

        CCTransitionCrossFade *crossFade =CCTransitionCrossFade::create(1,MenuScene::scene());

        //让导演执行切换操作
       CCDirector::sharedDirector()->replaceScene(crossFade);
    }

}

//移除草坪
voidStartScene::removeScrollGrass(cocos2d::CCSprite
*sprite){

    //从父视图移除

    sprite->removeFromParent();
}

//开始菜单
voidStartScene::setMenu(){

   flag =true;

    //创建文字
   CCString *string =CCString::create("start
Game");
   fontLoad->setString(string->getCString());

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐