GameBuilder开发游戏应用系列之60行代码实现FlappyBird
2015-03-07 21:50
706 查看
在线演示: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行代码就搞定了。
游戏主要包括两方面:
小鸟越过(屏幕左边)的管子重新设置到小鸟前面(屏幕右边)。
位置生成函数
更新位置列表
定时根据位置列表更新管子位置
事件代码:
在线编辑: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开发游戏应用系列之100行代码实现微信打飞机
- GameBuilder开发游戏应用系列之100行代码实现别踩白块
- GameBuilder开发游戏应用系列之100行代码实现贪吃蛇
- GameBuilder开发游戏应用系列之70行代码实现套圆环
- GameBuilder开发游戏应用系列之50行代码实现微信漂流瓶
- GameBuilder开发游戏应用系列
- HTML5游戏实战(3): 60行代码实现水平跑酷游戏
- HTML5游戏实战(3): 60行代码实现水平跑酷游戏
- GameBuilder开发游戏应用系列之Cantk窗口生命周期
- cocos2dx3.3开发FlappyBird总结十六:游戏层实现
- S3C2416裸机开发系列九_GCC启动代码工程应用实例
- iOS应用开发最佳实践系列一:编写高质量的Objective-C代码
- Eclipse SWT开发教程以及一个连连看游戏的代码实现下载
- Android应用开发--MP3音乐播放器代码实现(二)
- iOS应用开发最佳实践系列一:编写高质量的Objective-C代码
- GameBuilder游戏开发系列之见缝插针(AA)
- HTML5游戏实战(4): 20行代码实现FlappyBird
- HTML5游戏实战(4): 20行代码实现FlappyBird
- HTML5游戏实战(4): 20行代码实现FlappyBird
- SharpStreaming项目开发纪实:构建基于RTSP协议的服务器及客户端应用(三)——客户端的业务代码实现