cocos2dx3.0戳青蛙游戏(打地鼠)
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戳青蛙执行结果
源代码下载
cocos2dx3.0戳青蛙游戏(打地鼠)的更多相关文章
- Cocos2d-x3.0游戏实例之《别救我》第二篇——创建物理世界
这篇我要给大家介绍两个知识点: 1. 创建游戏物理世界 2. 没了(小若:我噗) 害怕了?不用操心.这太简单了~! 笨木头花心贡献.啥?花心?不呢.是用心~ 转载请注明,原文地址:http://www ...
- Cocos2d-x3.0游戏实例《不要救我》第十篇(结束)——使用Json配置数据类型的怪物
如今我们有2种类型的怪物,并且创建的时候是写死在代码里的,这是要作死的节奏~ 所以.必须可配置.不然会累死人的. ; i < size; ++i) { int id = root[i][&quo ...
- Cocos2d-x3.0游戏实例《不要救我》第一章——前言
我们可以学习? 这是一个非常easy游戏.但更多的东西用(对于初学者).至少,对于它的一个例子,有点多. 笨木头花心贡献.啥?花心?不呢.是用心~ 转载请注明,原文地址:http://www.benm ...
- Cocos2d-x3.0游戏实例之《别救我》第七篇——物理世界的碰撞检測
事实上我也非常吃惊-居然写到第七篇了,我估计也就是四篇的内容,感觉非常奇妙,我也不会非常唠叨什么吖); // 0001 ); // 0001 ); // 0001 这样我们才干监听到它们的碰 ...
- Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/musicvs/article/details/25368273 好吧.我真心全然搞不懂.我如今仅仅只 ...
- cocos2dx-3.0(前言)
说了好久,告诉自己要開始学cocos2dx(在心理里告诉了好久),然后养成良好习惯,记录自己学习cocos2dx的过程.一个是怕自己忘记.还有一个是更加让自己理解透彻(或许哪天我写的好了,组合一下出一 ...
- Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(三)
一.前提: 完成前一篇的内容. 具体参考:Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(二)篇 二.本篇目标: l 说说游戏中各种角色的动作.属性以及重构思路 l 进行代码重构让色狼大叔和 ...
- Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(二)
一.前提: 完成前一篇的内容. 具体参考:Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(一)篇 二.本篇目标: l 说说关于cocos2dx手机分辨率适配 l 对前一篇完成的塔防游戏原型进 ...
- Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解
作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...
随机推荐
- Netty源码学习(四)Netty服务器是如何启动的?
本文会分析Netty服务器的启动过程,采用的范例代码是Netty编写的Echo Server. 0. 声明acceptor与worker 由于Netty采用的reactor模型,所以需要声明两组线程, ...
- 中矿大 C 石头剪刀布【决策DP*待看/codeforces原题】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld 题目描述 齐齐和司机正在玩剪刀石头布,不过他俩有些玩腻了,所 ...
- 「kuangbin带你飞」专题十五 数位DP
传送门 A.CodeForces - 55D Beautiful numbers 题意 一个正整数是 漂亮数 ,当且仅当它能够被自身的各非零数字整除.我们不必与之争辩,只需计算给定范围中有多少个漂亮数 ...
- 洛谷 P4212 外太空旅行
题目描述 在人类的触角伸向银河系的边缘之际,普通人上太空旅行已经变得稀松平常了.某理科试验班有n个人,现在班主任要从中选出尽量多的人去参加一次太空旅行活动. 可是n名同学并不是和平相处的.有的人,比如 ...
- [POI2014]FarmCraft
题目大意: 一个$n(n\le5\times10^5)$个点的树,每个点有一个权值$c_i$,从$1$出发进行欧拉遍历,每个单位时间移动一条边,记每个点$i$被访问到的时间是$t_i$,问最后$\ma ...
- 解魔方的机器人攻略13 – 安装Lejos(上)
由 动力老男孩 发表于 2009/12/27 16:58:23 Firmware(固件)相当于是机器人的操作系统,乐高NXT出厂时已经内置了一套Firmware,并且配备了非常强大的LabVIEW开发 ...
- C++ development cross platforms
1. target platforms: linux suse, windows server, both use vmware virtual machine on lab server. 2. c ...
- (转载)EF 使用code first模式创建数据库和 填充种子数据
第一篇:来自 .net 开发菜鸟 博主的文章:https://www.cnblogs.com/dotnet261010/p/8035213.html 第二篇:来自 JustYong 博主的文章:htt ...
- ISP图像处理算法之---Demosaic
目前市场上主流传感器为Coms传感器,sensor出来的的数据格式为bayer数据格式,这种格式,每个像素点只有三个颜色通道中的一个,如图1所示 ...
- ES怎么进行字段添加索引,并保留原有数据
1.先将原索引进行备份 curl -XPOST '192.168.46.163:9200/_reindex?pretty' -H 'Content-Type: application/json' -d ...