flappy bird遊戲原始碼揭秘和下載後續---日進5萬美元的秘訣AdMob廣告

來源:互聯網
上載者:User

前言:

     這一節,筆者將給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瀏覽器存在相容性問題,請選擇其他瀏覽器;公司內網,小卡,見諒)




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.