这个植物大战僵尸的小游戏Demo 虽然下,但是基本包括了:
1.植物的选取、僵尸的攻击、发射子弹;
2.太阳的生成、碰撞检测等功能;
第一部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第一部分:开始场景
第二部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第二部分:菜单场景
第三部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第三部分:通关场景
第四部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第四部分:通关失败场景
第五部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第五部分:公用类
第六部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第六部分:植物类
第七部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第七部分:僵尸类
第八部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第八部分:子弹类
第九部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第九部分:游戏场景GameScene.h
第九部分:Cocos2d-x简单游戏<植物大战僵尸>代码实现|第九部分:游戏场景GameScene.cpp
#ifndef __MyTest__StartScene__
#define __MyTest__StartScene__
#include
#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());
}