资源:http://download.csdn.net/detail/hezeping888/5696555
#ifndef FishingJoyStep1_GameLayer_h
#define FishingJoyStep1_GameLayer_h
#include "cocos2d.h"
#include "Cannon.h"
class GameLayer : public cocos2d::CCLayer{
public:
//构造函数不能定义为虚 参考[HG1]
GameLayer();
//多态基类的析构函数应该为虚函数 参考[HG2]
virtual ~GameLayer();
virtual bool init();
static cocos2d::CCScene* scene();
//实现触摸按下事件,主要处理炮台转向
virtual void ccTouchesBegan(cocos2d::CCSet *pTouches,cocos2d::CCEvent *pEvent);
virtual void ccTouchesEnded(cocos2d::CCSet *pTouches,cocos2d::CCEvent *pEvent);
CC_SYNTHESIZE_RETAIN(cocos2d::CCArray *, m_pBullets, Bullets);//存储字段对象指针
CC_SYNTHESIZE_RETAIN(cocos2d::CCArray *, m_pFishes, Fishes);//存储鱼儿对象的指针
//CC_SYNTHESIZE_RETAIN(RollNumGroup *, m_pRollNumGroup, RollNumGroup);
//用来转载鱼儿和子弹的相关资源的容器,他们分别对应加载一张资源图片
CC_SYNTHESIZE(cocos2d::CCSpriteBatchNode *, m_pBatchNodeFish1, BatchNodeFish1);
CC_SYNTHESIZE(cocos2d::CCSpriteBatchNode *, m_pBatchNodeFish2AndBullets, BatchNodeFish2AndBullets);
CC_SYNTHESIZE(cocos2d::CCSpriteBatchNode *, m_pBatchNodeFish3AndNets, BatchNodeFish3AndNets);
CC_SYNTHESIZE(cocos2d::CCSpriteBatchNode *, m_pBatchNodeFish4, BatchNodeFish4);
//实现布景层的静态create函数
CREATE_FUNC(GameLayer);
private:
int m_nScore;
//禁止复制
GameLayer(const GameLayer &other);
//将成员变量声明为private 参考[HG3]
CC_SYNTHESIZE_RETAIN(Cannon *, m_pCannon, Cannon);
cocos2d::CCSprite *m_pSpriteAdd;//升级炮台按钮精灵
cocos2d::CCSprite *m_pSpriteReduce;//降级炮台精灵
//载入需要用到的plist文件
void initFrames();
//加载游戏背景 及 炮台基座
void initBackground();
//加载捕鱼大炮
void initCannon();
//加载鱼儿和子弹资源
void initFishes();
//更新游戏整体逻辑
void updateGame(cocos2d::CCTime dt);
//鱼儿创建逻辑
void updateFish(cocos2d::CCTime dt);
//往游戏主界面中添加鱼儿
void addFish();
//升级大炮的型号
void addConnonSize();
//降级大炮型号
void reduceConnonSize();
};
#endif
/*
[HG1]:构造函数为什么不能是虚函数 http://www.cnblogs.com/alephsoul-alephsoul/archive/2012/12/28/2837976.html
[HG2]:多态基类的析构函数应该为虚函数 http://www.cnblogs.com/zhuyf87/archive/2013/03/12/2955058.html
[HG3]:将成员变量声明为private http://www.cnblogs.com/lidan/archive/2012/01/18/2325200.html
*/
从GameLayer.h的私有方法中,可以看出他的调度职责,4个init开头的私有方法完成游戏世界的图片资源加载,
在updateFish方法中会调用addFish方法,完成主界面鱼儿的添加。后续章节实现
在updateGame方法中完成鱼儿和子弹的碰撞检测 即引发后续业务处理,子弹爆炸,鱼儿死亡,积分榜加分等。 后续章节实现
大炮的升级和降级方法分别为:addConnonSize,reduceConnonSize,通过点击相应的精灵触发m_pSpriteAdd,m_pSpriteReduce,完成对大炮的升级和降级
#ifndef FishingJoyStep1_Cannon_h
#define FishingJoyStep1_Cannon_h
#include "cocos2d.h"
/*类型声明,避免过多依赖其他头文件 参考[HC1]*/
class GameLayer;
class Cannon : public cocos2d::CCObject{
public:
/*静态创建炮台函数
cannonType 要创建的炮台类型,根据cannon.plist文件,确定可支持的类型可选值:1、2、3、4、5、6、7
pGame