flappy bird游戏源代码揭秘和下载后续---添加广告sdk和与android交互

原创 2014年03月02日 12:14:45

前言:

     这一节,笔者将给flappy加入google的AdMob广告 ,这也是为什么越南小伙瞬间日进5万美元的秘诀;平台还是android手机上,通过这个demo,读者可以学习js代码怎么和android代码交互,怎么按键检测退出,怎么分享;

ps 如果没有出现广告,确定wifi是否打开,确定杀毒安全软件是否禁止广告模块;


背景:

   最近火爆全球的游戏flappy bird让笔者叹为观止,于是花了一天的时间山寨了一个一模一样的游戏,现在把游戏的思路和源码分享出来,代码是基于javascript语言,cocos2d-x游戏引擎,cocos2d-x editor手游开发工具完成的,请读者轻砸;

ps:运行demo需要配置好cocos2d-x editor,暂不支持其他工具。还有demo是跨平台的,可移植运行android,ios,html5网页等。


Android源代码:

进入代码集中营下载(flappy源码--添加admob广告):  http://blog.makeapp.co/?p=306&preview=true


效果图 (图片顶部有广告)

 

代码分析

首先实现广告模块:在以前android代码的基础上加入GoogleAdmobAdsSdk.jar,拷贝到libs路径下,并且右击选择add as library;

然后在src目录下加入plugin模块。



接着修改asserts里面的MainActivity.js,在onEnter方法里面加入广告代码;a152fcf037adb43是广告秘钥,可到admob官网申请,showAds表示广告的位置;

  var adsAdmob = plugin.PluginManager.getInstance().loadPlugin("AdsAdmob");
    cc.log("configDeveloperInfo AdsAdmob");
    if (adsAdmob) {
        cc.log("configDeveloperInfo");
        adsAdmob.configDeveloperInfo({"AdmobID": "a152fcf037adb43"});
        adsAdmob.showAds(0, 0, 1);
    }
    else {
        cc.log("can't find AdsAdmob plugin");
    }


找到Cocos2dMainActivity文件,整个游戏场景作为一个activity存在,修改代码如下;初始化了PluginWarpper,同时可以添加返回按键事件onBackPressed();System.loadLibrary("cocos2dx-game")也很关键,把需要的库下载下来;在AndroidManifest修改相应的参数,代码不列出来;运行可以看到广告,也可以点击返回键弹出退出框;

public class Cocos2dMainActivity extends Cocos2dxActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        PluginWrapper.init(this); // for plugins
        PluginWrapper.setGLSurfaceView(Cocos2dxGLSurfaceView.getInstance());


        Cocos2dxLocalStorage.context = this;
        /*String languageType = getResources().getConfiguration().locale.getCountry();
        if (languageType.equals("CN")) {
            Cocos2dxLocalStorage.setItem("language", "CN");
            System.out.println("language china");
        } else {
            Cocos2dxLocalStorage.setItem("language", "US");
            System.out.println("language english");
        }*/
    }

    public Cocos2dxGLSurfaceView onCreateView() {
        Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
        // HelloAds should create stencil buffer
        glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);

        return glSurfaceView;
    }

    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
            return true;
        }
        return super.dispatchKeyEvent(event);
    }


    public void onBackPressed() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this)
                .setTitle("")
                .setMessage("quit the game?")
                .setNegativeButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        System.exit(0);
                        finish();
                    }
                }).setPositiveButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
        AlertDialog dialog = builder.create();
        dialog.show();
    }

    public void onClickShare(View view) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("image/*");
        intent.putExtra(Intent.EXTRA_SUBJECT, "分享");
        intent.putExtra(Intent.EXTRA_TEXT, "终于可以了!!!");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(Intent.createChooser(intent, getTitle()));
    }


    static {
//        System.loadLibrary("game");
        System.loadLibrary("cocos2dx-game");
    }
}



接着我们实现在游戏里面触发分享事件,找到asserts--MainLayer.js, 给那个123图片添加点击事件;sys.localStorage.setItem("share", "xxx")是交流通道,获得关键词share,直接在CocosdLocalStorge setItem方法下触发;

MainLayer.prototype.onGradeClicked = function () {
    sys.localStorage.setItem("share", "xxx");
}



找到CocosdLocalStorge,setItem方法,修改如下,如果关键词是share,开启分享意向;同时value里面也可以放入要传递的值;CocosdLocalStorge本来是放在cocos2dx-android.jar里面的,现在把它公开出来了

   public static void setItem(String key, String value) {
        try {
            String sql = "replace into " + TABLE_NAME + "(key,value)values(?,?)";
            mDatabase.execSQL(sql, new Object[]{key, value});
            if (key.equals("share")) {
                System.out.println("jump share");
                onClickShare(value);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static void onClickShare(String score) {
        String shareText = "welcome to use cocos2d-x editor!";
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_SUBJECT, "share");
        intent.putExtra(Intent.EXTRA_TEXT, shareText);
        context.startActivity(Intent.createChooser(intent, "share to"));
    }


然后我们要从android应用里面跳到cocos2d-x游戏里面,其实很简单,就是普通的活动意向跳转,在AndroidMainActivity.java加入代码;

Button btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(AndroidMainActivity.this, Cocos2dMainActivity.class));
            }
        });


