在线演示:http://osgames.duapp.com/apprun.html?appid=osgames1-911422256817006
在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-911422256817006
微信扫描:
运行截图:

FlappyBird是2014年爆红的一款游戏,属于经典的重力感应游戏,玩法非常简单同时又非常虐心,正是这样的特点让FlappyBird得以在社交网络病毒式的传播。

GameBuilder集成了Box2d物理引擎,开发这一类的重力感应游戏属于他的看家本领。

用GameBuilder实现的FlppyBird总共只需要60行代码,主要实现了管子在垂直方向上的随机分布(水平方向位置是固定的),当然你可以自己摆管子,那样的话,可能只要10行代码就搞定了。

游戏主要包括两方面:

水平布管

屏幕的虚拟宽度设置为100000像素,只放置上下各四根管子,如下图:

小鸟越过(屏幕左边)的管子重新设置到小鸟前面(屏幕右边)。

  • 位置生成函数
win.initPList = function() {var x, y;for(var i = 0; i < 4; i++) {var position = {x:0, y:0};x = 480 + i*320;y = win.randomY();position.x = x;position.y = y;win.pList.push(position);}
};
  • 更新位置列表
win.updatePList = function() {var win = this.getWindow();var bird = win.find("bird");//小鸟越过管子后,播放音效,加分if(bird.x > win.nextScoreX) {  win.nextScoreX += 320;win.find("effects").play("disappear.mp3");win.score += 1;win.find("score").setText(win.score);}//最左侧管子移出屏幕外时,将其挪到右边if(win.pList[0].x - this.xOffset < - 320) {var p = win.pList.shift();p.x = win.pList[2].x + 320;p.y = win.randomY();win.pList.push(p);}
};
  • 定时根据位置列表更新管子位置
win.updateBox = function() {win.updatePList();for(var i = 0; i < 4; i++) {win.find("boxup" + i).setPosition(win.pList[i].x, win.pList[i].y);win.find("boxdown" + i).setPosition(win.pList[i].x, win.pList[i].y + 850);}setTimeout(win.updateBox, 50);
};

碰撞检测

在游戏中,小鸟作为一个刚体,在游戏中一直需要保持悬空,一旦有碰撞就视游戏结束,因此只要实现小鸟的onBeginContact事件接口即可。

事件代码:

var win = this.getWindow();
if(!win.gameOver) {win.gameOver = true; win.find("bird").setV(0, 15);win.openWindow("win-result", function(ret) { win.restartGame();}, false, win.score);
}

GameBuilder开发游戏应用系列之60行代码实现FlappyBird相关推荐

  1. GameBuilder开发游戏应用系列之50行代码实现微信漂流瓶

    在线运行:http://osgames.duapp.com/apprun.html?appid=osgames1-871422195197258 在线编辑:http://osgames.duapp.c ...

  2. 直击面试现场:神级程序员仅100秒,60行代码写出俄罗斯方块,成为全公司焦点!...

    小编我今天逛论坛看到一位HR帖子直播公司面试情况,该公司是做棋牌APP的,现在正在招聘前端工程师和运营人员,HR直播的是前端这块的,有写游戏的也有做网站项目的,写特效的都有很多,但是这位HR却看上了一 ...

  3. 菜鸟最爱,60行代码打造一款音乐播放器!

    点上方"菜鸟学Python",选择"星标" 第467篇原创干货,第一时间送达 大家好,我是菜鸟哥! 对于小伙伴们来说,在日常的学习和工作中,很多人都喜欢边听音乐 ...

  4. JavaScript开发区块链只需200行代码

    JavaScript开发区块链只需200行代码 用JavaScript开发实现一个简单区块链.通过这一开发过程,你将理解区块链技术是什么:区块链就是一个分布式数据库,存储结构是一个不断增长的链表,链表 ...

  5. hash签名 java_java开发区块链只需150行代码

    原标题:java开发区块链只需150行代码 本文帮助你理解什么是区块链.将通过java开发区块链的实战学习方式,用 Java创建开发一个基本的区块链,实现简单的工作量证明系统.Java开发区块链的源代 ...

  6. python居然能语音控制电脑壁纸切换,只需60行代码

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 家在日常的电脑使用中,都会有自己喜爱类型的桌面 单纯的桌面有时候会让人觉得单调 今天,就由我带领大家只用60行代码打造一款语音壁纸切换器程序, 让大家能够 ...

  7. python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据

    python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据 最近工作太忙了,有一个星期没有更新文章了,本来这一期打算分享一些对龙虎榜数据的分析结果的,现在还没有把数据内的价值很好 ...

  8. Win10下 60行代码实现多线程PDF转Word 运行错误摘要

    代码下载:https://github.com/python-fan/pdf2word 资料整合来源: https://www.imooc.com/qadetail/181211 https://zh ...

  9. 60行代码出炫酷效果之 python语音控制电脑壁纸切换

    前言 大家早好.午好.晚好吖 ❤ ~欢迎光临本文章 电脑大家有吧!手大家有吧!今天!! 就由我带领大家用区区60行代码打造一款语音壁纸切换器程序!!! 单纯的桌面有时候会让人觉得单调,那么~ 让大家能 ...

最新文章

  1. java框架知识_java框架知识点总结
  2. docker 删除默认连接_Net Core 中 Docker应用
  3. 一系列图论问题[转]
  4. 使用 Java 配置进行 Spring bean 管理--转
  5. 利用JNative实现Java调用动态库
  6. matlab程序 surf算法,【求大神帮忙,surf算法源代码解析】
  7. python吃显卡还是内存条_用游戏本打游戏是显卡重要还是内存重要?
  8. html页面数学公式添加(附图)
  9. Java学习笔记 --- IDEA
  10. java的安装_java 安装步骤
  11. 云计算决策指南:解析医疗的7大解决方案
  12. 苏州大学计算机考研大纲2021,2021苏州大学考研参考书目
  13. 信鸽推送避免打开多个相同的activity
  14. Ubuntu20.04代理设置
  15. Only no-arg methods may be annotated with @Scheduled 的解决方法
  16. Android平台WIFI启动流程之二
  17. CPU之外,国产芯片再突破,再也不用看AMD和NVIDIA的脸色了
  18. hbase数据库scan操作_HBase最佳实践之Scan
  19. 关于EeePc的Linux下安装GCC编译器
  20. JSON字符串key值驼峰转下划线

热门文章

  1. Mysql聚簇索引和非聚簇索引原理(数据库)
  2. jquery获取当前时间戳的正确时间
  3. string转LPCTSTR
  4. 简单算法——奇因数代数和
  5. VS 2017 解决 C2001错误 常量中有换行符
  6. 联想—拯救者—R9000P触控板无反应
  7. 论文精读:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks
  8. Debug Error: abort() has been called解决办法
  9. CentOS6.5下使用NetHogs监控进程网络使用情况
  10. spark sql 之 collect_set collect_list 后WrappedArray 取值