LibGDX_8.2: LibGDX 项目实战: 开发跨平台 Flappy Bird(像素鸟)游戏
本文链接: http://blog.csdn.net/xietansheng/article/details/50188319
LibGDX 基础教程(总目录)
声明: 游戏中使用到的图片和音频资源来自网络,资源版权和游戏创意属原作者,这里仅供学习交流。
1. 概述
《Flappy Bird》,中文名称《像素鸟》,是一款简单而富有挑战性的益智休闲游戏。玩家只需要用一个手指点击屏幕即可操作,手指点击一下屏幕,小鸟就会往上飞一点,受到重力作用,又会不停往下掉,所以玩家要控制小鸟一直向前飞行,并注意躲避途中高低不平的水管,每飞过一对水管,就增加得分。飞行过程中如果撞到水管或掉落在地板上则游戏结束。
2. 游戏效果展示
HTML5 平台 在线演示(浏览器需要支持 WebGL): http://xietansheng.github.io/FlappyBirdForGDX/
Desktop 平台项目运行截图:
3. LibGDX 工程创建
使用 LibGDX 开发包中的 gdx-setup.jar 工具创建 Gradle 工程,工程相关参数如下:
- 项目名称(Name): FlappyBirdForGDX
- 项目包名(Package): cn.appkf.flappybird
- 游戏程序入口类(Game class): MainGame
- LibGDX 版本: 1.6.1
- Sub Projects: Desktop,Android,Ios,Html
- Extensions: 不需要任何扩展包
项目的创建步骤参考: LibGDX_1.5: 使用 Gradle 创建 LibGDX 所有平台的关联项目
4. 游戏的设计
游戏的程序设计,首先要仔细观察游戏的运行效果,通过现象分析原理和元素组成来设计程序。通过试玩《Flappy Bird》这款游戏,就玩家视觉上感觉而言,可以发现游戏场景中有一只小鸟不断地往右边飞翔,并穿越高低不齐的水管障碍。在程序中让小鸟沿着一张长地图从左边飞到右边的思维去设计并不好设计,并且这样设计出来的水管出现位置和高度相同,关卡长度也有限。在物理学中都有学过,运动是相对,因此可以把小鸟、地板、水管的运动做如下两种描述:
- (1) 以场景中的地板为参照物,小鸟不停地往右边飞翔前进闯关,穿越相对地板静止的水管。
- (2) 以手机屏幕为参照物,小鸟则是水平方向不动,一直在竖直方向上跳跃,水管和地板则是不停地从屏幕右边进入移动到左边并移出。
以手机屏幕为参照物,固定屏幕左下角为坐标原点,这样在程序中更容易设计,因此采用第(2)种方式设计程序,大致原理可如下所示:
- 固定一张大图片作为背景;
- 在场景中放置一只小鸟,横坐标固定不变,纵坐标受到重力影响在每一次循环中根据重力加速度改变位置,点击一次屏幕后,给小鸟一个竖直向上的初速度,然后又受重力影响速度不断减小往下掉(改变纵坐标),实际上就是小鸟在原地(相对于屏幕)跳跃等着水管穿越自己;
- 地板匀速循环向左移动;
- 定时随机生成一对水管从屏幕右边进入并匀速(和地板速度相同)移动到屏幕左边并移出(纵坐标不变,横坐标不断减小);
- 在每一次循环中判断一次小鸟和水管、小鸟和地板是否碰撞,并判断小鸟是否穿越了水管(实际就是水管主动穿越小鸟),穿越一对水管就得 1 分。
程序中的相关游戏元素节点的结构组成关系如下所示:
- DesktopLauncher / AndroidLauncher / IOSLauncher / HtmlLauncher(平台启动器)
- MainGame(游戏程序入口类,表示整个游戏应用)
- GameScreen(游戏主场景,包含 2 个舞台)
- GameStage(主游戏舞台)
- ImageActor(一张大图背景)
- FloorActor(floorActor,地板)
- ImageActor(tapTipActor,点击提示的图片)
- ImageActor(getReadyActor,准备提示的文字图片)
- BirdActor(小鸟,一个带动画效果的演员的封装)
- BigScoreActor(屏幕上方中间的分数显示)
List<BarActor>
(存放水管的集合)
- GameOverStage(游戏结束舞台)
- ImageActor(gameOverActor,游戏结束的文字图片)
- ResultGroup(游戏结果显示的元素组合,包括 奖牌、分数、最佳的分数)
- ImageActor(背景图片)
- AnimationActor(奖牌,由 4 帧组成的一个动画,根据分数评定等级,并固定显示等级对应的其中一帧)
- SmallScoreActor(当前分数)
- SmallScoreActor(最佳分数)
- ImageButton(重新开始游戏按钮)
- GameStage(主游戏舞台)
- GameScreen(游戏主场景,包含 2 个舞台)
- MainGame(游戏程序入口类,表示整个游戏应用)
其他与元素节点结构无关的类:
- Res(资源常量)
- CollisionUtils(碰撞检测工具类,判断给定的两个演员是否发生碰撞)
- GameState(游戏状态枚举)
5. 游戏源码
更加详细的游戏设计和游戏逻辑请结合上面所说的设计思路查看完整源码。
源码仓库地址: https://github.com/xietansheng/FlappyBirdForGDX
LibGDX_8.2: LibGDX 项目实战: 开发跨平台 Flappy Bird(像素鸟)游戏相关推荐
- LibGDX_8.1: LibGDX 项目实战: 开发跨平台 2048 游戏
本文链接: http://blog.csdn.net/xietansheng/article/details/50188259 LibGDX 基础教程(总目录) 声明: 游戏中使用到的部分图片和音频资 ...
- 【源码+图片素材】Java开发经典游戏飞翔的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java小游戏_Java初级项目_Java课程设计项目
开发环境: jdk1.8 开发工具: IDEA JavaEE基础: 变量.数据类型.判断语句.循环结构.数组.集合.简单窗口创建.图形图片绘制.双缓存技术.事件-键盘事件.物体的碰撞检测.File [ ...
- 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目
课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...
- 【教程+源码】Java开发经典游戏飞翔的小鸟_Java游戏项目Flappy Bird像素鸟游戏
在飞翔的小鸟游戏中,玩家只需通过点击方向键操纵让小鸟避开绿色管道等障碍物即可继续前进.如果小鸟碰到管道,游戏立即结束. 那么如何用Java编写一款属于自己的飞翔的小鸟游戏呢?其过程并不复杂,本课程详细 ...
- cocoscreator练手 入门 Flappy Bird 像素鸟项目(1)
好久没用cocoscreator,有点手生,做个小项目练练手. 项目已经上传至github,地址: https://github.com/ccffee-jc/CocosCreatorDemo 也可以在 ...
- cocoscreator练手 入门 Flappy Bird 像素鸟项目(2)加入水管
这次加个水管,效果是生成水管,并且让水管自动向左移动 源码和素材可在公众号获取(发送FlappyBird): 制作水管预制 cocoscreator在生成节点的策略中,提供了预制节点的方案,就相当于把 ...
- 零基础学习嵌入式入门以及项目实战开发【手把手教+国内独家+原创】
零基础学习嵌入式入门以及项目实战开发[手把手教+国内独家+原创] 独家拥有,绝对经典 创 科 之 龙 嵌入式开发经典系列教程 [第一期] 主讲人: ...
- jsp项目开发案例_Laravel 中使用 swoole 项目实战开发案例一 (建立 swoole 和前端通信)life...
1 开发需要环境 工欲善其事,必先利其器.在正式开发之前我们检查好需要安装的拓展,不要开发中发现这些问题,打断思路影响我们的开发效率. 安装 swoole 拓展包 安装 redis 拓展包 安装 la ...
- jsp项目开发案例_Laravel中使用swoole项目实战开发案例一 (建立swoole和前端通信)
Laravel中使用swoole项目实战开发案例二(后端主动分场景给界面推送消息) 工欲善其事,必先利其器.在正式开发之前我们检查好需要安装的拓展,不要开发中发现这些问题,打断思路影响我们的开发效率. ...
最新文章
- 分裂游戏(bzoj 1188)
- openFeign 服务接口的调用03—— OpenFeign 超时控制
- oracle修改物化视图字段,获取物化视图字段的修改矢量(一)
- [7] ADB 模拟按键/输入
- mysql数据库 day03
- 2017.3.30 寿司晚宴 失败总结
- bat转exe工具 Bat To Exe Converter v2.4.7 绿色版
- cisco ***笔记
- 计算机课初中文化的学生招,计算机应用 教学计划
- 微信小程序 图片显示不出来的问题 100%管用
- linux 操作mysql 命令_linux下mysql操作命令大全
- 【linux】通过xshell上传文件
- VsCode模仿简单百度网页(html)
- 电脑清灰过后,CPU温度下降,显卡温度却上升了
- 虾皮电商平台怎么样?新手能挣到钱吗?
- 关于IOS设备window onscroll滚动条滚动事件不触发的问题
- 论文解读9——TabNet: Attentive Interpretable Tabular Learning
- PHP+Redis令牌桶算法 接口限流
- 基于MSP430F149操作数字电位器ISL23425WFVZ
- 电力-故障录波(向量图)