cocos2dx3.0戳青蛙游戏(打地鼠)
来源:互联网 发布:网络攻防实验报告 编辑:程序博客网 时间:2024/06/05 11:00
1戳青蛙项目描述
1.1功能描述
实现类似打地鼠游戏,青蛙随机出现在屏幕左边5*3的格子中,并会向屏幕右边移动,在青蛙逃离之前,手指点击实现戳灭青蛙的效果。随着分数增加,青蛙越来越多,当青蛙逃离5个后,游戏结束。青蛙分为大青蛙和小青蛙,大青蛙走的忙,要点击3下,小青蛙走的快,只需点击两下。
1.2所需技术
Cocos2D-x精灵类,动作类,多点触摸,CocoStudioUI编辑器,Vector
2戳青蛙运行流程
3戳青蛙详细设计
3.1实体基类
class CEntity : public Node {public:CEntity();~CEntity();void spriteBind(Sprite* sprite);Sprite* spriteGet();private:Sprite* m_SprBind;CC_SYNTHESIZE(int, m_iHP, iHP);//血量CC_SYNTHESIZE(int, m_iSpeed, iSpeed);//速度CC_SYNTHESIZE(std::string, m_sName, sName);//名字CC_SYNTHESIZE(Point, m_pos, pos);//坐标};
3.2青蛙类
青蛙类是基于实体类的。
class CFrog :public CEntity{public:CFrog();~CFrog();virtual bool init();CREATE_FUNC(CFrog);void createSpriteByName();bool clickJudge(Point pos);//判断该青蛙有没被点击void getHurt();//获得伤害bool dieJudge();//是否死亡判断};
createSpriteByName是根据m_sName,从精灵缓冲池中选取不同的图片(大小青蛙),并且绑定动画。青蛙具有血量,名字(类型),速度的属性。
3.3青蛙管理器类
class CFrogMgr :public Node{public:CFrogMgr();~CFrogMgr();bool initBy();CREATE_FUNC(CFrogMgr);static CFrogMgr* createBy();void createFrog(float dt);void frogsMove(float dt);void touchDeal();CFrog* findClickFrog(Point pos);void frogPake(Point pos);void notityForPause(Ref* pData);private:Vector<CFrog*> m_listFrog;};
青蛙管理器类createFrog方法每2秒产生青蛙,产生数量是跟分数成正比的。
随机青蛙的产生的位置,青蛙的类型。每产生一个青蛙加入到青蛙的容器中。
3.3.1青蛙移动
frogsMove方法每0.1秒执行一遍,具体内容是遍历青蛙容器,把每个青蛙个体的横坐标根据速度增加,当青蛙逃离了屏幕的最右端的时候,要把它从容器中删除。特别说明:容器的erase删除一个后会返回迭代器指向的下一个位置。
void CFrogMgr::frogsMove(float dt){//使用迭代器进行删除处理for (Vector<CFrog*>::iterator it = m_listFrog.begin(); it != m_listFrog.end();){(*it)->setPositionX((*it)->getPositionX() + (*it)->getiSpeed());//横坐标增加if ((*it)->getPositionX() > MAP_WIDE)//当逃离时{(*it)->removeFromParentAndCleanup(true);it = m_listFrog.erase(it);NOTIFY->postNotification(NOTIFY_HP, (Ref*)1);}else++it;}}
3.3.2多点触摸响应
遍历青蛙容器,通过找哪个青蛙被点击。使该青蛙掉血,直到其阵亡。
void CFrogMgr::frogPake(Point pos){CFrog* frogDiv = findClickFrog(pos);if (frogDiv == NULL)return;else{frogDiv->getHurt();if (frogDiv->dieJudge() == true){CocosDenshion::SimpleAudioEngine::getInstance()->playEffect(PATH_DIE_MUSIC);//循环播放背景音乐frogDiv->removeFromParentAndCleanup(true);m_listFrog.eraseObject(frogDiv);NOTIFY->postNotification(NOTIFY_SCORE, (Ref*)1);}}}
4戳青蛙运行结果
源码下载
0 0
- cocos2dx3.0戳青蛙游戏(打地鼠)
- 模拟打地鼠游戏
- cocos2D 打地鼠游戏
- java打地鼠游戏
- 打地鼠游戏实现
- 简易打地鼠游戏
- 打地鼠游戏
- 打地鼠游戏
- 打地鼠游戏
- H5 打地鼠游戏
- 打地鼠游戏收获
- 打地鼠游戏(java)
- 星星打地鼠游戏
- java打地鼠游戏
- 打地鼠游戏最终版
- 打地鼠游戏js
- 打地鼠游戏案例
- Java打地鼠游戏
- Java基础网络编程
- Codeforces Round #316 (Div. 2)
- OC_调用系统短信_邮件_电话
- Scala 深入浅出实战经典 第11讲:Scala中的apply实战详解
- hdu(5400)——Arithmetic Sequence(想法题)
- cocos2dx3.0戳青蛙游戏(打地鼠)
- 深入Java集合学习系列:HashSet的实现原理
- hdu 2095 find your present (2)
- Scala 深入浅出实战经典 第12讲:Scala中的继承:超类的构造、重写字段、重写方法代码实战
- iOS Cell异步图片加载优化,缓存机制详解。
- openat函数的用法示例
- 创建删除节点
- Scala 深入浅出实战经典 第13讲:抽象类、抽象字段、抽象方法
- Scala 深入浅出实战经典 第14讲:Scala中作为接口的trait、在对象中混入trait代码实战