GameBuilder开发游戏应用系列之60行代码实现FlappyBird
在线演示: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相关推荐
- GameBuilder开发游戏应用系列之50行代码实现微信漂流瓶
在线运行:http://osgames.duapp.com/apprun.html?appid=osgames1-871422195197258 在线编辑:http://osgames.duapp.c ...
- 直击面试现场:神级程序员仅100秒,60行代码写出俄罗斯方块,成为全公司焦点!...
小编我今天逛论坛看到一位HR帖子直播公司面试情况,该公司是做棋牌APP的,现在正在招聘前端工程师和运营人员,HR直播的是前端这块的,有写游戏的也有做网站项目的,写特效的都有很多,但是这位HR却看上了一 ...
- 菜鸟最爱,60行代码打造一款音乐播放器!
点上方"菜鸟学Python",选择"星标" 第467篇原创干货,第一时间送达 大家好,我是菜鸟哥! 对于小伙伴们来说,在日常的学习和工作中,很多人都喜欢边听音乐 ...
- JavaScript开发区块链只需200行代码
JavaScript开发区块链只需200行代码 用JavaScript开发实现一个简单区块链.通过这一开发过程,你将理解区块链技术是什么:区块链就是一个分布式数据库,存储结构是一个不断增长的链表,链表 ...
- hash签名 java_java开发区块链只需150行代码
原标题:java开发区块链只需150行代码 本文帮助你理解什么是区块链.将通过java开发区块链的实战学习方式,用 Java创建开发一个基本的区块链,实现简单的工作量证明系统.Java开发区块链的源代 ...
- python居然能语音控制电脑壁纸切换,只需60行代码
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 家在日常的电脑使用中,都会有自己喜爱类型的桌面 单纯的桌面有时候会让人觉得单调 今天,就由我带领大家只用60行代码打造一款语音壁纸切换器程序, 让大家能够 ...
- python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据
python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据 最近工作太忙了,有一个星期没有更新文章了,本来这一期打算分享一些对龙虎榜数据的分析结果的,现在还没有把数据内的价值很好 ...
- Win10下 60行代码实现多线程PDF转Word 运行错误摘要
代码下载:https://github.com/python-fan/pdf2word 资料整合来源: https://www.imooc.com/qadetail/181211 https://zh ...
- 60行代码出炫酷效果之 python语音控制电脑壁纸切换
前言 大家早好.午好.晚好吖 ❤ ~欢迎光临本文章 电脑大家有吧!手大家有吧!今天!! 就由我带领大家用区区60行代码打造一款语音壁纸切换器程序!!! 单纯的桌面有时候会让人觉得单调,那么~ 让大家能 ...
最新文章
- java框架知识_java框架知识点总结
- docker 删除默认连接_Net Core 中 Docker应用
- 一系列图论问题[转]
- 使用 Java 配置进行 Spring bean 管理--转
- 利用JNative实现Java调用动态库
- matlab程序 surf算法,【求大神帮忙,surf算法源代码解析】
- python吃显卡还是内存条_用游戏本打游戏是显卡重要还是内存重要?
- html页面数学公式添加(附图)
- Java学习笔记 --- IDEA
- java的安装_java 安装步骤
- 云计算决策指南:解析医疗的7大解决方案
- 苏州大学计算机考研大纲2021,2021苏州大学考研参考书目
- 信鸽推送避免打开多个相同的activity
- Ubuntu20.04代理设置
- Only no-arg methods may be annotated with @Scheduled 的解决方法
- Android平台WIFI启动流程之二
- CPU之外,国产芯片再突破,再也不用看AMD和NVIDIA的脸色了
- hbase数据库scan操作_HBase最佳实践之Scan
- 关于EeePc的Linux下安装GCC编译器
- JSON字符串key值驼峰转下划线
热门文章
- Mysql聚簇索引和非聚簇索引原理(数据库)
- jquery获取当前时间戳的正确时间
- string转LPCTSTR
- 简单算法——奇因数代数和
- VS 2017 解决 C2001错误 常量中有换行符
- 联想—拯救者—R9000P触控板无反应
- 论文精读:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks
- Debug Error: abort() has been called解决办法
- CentOS6.5下使用NetHogs监控进程网络使用情况
- spark sql 之 collect_set collect_list 后WrappedArray 取值