cocos2dx3.0戳青蛙游戏(打地鼠)

cocos2dx3.0戳青蛙游戏(打地鼠),第1张

概述1戳青蛙项目描述 1.1功能描述 实现类似打地鼠游戏,青蛙随机出现在屏幕左边5*3的格子中,并会向屏幕右边移动,在青蛙逃离之前,手指点击实现戳灭青蛙的效果。随着分数增加,青蛙越来越多,当青蛙逃离5个后,游戏结束。青蛙分为大青蛙和小青蛙,大青蛙走的忙,要点击3下,小青蛙走的快,只需点击两下。 1.2所需技术 Cocos2D-x精灵类,动作类,多点触摸,CocoStudioUI编辑器,Vector 2 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秒产生青蛙,产生数量是跟分数成正比的。

随机青蛙的产生的位置,青蛙的类型。每产生一个青蛙加入到青蛙的容器中。

@[email protected]青蛙移动

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;	}}

@[email protected]多点触摸响应

遍历青蛙容器,通过找哪个青蛙被点击。使该青蛙掉血,直到其阵亡。

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戳青蛙运行结果



源码下载 总结

以上是内存溢出为你收集整理的cocos2dx3.0戳青蛙游戏(打地鼠)全部内容,希望文章能够帮你解决cocos2dx3.0戳青蛙游戏(打地鼠)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1068565.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存