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戳青蛙游戏(打地鼠)的更多相关文章

  1. Cocos2d-x3.0游戏实例之《别救我》第二篇——创建物理世界

    这篇我要给大家介绍两个知识点: 1. 创建游戏物理世界 2. 没了(小若:我噗) 害怕了?不用操心.这太简单了~! 笨木头花心贡献.啥?花心?不呢.是用心~ 转载请注明,原文地址:http://www ...

  2. Cocos2d-x3.0游戏实例《不要救我》第十篇(结束)——使用Json配置数据类型的怪物

    如今我们有2种类型的怪物,并且创建的时候是写死在代码里的,这是要作死的节奏~ 所以.必须可配置.不然会累死人的. ; i < size; ++i) { int id = root[i][&quo ...

  3. Cocos2d-x3.0游戏实例《不要救我》第一章——前言

    我们可以学习? 这是一个非常easy游戏.但更多的东西用(对于初学者).至少,对于它的一个例子,有点多. 笨木头花心贡献.啥?花心?不呢.是用心~ 转载请注明,原文地址:http://www.benm ...

  4. Cocos2d-x3.0游戏实例之《别救我》第七篇——物理世界的碰撞检測

    事实上我也非常吃惊-居然写到第七篇了,我估计也就是四篇的内容,感觉非常奇妙,我也不会非常唠叨什么吖);    // 0001 );   // 0001 ); // 0001 这样我们才干监听到它们的碰 ...

  5. Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/musicvs/article/details/25368273 好吧.我真心全然搞不懂.我如今仅仅只 ...

  6. cocos2dx-3.0(前言)

    说了好久,告诉自己要開始学cocos2dx(在心理里告诉了好久),然后养成良好习惯,记录自己学习cocos2dx的过程.一个是怕自己忘记.还有一个是更加让自己理解透彻(或许哪天我写的好了,组合一下出一 ...

  7. Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(三)

    一.前提: 完成前一篇的内容. 具体参考:Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(二)篇 二.本篇目标: l  说说游戏中各种角色的动作.属性以及重构思路 l  进行代码重构让色狼大叔和 ...

  8. Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(二)

    一.前提: 完成前一篇的内容. 具体参考:Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(一)篇 二.本篇目标: l  说说关于cocos2dx手机分辨率适配 l  对前一篇完成的塔防游戏原型进 ...

  9. Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

随机推荐

  1. J.U.C并发框架源码阅读(八)ArrayBlockingQueue

    基于版本jdk1.7.0_80 java.util.concurrent.ArrayBlockingQueue 代码如下 /* * ORACLE PROPRIETARY/CONFIDENTIAL. U ...

  2. Python的功能模块[2] -> abc -> 利用 abc 建立抽象基类

    abc模块 / abc Module 在定义抽象方法时,为了在初始化阶段就检测是否对抽象方法进行了重定义,Python 提供了 abc 模块. from abc import ABCMeta, abs ...

  3. 牛客网暑期ACM多校训练营(第一场) - J Different Integers(线段数组or莫队)

    链接:https://www.nowcoder.com/acm/contest/139/J来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...

  4. 洛谷——P2118 比例简化

    P2118 比例简化 题目描述 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如,对某一观点表示支持的有1498 人,反对的有 902人,那么赞同与反对的比例可以简单的记为149 ...

  5. final-第十章

    1,nas概念 NAS就是一种直接连接到用户网络中,并具有信息存储功能的硬件设备. NAS是由处理器,文件服务管理模块,和存储部分等组成的. 2,san概念 SAN是一种利用光纤集线器,光纤路由器,光 ...

  6. 用Xcode6的Leaks检测内存泄漏

    用xcode打开项目之后,选择Product - Profile: 在弹出的窗口中选择Leaks: 然后在设备解锁的情况下,选择Leaks再点击左上角的红色按钮开始运行APP: 红色的柱子表示有内存泄 ...

  7. 重要的ui组件——Behavior

    v7包下的组件类似CoordinatorLayout推出也有一段时间了,大家使用的时候应该会体会到其中很多的便利,今天这篇文章带大家来了解一个比较重要的ui组件——Behavior.从字面意思上就可以 ...

  8. 单核时代,PHP之类多线程或者多进程的,是怎么处理并发的?是排队吗?

      答案是:的确就是排队.但是并不是一定要处理完请求1才能去处理请求2:实际上请求的处理过程中,有很多的时间是耗在IO等其他地方,这时可以切换去处理其他请求,把等待的时间可以充分利用起来,达到更高的吞 ...

  9. 关于国内外CV领域牛人的博客链接 .

    此文为转载文章,尊重知识产权http://blog.csdn.net/carson2005/article/details/6601109此为原文链接,感谢作者! 以下链接是关于计算机视觉(Compu ...

  10. linux bash 入门

    #!/bin/bash #shell使用的熟练成都反映用户对Unix/Linux使用的熟练程度 #shell 有两种执行命令的方式:交互式和批处理 #常见的shell脚本解释器有bash,sh,csh ...