Cocos2d之FlyBird开发---简介
| 版权声明:本文为博主原创文章,未经博主允许不得转载。
开发FlyBird其实非常的简单,在游戏的核心部分,我们需要实现的只有:
- 创建一个物理世界(世界设置重力加速度)
- 在物理世界中添加一个动态的刚体(小鸟)
- 在物理世界中添加一个静态的刚体(地板)和一个顶部边界(Edge)
- 在物理世界中添加一对浮动的刚体(Pipe),并设置线速度
- 设置每次点击屏幕小鸟上升的加速度
为了游戏的完整,我们还可以适当的添加一些功能进去:
- 添加主界面,主界面包含开始游戏,退出,查看历史最高分,游戏介绍等等
- 添加历史最高分界面
- 添加游戏介绍界面
- 添加游戏数据管理类
- 添加游戏控制和界面
在游戏设计部分,我们暂时分为下面的几个类:

GameUnit:游戏单元类
class unit
{
public:
void displayNowScore(float); //显示当前的成绩
cocos2d::Size winSize(); //屏幕的大小,并返回
cocos2d::Vec2 winOrigin(); //屏幕的原点坐标,并返回
cocos2d::Animation* gameAnimate(int); //创建动画帧,并返回
float scaleX(cocos2d::Sprite*, cocos2d::Size); //计算缩放比例,并返回比例。下同
float scaleY(cocos2d::Sprite*, cocos2d::Size);
void goNullptr(cocos2d::Ref* pSender);
//cocos2d::Sprite* createSprite(int);
};
MainMenu:游戏主界面类
class MainMenu : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene(); //创建场景
virtual bool init(); //初始化
void interfaceLayout(); //游戏主界面的布局函数
void goPlay(cocos2d::Ref*); //回调函数,进入游戏
void goScore(cocos2d::Ref*); //回调函数,进入成绩显示界面
void goAbout(cocos2d::Ref*); //回调函数,进入游戏关于界面
void goExit(); //0参回调函数,退出游戏
CREATE_FUNC(MainMenu);
};
GameScore:游戏成绩界面类
class GameScore : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
void scoreInterface(); //成绩界面布局函数
void goMainInterface(cocos2d::Ref*); //回调函数,回到主界面
CREATE_FUNC(GameScore);
};
GameAbout:游戏关于界面类
class GameAbout : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
void aboutInterface(); //关于界面布局函数
void goMainInterface(cocos2d::Ref*); //回调函数,回到主界面
CREATE_FUNC(GameAbout);
};
GamePlay:游戏核心类
class GamePlay : public cocos2d::Layer, public b2ContactListener
{
private:
void replaceBackground(int); //场景替换函数,还没完全实现
void tipInformation(); //玩的方法函数
void addBird(); //添加小鸟
void addLand(); //添加地面
void addPipe(float dt); //添加管道
void gameBegin(float dt); //游戏开始函数
void gameOver(); //游戏结束函数
void timeAnimate(); //游戏开始计时函数:1,2,3
void upperBoundary(); //游戏上边界函数
//int birdSelect(float); //小鸟种类选择函数
public:
static cocos2d::Scene* createScene();
virtual bool init();
void initPhysicsWorld(); //物理世界初始化函数
virtual void update(float); //计时器函数
/// Called when two fixtures begin to touch.
virtual void BeginContact(b2Contact* contact); //物理世界监听碰撞函数
/** Callback function for multiple touches began.
*
* @param touches Touches information.
* @param unused_event Event information.
* @js NA
*/
virtual void onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event); //触屏事件函数
void goPlay(cocos2d::Ref* pSender); //回调函数
void goExit(); //退出回调函数
CREATE_FUNC(GamePlay);
};
GameData:游戏数据处理类
class GameData
{
public:
static void initGameData(); //初始化游戏成绩数据
static int getGameData(); //取得游戏的最高成绩
static void keepGameData(int); //修改最高成绩函数
};
附上游戏图:

