|   版权声明:本文为博主原创文章,未经博主允许不得转载。

开发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开发---简介的更多相关文章

  1. Cocos2d 之FlyBird开发---MainMenu类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. MainMenu类主要实现的是游戏主界面的布局,它相当于一个港口,有开向各处的航道,而游戏中的MainMenu则是有跳转到各个场景的一个集 ...

  2. Cocos2d 之FlyBird开发---GameUnit类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 这节来实现GameUnit类中的一些函数方法,其实这个类一般是一个边写边完善的过程,因为一般很难一次性想全所有的能够供多个类共用的方法.下 ...

  3. Cocos2d 之FlyBird开发---GameData类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 现在是大数据的时代,绝大多数的游戏也都离不开游戏数据的控制,简单的就是一般记录游戏的得分情况,高端大气上档次一点的就是记录和保存各方面的游 ...

  4. Cocos2d 之FlyBird开发---GamePlay类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 这个是游戏的核心部分:(FlyBird游戏重中之重) 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态的刚体(小鸟) 在物 ...

  5. Cocos2d 之FlyBird开发---GameAbout类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载.(笔者才疏学浅,如有错误,请多多指教) 一般像游戏关于的这种界面中,主要显示的是游戏的玩法等. GameAbout.h #ifndef _G ...

  6. Cocos2d 之FlyBird开发---GameScore类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 这个类主要实现的是,显示历次成绩中的最好成绩.当然我写的这个很简洁,还可以写的更加的丰富.下面贴上代码: GameScore.h #ifn ...

  7. Scrum敏捷开发简介

    Agile 敏捷开发实践中,强调团队的自我管理.在 Scrum 中,自我团队管理体现在每天的 Scrum 会议中和日常的协同工作,在每天的 Scrum 例会中,团队成员一般回答一下几个问题 : 昨天完 ...

  8. iOS cocos2d 2游戏开发实战(第3版)书评

    2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...

  9. Kendo UI 移动应用开发简介

    Kendo UI 移动应用开发简介 Kendo UI 支持开发 Web 应用,前面介绍的 SPA,也支持开发移动应用,至于使用 HTML5 + JavaScript + CSS 开发移动是不是一个好的 ...

随机推荐

  1. 微信支付公众号支付redirect_uri域名与后台配置不一致,错误码10003

    最近弄微信支付,微信支付公众号支付redirect_uri域名与后台配置不一致,错误码10003,最容易出错两个地方 1,appid 对应不到 2,开发者网页授权 填写域名 文章来自http://ww ...

  2. python模块 __name=='__main__' 用法

    python模块 __name=='__main__' 用法1.ceshi_mod1.pydef test1(): print('111111')def test2(): print('2222')i ...

  3. MVC路由学习:自定义路由参数(用户看不到参数名),重新定义路由规则

    MVC路由:由于路由global中注册了,在程序第一次运行时,在MVC会自动生成路由,类似于字典的格式缓存下来,但路由生成的规则又是怎样的呢? 路由生成规则是: 1>更具你定义的的顺序查找路由规 ...

  4. C#设计模式:抽象工厂(Abstract Factory)

    一,抽象工厂模式 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  5. spring(三):spring中BeanPostProcessor的使用

    spring中实现BeanPostProcessor的后置处理器 ApplicationContextAwareProcessor 进入该实现类内部 可以看到:该类帮我们组建IOC容器,判断我们的be ...

  6. Vue PC端图片预览插件

    *手上的项目刚刚搞完了,记录一下项目中遇到的问题,留做笔记: 需求: 在项目中,需要展示用户上传的一些图片,我从后台接口拿到图片url后放在页面上展示,因为被图片我设置了宽度限制(150px),所以图 ...

  7. day17 python re模块 简易爬虫

    day17 python   一.re模块     1.re模块的基础方法         查找findall() import re #re.findall(pattern,string,flags ...

  8. bzoj5161 最长上升子序列 状压DP(DP 套 DP) + 打表

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5161 题解 回顾一下以前用二分求 LIS 的方法:令 \(f[i]\) 表示长度为 \(i\) ...

  9. UOJ131 [NOI2015] 品酒大会

    考前挣扎(bu shi 之前留下来的坑 首先注意到 SAM的parent树 是反串的后缀树 也就是原串的前缀树 这个性质很重要 所以说我们在树上统计的时候两个点的lca就是两个后缀串的lcp 于是可以 ...

  10. HTTP协议缓存

    缓存的概念 缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP.NET页面缓存,对象缓存. 数据库也有缓存, 等等. http中具有缓存功能的是浏览器缓 ...