Flappy Bird这款游戏现在什么游戏还能赚钱在那还能下载iOS的

77872人阅读
实战项目--FlappyBird(3)
& 最近火爆全球的游戏flappy bird让笔者叹为观止,于是花了一天的时间山寨了一个一模一样的游戏,现在把游戏的思路和源码分享出来,代码是基于javascript语言,cocos2d-x游戏引擎,cocos2d-x editor手游开发工具完成的,请读者轻砸;
& ps:运行demo必须配置好,暂不支持其他工具。还有demo是跨平台的,可移植运行android,ios,html5移动系统等;
Android Apk下载:(演示效果)
&暂时只移植打包到android系统,可下载运行看看效果;
腾讯微云:
代码下载:
代码集中营免费下载: &
csdn下载:
百度云盘:
金山快盘 :
代码如何移植到各平台:
&Android:
&html5: & & &&
cocos2d-x跨平台游戏引擎
cocos2d-x是全球知名的游戏引擎 ,引擎在全球范围内拥有众多开发者,涵盖国内外各知名游戏开发商。目前Cocos2d-x引擎已经实现横跨ios、Android、Bada、MeeGo、BlackBerry、Marmalade、Windows、Linux等平台。编写一次,到处运行,分为两个版本 cocos2d-c++和cocos2d-html5 本文使用了后者;
cocos2d-x 官网:
cocos2d-x 资料下载&&
cocos2d-x editor开发工具:
& &cocos2dx editor,它是开发跨平台的手机游戏工具,运行window/mac系统上,javascript脚本语言,基于cocos2d-x跨平台游戏引擎, 集合代码编辑,场景设计,动画制作,字体设计,还有粒子,物理系统,地图等等的,而且调试方便,和实时模拟;
cocos2dx editor 下载,介绍和教程:;
cocos2dx editor官方博客:;(请持续关注版本更新)
思路和源码:
& <span style="color:# 场景设计MainLayer.ccbx,如下图;主要分三层,开始场景、主场景、游戏结束场景,通过显示隐藏控制三个场景的切换。
& &MainLayer.ccbx代码
&?xml version=&1.0& encoding=&UTF-8&?&
jsControlled=&true&
jsController=&MainLayer&
resolution=&default&
&Resolutions&
&Resolution centeredOrigin=&false& ext=&iphone& height=&1280& width=&720& name=&default& scale=&1&/&
&Resolution centeredOrigin=&false& ext=&iphone& height=&720& width=&1280& name=&default1& scale=&1&/&
&/Resolutions&
&Animations&
&Animation autoPlay=&true&
name=&Default Timeline&
length=&10&
chainedId=&0&
offset=&0.0&
position=&0.0&
resolution=&30&
scale=&128&&
&CallbackChannel&
&/CallbackChannel&
&SoundChannel&
&/SoundChannel&
&/Animation&
&/Animations&
positionX=&0& positionY=&0.0&
sizeType=&Percent&
width=&100& height=&100&
anchorPointX=&0.5& anchorPointY=&0.5& ignoreAnchorPoint=&true&
scaleX=&1& scaleY=&1&
&Sprite positionType=&LeftBottom& width=&720.0& height=&1280.0& positionX=&0& positionY=&0& anchorPointX=&0&
anchorPointY=&0& src=&Resources/bg.png& name=&& var=&& target=&None& scaleX=&1& scaleY=&1& visible=&true&/&
&LayerColor positionType=&LeftBottom& width=&720& height=&1280& positionX=&0& positionY=&0& anchorPointX=&0&
anchorPointY=&0& color=&#fff2e8ff& visible=&false&/&
&Menu positionType=&LeftBottom& width=&40& height=&40& positionX=&356.0& positionY=&237.0& anchorPointX=&0.5&
anchorPointY=&0.5& scaleX=&2.4& scaleY=&1.725&&
&Sprite positionType=&LeftBottom& width=&840.0& height=&281.0& positionX=&0& positionY=&0& anchorPointX=&0&
anchorPointY=&0& src=&Resources/ground.png& var=&ground& target=&Doc&/&
&Node positionType=&LeftBottom& width=&40& height=&40& positionX=&800& positionY=&250& anchorPointX=&0&
anchorPointY=&0& var=&hoseNode& target=&Doc&&
&Sprite positionType=&LeftBottom& width=&86.0& height=&60.0& positionX=&-500& positionY=&400& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/bird3.png& var=&test& target=&Doc& visible=&false&/&
&Sprite positionType=&LeftBottom& width=&86.0& height=&60.0& positionX=&-550& positionY=&500& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/bird1.png& var=&bird& target=&Doc& scaleX=&1& scaleY=&1& rotation=&0& visible=&true&/&
&Node positionType=&LeftBottom& width=&40& height=&40& positionX=&303.0& positionY=&500& anchorPointX=&0.5&
anchorPointY=&0.5& var=&readyNode& target=&Doc& visible=&true&&
&Sprite positionType=&LeftBottom& width=&508.0& height=&158.0& positionX=&95.0& positionY=&584.0& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/getready.png&/&
&Sprite positionType=&LeftBottom& width=&286.0& height=&246.0& positionX=&73.0& positionY=&236.0& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/click.png&/&
&Node positionType=&LeftBottom& width=&40& height=&40& positionX=&300& positionY=&500& anchorPointX=&0.5&
anchorPointY=&0.5& var=&overNode& target=&Doc& visible=&true&&
&Sprite positionType=&LeftBottom& width=&590.0& height=&298.0& positionX=&72.0& positionY=&219.0& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/base.png&&
&Sprite positionType=&LeftBottom& width=&508.0& height=&158.0& positionX=&286.0& positionY=&458.0& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/gameover.png&/&
&Menu positionType=&LeftBottom& width=&40& height=&40& positionX=&0& positionY=&0& anchorPointX=&0.5&
anchorPointY=&0.5&&
&MenuItem positionType=&LeftBottom& width=&290& height=&176& positionX=&-65.0& positionY=&-92.0& anchorPointX=&0.5&
anchorPointY=&0.5& normalImage=&Resources/flappy_packer.plist/start.png& target=&Doc& onClick=&onStartClicked&/&
&MenuItem positionType=&LeftBottom& width=&290& height=&176& positionX=&230.0& positionY=&-92.0& anchorPointX=&0.5&
anchorPointY=&0.5& target=&Doc& normalImage=&Resources/flappy_packer.plist/grade.png& onClick=&onGradeClicked&/&
&/Document&
<span style="color:# 代码编写MainLayer.js
& &首先,小鸟在向前飞,其实是底部的路和水管在向左移动,相对的你就感觉小鸟在向右飞了;路循环移动代码:
MainLayer.prototype.groundRun = function ()
var action1 = cc.MoveTo.create(0.5, cc.p(-120, 0));
var action2 = cc.MoveTo.create(0, cc.p(0, 0));
var action = cc.Sequence.create(action1, action2);
this.ground.runAction(cc.RepeatForever.create(action));
& &初始化高低不同的水管,每一关卡都由上下两水管和空隙组成。总长度相同,空隙也一定,随机取下面水管的长度,就形成错落有致的水管关卡;
MainLayer.prototype.newHose = function (num)
var hoseHeight = 830;
var acrossHeight = 300;
var downHeight = 100 + getRandom(400);
var upHeight = 1100 - downHeight - acrossH
var hoseX = 400 *
var HoseName = FP_MAIN_TEXTURE.HOSE;
var ccSpriteDown = cc.Sprite.createWithSpriteFrameName(HoseName[0]);
ccSpriteDown.setZOrder(1);
ccSpriteDown.setAnchorPoint(cc.p(0, 0));
ccSpriteDown.setPosition(cc.p(hoseX, 0));
ccSpriteDown.setScaleY(downHeight / hoseHeight);
var ccSpriteUp = cc.Sprite.createWithSpriteFrameName(HoseName[1]);
ccSpriteUp.setZOrder(1);
ccSpriteUp.setAnchorPoint(cc.p(0, 0));
ccSpriteUp.setPosition(cc.p(hoseX, downHeight + acrossHeight));
ccSpriteUp.setScaleY(upHeight / hoseHeight);
this.hoseNode.addChild(ccSpriteDown);
this.hoseNode.addChild(ccSpriteUp);
this.hoseSpriteList.push(ccSpriteDown);
this.hoseSpriteList.push(ccSpriteUp);
& 一开始进入游戏让底部路不断移动,初始化水管,显示准备游戏场景;
MainLayer.prototype.onEnter = function ()
cc.AnimationCache.getInstance().addAnimations(&Resources/flappy_frame.plist&);
this.groundRun();
this.ground.setZOrder(10);
this.birdReadyAction();
this.bird.setZOrder(20);
this.readyNode.setVisible(true);
this.overNode.setVisible(false);
for (var i = 0; i & 30; i++) {
this.newHose(i);
&点击屏幕,小鸟向上飞60dp,然后更快的速度下落(移动动画),同时闪动翅膀(帧动画);
MainLayer.prototype.birdRiseAction = function ()
var riseHeight = 60;
var birdX = this.bird.getPositionX();
var birdY = this.bird.getPositionY();
var time = birdY / 600;
var actionFrame = cc.Animate.create(cc.AnimationCache.getInstance().getAnimation(&fly&));
var flyAction = cc.Repeat.create(actionFrame, 90000);
var riseAction1 = cc.MoveTo.create(0.2, cc.p(birdX, birdY + riseHeight));
var riseAction2 = cc.RotateTo.create(0, -30);
var riseAction = cc.Spawn.create(riseAction1, riseAction2);
var fallAction1 = cc.MoveTo.create(time, cc.p(birdX, 50));
var fallAction2 = cc.Sequence.create(cc.DelayTime.create(time / 6), cc.RotateTo.create(0, 30));
var fallAction = cc.Spawn.create(fallAction1, fallAction2);
this.bird.stopAllActions();
this.bird.runAction(cc.Spawn.create(
cc.Sequence.create(riseAction, cc.DelayTime.create(0.1), fallAction),
flyAction)
&检测碰撞,如果小鸟碰到地面和水管,发生碰撞,这里碰撞直接用cocos2d-x 里面的图片和图片交叉函数 cc.rectIntersectsRect;
MainLayer.prototype.checkCollision = function ()
if (this.bird.getPositionY() & 60) {
cc.log(&floor&);
this.birdFallAction();
for (var i = 0; i & this.hoseSpriteList. i++) {
var hose = this.hoseSpriteList[i];
if (!this.isInScreen(hose)) {
if (cc.rectIntersectsRect(hose.getBoundingBox(), this.bird.getBoundingBox())) {
cc.log(&hose positionX==& + hose.getBoundingBox().x);
cc.log(&this.bird positionX==& + this.bird.getBoundingBox().x);
cc.log(&i==& + i);
cc.log(&birdFallAction&);
this.birdFallAction();
碰撞后,小鸟先下落,游戏结束场景显示;
MainLayer.prototype.birdFallAction = function ()
this.gameMode = OVER;
this.bird.stopAllActions();
this.ground.stopAllActions();
var birdX = this.bird.getPositionX();
var birdY = this.bird.getPositionY();
var time = birdY / 2000;
this.bird.runAction(cc.Sequence.create(
cc.DelayTime.create(0.1),
cc.Spawn.create(cc.RotateTo.create(time, 90), cc.MoveTo.create(time, cc.p(birdX, 50))))
this.overNode.setVisible(true);
游戏的难度主要在于多个水管的移动,小鸟触摸动画,检测碰撞,我把Mainlayer.js所有代码贴出来;
FP_MAIN_TEXTURE = {
FRAME_ANIMS: &beanstalk/Resources/bs_main_anims.plist&,
HOSE: [&holdback1.png&, &holdback2.png&]
READY = 1;
START = 2;
var MainLayer = function ()
cc.log(&MainLayer&);
this.bird = this.bird || {};
this.ground = this.ground || {};
this.hoseNode = this.hoseNode || {};
this.readyNode = this.readyNode || {};
this.overNode = this.overNode || {};
this.passTime = 0;
this.hoseSpriteList = [];
this.isStart =
this.gameMode = READY;
MainLayer.prototype.onDidLoadFromCCB = function ()
if (sys.platform == 'browser') {
this.onEnter();
this.rootNode.onEnter = function ()
this.controller.onEnter();
this.rootNode.schedule(function (dt)
this.controller.onUpdate(dt);
this.rootNode.onExit = function ()
this.controller.onExit();
this.rootNode.onTouchesBegan = function (touches, event)
this.controller.onTouchesBegan(touches, event);
this.rootNode.onTouchesMoved = function (touches, event)
this.controller.onTouchesMoved(touches, event);
this.rootNode.onTouchesEnded = function (touches, event)
this.controller.onTouchesEnded(touches, event);
this.rootNode.setTouchEnabled(true);
MainLayer.prototype.onEnter = function ()
cc.AnimationCache.getInstance().addAnimations(&Resources/flappy_frame.plist&);
this.groundRun();
this.ground.setZOrder(10);
this.birdReadyAction();
this.bird.setZOrder(20);
this.readyNode.setVisible(true);
this.overNode.setVisible(false);
for (var i = 0; i & 30; i++) {
this.newHose(i);
MainLayer.prototype.newHose = function (num)
var hoseHeight = 830;
var acrossHeight = 300;
var downHeight = 100 + getRandom(400);
var upHeight = 1100 - downHeight - acrossH
var hoseX = 400 *
var HoseName = FP_MAIN_TEXTURE.HOSE;
var ccSpriteDown = cc.Sprite.createWithSpriteFrameName(HoseName[0]);
ccSpriteDown.setZOrder(1);
ccSpriteDown.setAnchorPoint(cc.p(0, 0));
ccSpriteDown.setPosition(cc.p(hoseX, 0));
ccSpriteDown.setScaleY(downHeight / hoseHeight);
var ccSpriteUp = cc.Sprite.createWithSpriteFrameName(HoseName[1]);
ccSpriteUp.setZOrder(1);
ccSpriteUp.setAnchorPoint(cc.p(0, 0));
ccSpriteUp.setPosition(cc.p(hoseX, downHeight + acrossHeight));
ccSpriteUp.setScaleY(upHeight / hoseHeight);
this.hoseNode.addChild(ccSpriteDown);
this.hoseNode.addChild(ccSpriteUp);
this.hoseSpriteList.push(ccSpriteDown);
this.hoseSpriteList.push(ccSpriteUp);
MainLayer.prototype.groundRun = function ()
var action1 = cc.MoveTo.create(0.5, cc.p(-120, 0));
var action2 = cc.MoveTo.create(0, cc.p(0, 0));
var action = cc.Sequence.create(action1, action2);
this.ground.runAction(cc.RepeatForever.create(action));
MainLayer.prototype.birdReadyAction = function ()
var birdX = this.bird.getPositionX();
var birdY = this.bird.getPositionY();
var time = birdY / 2000;
var actionFrame = cc.Animate.create(cc.AnimationCache.getInstance().getAnimation(&fly&));
var flyAction = cc.Repeat.create(actionFrame, 90000);
this.bird.runAction(cc.Sequence.create(
flyAction)
MainLayer.prototype.birdFallAction = function ()
this.gameMode = OVER;
this.bird.stopAllActions();
this.ground.stopAllActions();
var birdX = this.bird.getPositionX();
var birdY = this.bird.getPositionY();
var time = birdY / 2000;
this.bird.runAction(cc.Sequence.create(
cc.DelayTime.create(0.1),
cc.Spawn.create(cc.RotateTo.create(time, 90), cc.MoveTo.create(time, cc.p(birdX, 50))))
this.overNode.setVisible(true);
MainLayer.prototype.birdRiseAction = function ()
var riseHeight = 60;
var birdX = this.bird.getPositionX();
var birdY = this.bird.getPositionY();
var time = birdY / 600;
var actionFrame = cc.Animate.create(cc.AnimationCache.getInstance().getAnimation(&fly&));
var flyAction = cc.Repeat.create(actionFrame, 90000);
var riseAction1 = cc.MoveTo.create(0.2, cc.p(birdX, birdY + riseHeight));
var riseAction2 = cc.RotateTo.create(0, -30);
var riseAction = cc.Spawn.create(riseAction1, riseAction2);
var fallAction1 = cc.MoveTo.create(time, cc.p(birdX, 50));
var fallAction2 = cc.Sequence.create(cc.DelayTime.create(time / 6), cc.RotateTo.create(0, 30));
var fallAction = cc.Spawn.create(fallAction1, fallAction2);
this.bird.stopAllActions();
this.bird.runAction(cc.Spawn.create(
cc.Sequence.create(riseAction, cc.DelayTime.create(0.1), fallAction),
flyAction)
MainLayer.prototype.onUpdate = function (dt)
if (this.gameMode != START) {
this.passTime +=
this.hoseNode.setPositionX(800 - 200 * this.passTime);
this.bird.setPositionX(-500 + 200 * this.passTime);
this.checkCollision();
MainLayer.prototype.checkCollision = function ()
if (this.bird.getPositionY() & 60) {
cc.log(&floor&);
this.birdFallAction();
for (var i = 0; i & this.hoseSpriteList. i++) {
var hose = this.hoseSpriteList[i];
if (!this.isInScreen(hose)) {
if (cc.rectIntersectsRect(hose.getBoundingBox(), this.bird.getBoundingBox())) {
cc.log(&hose positionX==& + hose.getBoundingBox().x);
cc.log(&this.bird positionX==& + this.bird.getBoundingBox().x);
cc.log(&i==& + i);
cc.log(&birdFallAction&);
this.birdFallAction();
MainLayer.prototype.isInScreen = function (sprite)
return (sprite.getPositionX() & 0 && sprite.getPositionX() & 720);
MainLayer.prototype.onExitClicked = function ()
MainLayer.prototype.onStartClicked = function ()
cc.Director.getInstance().resume();
cc.BuilderReader.runScene(&&, &MainLayer&);
MainLayer.prototype.onExit = function ()
cc.log(&onExit&);
MainLayer.prototype.onTouchesBegan = function (touches, event)
var loc = touches[0].getLocation();
MainLayer.prototype.onTouchesMoved = function (touches, event)
MainLayer.prototype.onTouchesEnded = function (touches, event)
if (this.gameMode == OVER) {
if (this.gameMode == READY) {
this.gameMode = START;
this.readyNode.setVisible(false);
var loc = touches[0].getLocation();
this.birdRiseAction();
function isInRect(ccRect, ccTouchBeganPos)
if (ccTouchBeganPos.x & ccRect.x && ccTouchBeganPos.x & (ccRect.x + ccRect.width)) {
if (ccTouchBeganPos.y & ccRect.y && ccTouchBeganPos.y & (ccRect.y + ccRect.height)) {
function getRandom(maxSize)
return Math.floor(Math.random() * maxSize) % maxS
再次提示代码下载地址:
csdn下载:
百度云盘:
金山快盘 :
flappy博文系列:
flappy bird游戏源代码揭秘和下载后续---移植到苹果ios上 (未写)
想了解更多请进入,最新博客和代码在官方博客首发;请持续关注,还有更多cocos2dx editor游戏源码即将放出;
联系笔者:zuowen@makeapp.co(邮箱)qq群:
为了鼓励更多手游爱好者加入cocos2d-x editor阵营,也为了读者坚定对该工具的信心,笔者基于以上的flappy bird代码和新的图片资源,往google play和中国应用市场发布了一个相&#20284;的游戏----腾飞的小鸟(fly bird)。该游戏还加入了广告模块,可以获得些许的广告费。也希望读者通过cocos2d-x editor可以在市场上发布更多的好游戏;
google play地址:&(小秘密:如果应用.apk后缀改为.rar,你会获得意想不到的东西)
豌豆荚市场地址:
机锋市场地址: & &
html5在线演示:&(微软ie浏览器存在兼容性问题,请选择其他浏览器;公司内网,小卡,见谅)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:522752次
积分:4768
积分:4768
排名:第6277名
原创:45篇
评论:864条
--------Cocos2d-JS 项目--------
------Cocos2d-Java 项目------
& 官方微信,扫描关注一下哦
————联系方式————
邮箱:zuowen@makeapp.co&
文章:28篇
阅读:444132
(1)(3)(1)(8)(8)(5)(4)(13)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'Flappy Bird下载
Flappy Bird
用户评分:
用户推荐:
下载次数:
Flappy Bird是一款像素风格的休闲游戏,玩家只需要点击屏幕就可以操作游戏,控制角色通过各种障碍,游戏难度非常大。
6月27日消息:据外媒最新报道,全球著名的专业安全技术公司迈克菲最近发表声明称目前世面上80%的仿FlappyBird游戏都存在恶意软件。迈克菲的首席安全专家BrianKenyon谈...
6月26日消息:FlappyBird的正式版尽管早就下架了,但是各种Android山寨版却层出不穷,而现在有数据显示这些山寨应用中包含着大量的恶意代码。McAfee公司日前发布了一份报告,其中对300款FlappyBird山寨版游...
用户评分:
耐玩程度:
共48个用户点评,综合评分8.3分,
画质:音质:耐玩程度:总结:找乐中可以玩双人对战,真爽
为什么要收钱,不小心按错被扣了钱。还不给我玩!
画质:简单的像素风格,非3D的画质音质:比较单调,但还行耐玩程度:耐玩不一定,就是上手容易总结:无事找虐心的话,这个很合适你。玩起来忒郁闷,最多就玩到37关,但同事轻松就到50关以上特别不服,想玩的就来挑战吧,千万别摔手机哦,保持平和的心态。[
纯手动176分惊呆小伙伴路过
快牙有正版的flappy bird2
我最多82分求超越!
很好玩啊怎么下啊
美国网友说中文?!!!
Haohaohaohaohao
共48个用户点评,综合评分8.3分,
Flappy Bird是一款像素风格的休闲游戏,玩家只需要点击屏幕就可以操作游戏,控制角色通过各种障碍,游戏难度非常大。
6月27日消息:据外媒最新报道,全球著名的专业安全技术公司迈克菲最近发表声明称目前世面上80%的仿FlappyBird游戏都存在恶意软件。迈克菲的首席安全专家BrianKenyon谈...
6月26日消息:FlappyBird的正式版尽管早就下架了,但是各种Android山寨版却层出不穷,而现在有数据显示这些山寨应用中包含着大量的恶意代码。McAfee公司日前发布了一份报告,其中对300款FlappyBird山寨版游...
《每日佳软推荐》依托于ZOL软件下载频道,该栏目涵盖PC、iOS、Android三大平台。从电脑软件、主题、壁纸,到手机软件、手机游戏,我们每天都会为大家推荐几款刚刚更新过的、或者编辑认为有意思的热门的应用,并...
5月16日消息:FlappyBird开发者DongNguyen宣布,FlappyBird游戏将于今年8月重回AppStore。根据Nguyen说,新版FlappyBird将支持多人游戏,并变得不那么让人上瘾。Fla...
3月20日消息:就在前几日,FlappyBird由于重名问题,被苹果商店通牒,将很难继续商家APPStore。然而,现在这只FlappyBird小鸟又飞回来了,这次越南独立开发者DongNg...
FlappyBird的开发者似乎想让这款游戏重新上架,但这可能有些困难。在长时间的沉默后,DongNguyen于本周早些时候与滚石公司商讨他的杰作—FlappyBird。这是FlappyBird从苹果和安卓商店下架后,Nguyen第一次透露他将...
2月24日消息:自从FlappyBird下架之后,各种形形色色的“山寨”版就层出不穷,现在这一款很可能LOL的玩家会感兴趣。在这款名为FlappyTeemo的游戏中,原本游戏中飞行的小鸟被替换成了LOL中高人气角色提莫,...
2月11日消息:《FlappyBird》的确如其作者所说的已经从AppStore中下架了,然而这却又让一拨人发了意外之财,现在安装了《FlappyBird》的iPhone在eBay已经炒到了天价。在eBay上现在涌现了一批号称安装了《...
如果要用一句话来形容《flappybird》,那就是“根本停不下来”。笔者现在的部门成员已经完全沦陷在了《flappybird》之中无法自拔,尽管这是一款简单到令人发指的游戏,但是上瘾程度却是神级的。目前我们这里《fl...
要说最近最火的游戏就要数flappybird莫属了,尽管画面朴素到爆,尽是马赛克的像素风,玩法也简单至极,但是群众们纷纷表示“停不下来”。到底什么是flappybird,又要怎么才能玩好flappybird?这篇文章我们就要讨...
用户评分:
耐玩程度:
画质:音质:耐玩程度:总结:找乐中可以玩双人对战,真爽
为什么要收钱,不小心按错被扣了钱。还不给我玩!
画质:简单的像素风格,非3D的画质音质:比较单调,但还行耐玩程度:耐玩不一定,就是上手容易总结:无事找虐心的话,这个很合适你。玩起来忒郁闷,最多就玩到37关,但同事轻松就到50关以上特别不服,想玩的就来挑战吧,千万别摔手机哦,保持平和的心态。[
纯手动176分惊呆小伙伴路过
快牙有正版的flappy bird2
我最多82分求超越!
很好玩啊怎么下啊
美国网友说中文?!!!
Haohaohaohaohao
一直片刻本报竹林
好极了哈哈哈
好,顶一个
好,顶一个
tinghaowande
很想下載來玩
好难呀,牛感受到站了吧台
把监督局上
很好谢谢楼主的分享
确实好难哦。呵呵。不过很喜欢
扫描下载应用到手机
Flappy Bird 1.5
扫描下载应用到手机
Flappy Bird 1.2
扫描下载应用到手机
Flappy Bird 1.2.2
系统要求:Android 2.2 或更高版本
系统要求:iOS 6.1.4 或更高版本
TA认为完美
TA认为完美
TA认为完美
TA认为很好
TA认为很好
中关村在线推广

我要回帖

更多关于 06款欧蓝德还能开多久 的文章

 

随机推荐