这个植物大战僵尸的小游戏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__PassScene__
#define __MyTest__PassScene__
#include <iostream>
#include "CommonHeader.h"
class PassScene:publicCCLayer {
public:
PassScene();
~PassScene();
virtualbool init();
CREATE_FUNC(PassScene);
SCENE_FUNC(PassScene);
/************************自定义方法*************************/
void back();
void next();
};
#endif /* defined(__MyTest__PassScene__) */
/**
该类主要是游戏过关后要进入的界面
*/
#include "PassScene.h"
#include "MenuScene.h"
#include "GameScene.h"
extern int LEVEL;
externint SunNumber;
PassScene::PassScene(){
}
PassScene::~PassScene(){
}
boolPassScene::init(){
INIT_CCLAYER_FUNC;
//获得屏幕尺寸
CCSize size =GET_WINSIZE;
//如果本关通过
if (LEVEL ==4) {
//创建场景
CCSprite *pSprite =CCSprite::create("trophy.png");
pSprite->setPosition(ccp(size.width/2,size.height/2));
this->addChild(pSprite);
//创建说明菜单Label
CCMenuItemFont *font =CCMenuItemFont::create("返回主菜单");
font->setTarget(this,menu_selector(PassScene::back));
font->setColor(ccc3(0,0,255));
//添加如Label
CCMenu *menu =CCMenu::create(font,NULL);
menu->setPosition(ccp(380,50));
this->addChild(menu);
}else{
//成功图片
CCSprite *sprite =CCSprite::create("succes.jpg");
sprite->setScale(1.0f);
sprite->setPosition(ccp(size.width/2,size.height/2));
this->addChild(sprite,0);
//返回主菜单
CCLabelTTF *label11 =CCLabelTTF::create("返回主菜单","Georgia-BoldItalic",30);
CCMenuItemLabel *label1 =CCMenuItemLabel::create(label11);
label1->setColor(ccc3(0,0,255));
label1->setTarget(this,menu_selector(PassScene::back));
//进入下一关
CCLabelTTF *label12 =CCLabelTTF::create("进入下一关","Georgia-BoldItalic",30);
CCMenuItemLabel *label2 =CCMenuItemLabel::create(label12);
label2->setColor(ccc3(255,0,0));
label2->setTarget(this,menu_selector(PassScene::next));
//加入
CCMenu *menuBack =CCMenu::create(label1,NULL);
#warning mark----------------
menuBack->setPosition(ccp(140,160));
this->addChild(menuBack);
CCMenu *menuNext =CCMenu::create(label2,NULL);
menuNext->setPosition(ccp(335,160));
this->addChild(menuNext);
}
CCLabelTTF *label =CCLabelTTF::create("植物大战僵尸","Georgia-BoldItalic",25);
label->setPosition(ccp(240,285));
this->addChild(label);
return true;
}
voidPassScene::back(){
//切换场景
CCTransitionCrossFade *fade =CCTransitionCrossFade::create(1.0f,MenuScene::scene());
CCDirector::sharedDirector()->replaceScene(fade);
LEVEL =1;
}
voidPassScene::next(){
LEVEL++;//如果通关level++
SunNumber = 50;
CCTransitionCrossFade *fade =CCTransitionCrossFade::create(1.0f,GameScene::scene());
CCDirector::sharedDirector()->replaceScene(fade);
}