最后别忘记在AndroidManifest.xml里面把需要的参数配置好,运行正常没问题,有问题可自行调试;


flappy博文系列:

flappy bird游戏源代码揭秘和下载

flappy bird游戏源代码揭秘和下载后续---移植到android真机上

flappy bird游戏源代码揭秘和下载后续---移植到html5网页浏览器

flappy bird游戏源代码揭秘和下载后续---日进5万美元的秘诀AdMob广告 

flappy bird游戏源代码揭秘和下载后续---移植到苹果ios上 (未写


笔者语:

想了解更多请进入官方博客,最新博客和代码在官方博客首发;请持续关注,还有更多cocos2dx editor游戏源码即将放出;

联系笔者:zuowen@makeapp.co(邮箱)qq群:232361142


后言:

为了鼓励更多手游爱好者加入cocos2d-x editor阵营,也为了读者坚定对该工具的信心,笔者基于以上的flappy bird代码和新的图片资源,往google play和中国应用市场发布了一个相似的游戏----腾飞的小鸟(fly bird)。该游戏还加入了广告模块,可以获得些许的广告费。也希望读者通过cocos2d-x editor可以在市场上发布更多的好游戏;

google play地址:https://play.google.com/store/apps/details?id=com.makeapp.game.flybird (小秘密:如果应用.apk后缀改为.rar,你会获得意想不到的东西

豌豆荚市场地址:http://www.wandoujia.com/apps/com.makeapp.game.flybird

机锋市场地址:    http://apk.gfan.com/Product/App741996.html

html5在线演示:http://www.makeapp.co/flybird/ (微软ie浏览器存在兼容性问题,请选择其他浏览器;公司内网,小卡,见谅)




相关文章推荐

用Unity开发Flappy Bird

之前上过unity的选修课,学了点java。因为过一阵开发VR还是要unity基础的,于是~ 上网找了教程,找了素材。Siki的教程。 现总结下(我是菜鸟,错误的地方望大神指正) 1、着色器 ...

CocosEditor For JS (Cocos2d-JS) 教程聚合和代码下载

——————————————游戏基础教程篇—————————————已完成————————— 一 cocos2d-x editor工具下载和基础教程JS篇: 一 手游开发神器 cocos2...

做游戏,学编程(C语言) 7 学习EasyX图形交互功能----flappy bird源代码

经过之前的学习,我们基本掌握了开发小游戏所需要的语法知识和搭建方法,但是基础C语言的可视化与交互功能实在是太弱了 。 <img src="https://pic3.zhimg...
  • quhaoye
  • quhaoye
  • 2017年04月30日 16:31
  • 619

flappy bird游戏源代码揭秘

原文地址:http://blog.csdn.net/touchsnow/article/details/19071961 背景:   最近火爆全球的游戏flappy bird让...

奇葩版Flappy Bird游戏源代码

  • 2014年11月30日 18:09
  • 8KB
  • 下载

LibGDX教程——重建Flappy Bird——(5) 添加Box2D物理仿真和游戏逻辑

在本章我们将为Flappy Bird添加BOX2D物理仿真,BOX2D物理仿真可以模拟现实世界物体的属性,如重力、速度、摩擦等等。在BOX2D中存在三种物理对象,分别是StaticBody、Kinem...
  • artzok
  • artzok
  • 2016年01月22日 20:06
  • 675

怎样使用Unity3D开发Flappy Bird游戏

怎样使用Unity3D开发Flappy Bird游戏 这是一个教你怎样使用Unity3D制作Tappy Plane(Flappy Bird克隆版)的教程。如果你是有一些C#编程经验的Unity ...
  • foupry
  • foupry
  • 2014年09月05日 19:58
  • 1283

教你用python写游戏之flappy bird(2)

二、开始   上一篇中,我们已经分析过了2个核心,bird和pipe。这一单元,我要讲诉的就是bird。   首先呢,我们需要创建一个对象,这个对象取名为Bird。   Bird具有以下属性:   1...

Flappy bird 小游戏的实现

//3.0初速度需要60秒减少至0 const float MaxTime = 50; //加速度,方向向下 const float VG = 0.05; //初速度 const float MaxV...
  • w_sx_
  • w_sx_
  • 2014年08月25日 22:57
  • 509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:flappy bird游戏源代码揭秘和下载后续---添加广告sdk和与android交互
举报原因:
原因补充:

(最多只允许输入30个字)