zoukankan      html  css  js  c++  java
  • flappy bird游戏源代码揭秘和下载后续---日进5万美元的秘诀AdMob广告

    前言:

         这一节,笔者将给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表示广告的位置;

     

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. var adsAdmob = plugin.PluginManager.getInstance().loadPlugin("AdsAdmob");  
    2.   cc.log("configDeveloperInfo AdsAdmob");  
    3.   if (adsAdmob) {  
    4.       cc.log("configDeveloperInfo");  
    5.       adsAdmob.configDeveloperInfo({"AdmobID""a152fcf037adb43"});  
    6.       adsAdmob.showAds(0, 0, 1);  
    7.   }  
    8.   else {  
    9.       cc.log("can't find AdsAdmob plugin");  
    10.   }  



     

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

     

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. public class Cocos2dMainActivity extends Cocos2dxActivity {  
    2.   
    3.     protected void onCreate(Bundle savedInstanceState) {  
    4.         super.onCreate(savedInstanceState);  
    5.   
    6.         PluginWrapper.init(this); // for plugins  
    7.         PluginWrapper.setGLSurfaceView(Cocos2dxGLSurfaceView.getInstance());  
    8.   
    9.   
    10.         Cocos2dxLocalStorage.context = this;  
    11.         /*String languageType = getResources().getConfiguration().locale.getCountry(); 
    12.         if (languageType.equals("CN")) { 
    13.             Cocos2dxLocalStorage.setItem("language", "CN"); 
    14.             System.out.println("language china"); 
    15.         } else { 
    16.             Cocos2dxLocalStorage.setItem("language", "US"); 
    17.             System.out.println("language english"); 
    18.         }*/  
    19.     }  
    20.   
    21.     public Cocos2dxGLSurfaceView onCreateView() {  
    22.         Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);  
    23.         // HelloAds should create stencil buffer  
    24.         glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);  
    25.   
    26.         return glSurfaceView;  
    27.     }  
    28.   
    29.     public boolean dispatchKeyEvent(KeyEvent event) {  
    30.         if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {  
    31.             onBackPressed();  
    32.             return true;  
    33.         }  
    34.         return super.dispatchKeyEvent(event);  
    35.     }  
    36.   
    37.   
    38.     public void onBackPressed() {  
    39.         AlertDialog.Builder builder = new AlertDialog.Builder(this)  
    40.                 .setTitle("")  
    41.                 .setMessage("quit the game?")  
    42.                 .setNegativeButton("Yes"new DialogInterface.OnClickListener() {  
    43.                     public void onClick(DialogInterface dialog, int which) {  
    44.                         System.exit(0);  
    45.                         finish();  
    46.                     }  
    47.                 }).setPositiveButton("No"new DialogInterface.OnClickListener() {  
    48.                     public void onClick(DialogInterface dialog, int which) {  
    49.   
    50.                     }  
    51.                 });  
    52.         AlertDialog dialog = builder.create();  
    53.         dialog.show();  
    54.     }  
    55.   
    56.     public void onClickShare(View view) {  
    57.         Intent intent = new Intent(Intent.ACTION_SEND);  
    58.         intent.setType("image/*");  
    59.         intent.putExtra(Intent.EXTRA_SUBJECT, "分享");  
    60.         intent.putExtra(Intent.EXTRA_TEXT, "终于可以了!!!");  
    61.         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    62.         startActivity(Intent.createChooser(intent, getTitle()));  
    63.     }  
    64.   
    65.   
    66.     static {  
    67. //        System.loadLibrary("game");  
    68.         System.loadLibrary("cocos2dx-game");  
    69.     }  
    70. }  

     

     


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

     

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. MainLayer.prototype.onGradeClicked = function () {  
    2.     sys.localStorage.setItem("share""xxx");  
    3. }  

     

     

     

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

     

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. public static void setItem(String key, String value) {  
    2.      try {  
    3.          String sql = "replace into " + TABLE_NAME + "(key,value)values(?,?)";  
    4.          mDatabase.execSQL(sql, new Object[]{key, value});  
    5.          if (key.equals("share")) {  
    6.              System.out.println("jump share");  
    7.              onClickShare(value);  
    8.          }  
    9.      } catch (Exception e) {  
    10.          e.printStackTrace();  
    11.      }  
    12.  }  
    13.   
    14.   
    15.  public static void onClickShare(String score) {  
    16.      String shareText = "welcome to use cocos2d-x editor!";  
    17.      Intent intent = new Intent(Intent.ACTION_SEND);  
    18.      intent.setType("text/plain");  
    19.      intent.putExtra(Intent.EXTRA_SUBJECT, "share");  
    20.      intent.putExtra(Intent.EXTRA_TEXT, shareText);  
    21.      context.startActivity(Intent.createChooser(intent, "share to"));  
    22.  }  



     

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

     

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. Button btn = (Button) findViewById(R.id.btn);  
    2.         btn.setOnClickListener(new View.OnClickListener() {  
    3.             @Override  
    4.             public void onClick(View v) {  
    5.                 startActivity(new Intent(AndroidMainActivity.this, Cocos2dMainActivity.class));  
    6.             }  
    7.         });  



     

    最后别忘记在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://apk.gfan.com/Product/App741996.html

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

  • 相关阅读:
    CSS 中 Font-Family 中英文对照表
    0号首页,移动应用快捷门户
    身边的大数据和我们的着手点
    php单例模式
    原生JS实现ajax与ajax的跨域请求
    two.js之实现动画效果
    H5中的拖放
    简说chart2.4的应用,以及Uncaught ReferenceError : require is not defined的解决
    JS中的作用域以及全局变量的问题
    JavaScript 框架------------AngularJS(下)
  • 原文地址:https://www.cnblogs.com/cooka/p/3588279.html
Copyright © 2011-2022 走看看