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的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...
随机推荐
- J.U.C并发框架源码阅读(十五)CopyOnWriteArrayList
基于版本jdk1.7.0_80 java.util.concurrent.CopyOnWriteArrayList 代码如下 /* * Copyright (c) 2003, 2011, Oracle ...
- (31)C#时间
一. DateTime dt = DateTime.Now 对象 1.获取当前时间 Console.WriteLine(dt.Year+"年"); //当前年份 Console.W ...
- (3)oracle建用户、建表、权限、命名空间
一.表空间 创建表空间 create tablespace ts001 datafile ‘d:\test\a.dbf’ size 20m uniform size 128k; 使用表空间 cre ...
- 链式前向星DFS
本文链接:http://www.cnblogs.com/Ash-ly/p/5399057.html 采用链式前向星存图的DFS: #include <iostream> #include ...
- struts2进阶
Struts2 一.Struts的工作原理 Struts2的工作机制3.1Struts2体系结构图 Strut2的体系结构如图15所示: (图15) 3.2Struts2的工作机制 从图15可以看出, ...
- Python的程序结构[5] -> 模块/Module[0] -> 内建模块 builtins
builtins 内建模块 / builtins Module 在Python的模块中,有一种特殊模块,无需导入便可以使用,其中包含了许多内建函数与类. builtins 模块内容 / builtin ...
- jenkins新手入门教程
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 虽然jenkins提供了Window.Lin ...
- 理解css的BFC
BFC是CSS中一个看不见的盒子,(先理解CSS的盒子模型).它的页面渲染方式与普通流的盒子模型不同,它决定了其子元素将如何定位(所用属于BFC的box 都默认左对齐),以及和其他元素的关系和相互作用 ...
- Out of Sorts II
问题 E: Out of Sorts II 时间限制: 1 Sec 内存限制: 128 MB提交: 68 解决: 4[提交] [状态] [讨论版] [命题人:] 题目描述 Keeping an e ...
- (转)Unity3D研究院之游戏架构脚本该如何来写(三十九)
这篇文章MOMO主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难.这篇文章的目的是让哪些已经上手Unity3D游戏 ...