Cocos2d之FlyBird开发---简介
2024-08-23 09:25:50
| 版权声明:本文为博主原创文章,未经博主允许不得转载。
开发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); //修改最高成绩函数 };
附上游戏图:
最新文章
- 我喜欢的Notepad++插件
- Transient的作用
- 开始我的PostgreSQL的学习之旅
- mac工具收藏
- 关于myeclipse中maven项目转换相关设置
- C++ 使用Htmlcxx解析Html内容(VS编译库文件)
- CodeForces 361B 	Levko and Permutation
- PHP 分析1
- MLR算法[Paper笔记]
- 在CentOS上安装Python3的三种方法
- linux 环境变量 转
- B. Alyona and a tree
- python的扩展包requests的高级用法
- Java 中的锁
- BZOJ 3564: [SHOI2014]信号增幅仪 最小圆覆盖
- map模块使用方法
- sonarQube环境搭建--常见问题及解决
- 在CentOS上安装Mysql使用yum安装mysql
- eclipse中maven打包
- 【深入理解JAVA虚拟机】第三部分.虚拟机执行子系统.3.函数调用与执行
热门文章
- 解决Linux下编译.sh文件报错 “[: XXXX: unexpected operator”
- sqlserver创建索引语句
- NGUI的Lebal需注意问题
- K3 cloud选单时候必须把必录的数据录完以后才可以选单
- 根据配置RedisProperties自动获取RedisConnectionFactory
- sendmail 出现 My unqualified host name的解决办法
- 在vCenter上创建新用户 (适用版本6.0)
- Mongodb使用shell实现与javascript的动态交互
- spring 整合rabbitMQ
- [BZOJ3669] [NOI2004] 魔法森林 LCT维护最小生成树