Cocos2d之FlyBird开发---简介的更多相关文章
- Cocos2d 之FlyBird开发---MainMenu类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. MainMenu类主要实现的是游戏主界面的布局,它相当于一个港口,有开向各处的航道,而游戏中的MainMenu则是有跳转到各个场景的一个集 ...
- Cocos2d 之FlyBird开发---GameUnit类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 这节来实现GameUnit类中的一些函数方法,其实这个类一般是一个边写边完善的过程,因为一般很难一次性想全所有的能够供多个类共用的方法.下 ...
- Cocos2d 之FlyBird开发---GameData类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 现在是大数据的时代,绝大多数的游戏也都离不开游戏数据的控制,简单的就是一般记录游戏的得分情况,高端大气上档次一点的就是记录和保存各方面的游 ...
- Cocos2d 之FlyBird开发---GamePlay类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 这个是游戏的核心部分:(FlyBird游戏重中之重) 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态的刚体(小鸟) 在物 ...
- Cocos2d 之FlyBird开发---GameAbout类
| 版权声明:本文为博主原创文章,未经博主允许不得转载.(笔者才疏学浅,如有错误,请多多指教) 一般像游戏关于的这种界面中,主要显示的是游戏的玩法等. GameAbout.h #ifndef _G ...
- Cocos2d 之FlyBird开发---GameScore类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 这个类主要实现的是,显示历次成绩中的最好成绩.当然我写的这个很简洁,还可以写的更加的丰富.下面贴上代码: GameScore.h #ifn ...
- Scrum敏捷开发简介
Agile 敏捷开发实践中,强调团队的自我管理.在 Scrum 中,自我团队管理体现在每天的 Scrum 会议中和日常的协同工作,在每天的 Scrum 例会中,团队成员一般回答一下几个问题 : 昨天完 ...
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- Kendo UI 移动应用开发简介
Kendo UI 移动应用开发简介 Kendo UI 支持开发 Web 应用,前面介绍的 SPA,也支持开发移动应用,至于使用 HTML5 + JavaScript + CSS 开发移动是不是一个好的 ...
随机推荐
- 观list.clear()方法 有感
一 . list.clear()底层源码实现 在使用list 结合的时候习惯了 list=null :在创建这样的方式,但是发现使用list的clear 方法很不错,尤其是有大量循环的时候 1.lis ...
- hdu3664 Permutation Counting(dp)
hdu3664 Permutation Counting 题目传送门 题意: 在一个序列中,如果有k个数满足a[i]>i:那么这个序列的E值为k,问你 在n的全排列中,有多少个排列是恰好是E值为 ...
- cocos2d-x 3.0正式版创建project笔记
cocos2d-x 3.0正式版创建project笔记 不知道Beta版那个高大上的对话框哪里去鸟,正式版又回归到命令行,不知道触碰如此频繁的玩弄追随者的编程习惯是出于什么心理,假设不是为了这 ...
- TensorFlow 安装报错的解决办法
最近关注了几个python相关的公众号,没事随便翻翻,几天前发现了一个人工智能公开课,闲着没事,点击了报名. 几天都没有音信,我本以为像我这种大龄转行的不会被审核通过,没想到昨天来了审核通过的电话,通 ...
- Debian(Linux)+XAMPP(LAMPP)+Zend Studio + PHP +XDebug 完整的开发环境配置方法。 转摘:http://www.cnblogs.com/kungfupanda/archive/2010/11/25/1887812.html
经历了3天左右的挣扎,终于在Linux下将 php开发工具 Zend Studio 的 xdebug安装成功,分享如下: 1,装XAMPP,安装方法链接如下:这里假设XAMPP的安装路径为:/opt/ ...
- 初涉kafka
前言: 今天终于搭建成功kafka环境,并创建了第一个topic,并生产.消费消息,如下图: 生产: 消费: 心情真的是好激动,大家都说搭建环境其实特别简单,但是我的学习却一直卡在搭建环境上面,不是虚 ...
- js中的对象类型的基本操作
示例 /** * 对象属于一种复合数据类型,在对象中可以保存多个不同数据类型的属性 * 对象的分类: * 1.内建对象 * - 由ES标准定义的对象,在任何ES的实现中都可以使用,比如:Math, * ...
- unity ui坐标系转换
世界坐标: transform.position获取的是世界坐标 屏幕坐标: 单位像素 屏幕左下角(0,0)右上角(Screen.width,Screen.height) Screen.width = ...
- neuoj Blurred Pictures(小思维题
https://oj.neu.edu.cn/problem/1505 题意:一张由n*n的照片,每行从第ai个像素点到第bi个像素点是非模糊点,要求找出最大的正方形,该正方形中的像素都是非模糊点. 思 ...
- 【Leetcode周赛】从contest-121开始。(一般是10个contest写一篇文章)
Contest 121 (题号981-984)(2019年1月27日) 链接:https://leetcode.com/contest/weekly-contest-121 总结:2019年2月22日 ...