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 开发移动是不是一个好的 ...
随机推荐
- Link-Cut-Tree学习(LCT)
Link-Cut-Tree学习(LCT) 真不敢想象我居然学会LCT了,但是我仍然不想写一篇博客来梳理 我怕一梳理自己又不懂了 但是作为一名朴实沉毅的cjoier,我决定小小的梳理一下,并不打算很精致 ...
- HTML5+Canvas手机拍摄,本地压缩上传图片
最近在折腾移动站的开发,涉及到了一个手机里面上传图片.于是经过N久的折腾,找到一个插件,用法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
- Go语言_方法和接口
方法和接口 本节课包含了方法和接口,可以用这种构造来定义对象及其行为. Go 作者组编写,Go-zh 小组翻译. https://tour.go-zh.org/methods/1 方法 Go 没有类. ...
- JVM(9)之 年轻代收集器
开发十年,就只剩下这套架构体系了! >>> 继续上一篇博文所讲的,STW即GC时候的停顿时间,他会暂停我们程序中的所有线程.如果STW所用的时间长而且次数多的话,那么我们整个系统 ...
- springcloud费话之Eureka集群
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- CSS中quotes属性以及content的open(close)-quotes属性
定义和用法 quotes 属性设置嵌套引用(embedded quotation)的引号类型. 可能的值 值 描述 none 规定 "content" 属性的 "open ...
- html5 实例渐变
代码实例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- setInterval,setTimeout,clearInterval
定时器 var i=0; function iadd(){ i++; console.log(i) } setInterval(iadd,1000);//1.2.3... 超时调用 var i=0; ...
- HTML5浏览器
你可以学会如何使用旧的浏览器正确处理新的HTML5. HTML5 浏览器支持 HTML5 支持所有现代浏览器. 此外,所有的浏览器,旧的和新的,自动处理未被识别的元素作为内联元素. 因为这样,你可以& ...
- mybatis的Date类型。
在写select的时候,里面的查询语句.where后面如果jdbcType=DATE没有写的话是 这个形式的. <select id="selectPhoto" parame ...