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


  这个植物大战僵尸的小游戏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());


}






  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GFanStudio-LeeSir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值