Fruit Ninja(水果忍者)遊戲源代碼下載、分析(下)---可運行Android,Ios,Window,Mac,Html5平臺

背景:

  這一篇是結尾篇,主要分析炸彈檢測,遊戲結束和保存最高分;

ps:

1 CocosEditor已發佈新版本,現在提供6個實戰demo學習,包括flappy ,popstar ,fruitninja,moonwarroris,fruitattack,testjavascript;

2 代碼是基於javascript語言,cocos2d-x遊戲引擎,CocosEditor手遊開發工具完成的;

3 運行demo需要配置好CocosEditor,暫不支持其他工具。demo是跨平臺的,可移植運行android,ios,html5網頁等。



源代碼下載:

請到代碼集中營下載(水果忍者):http://blog.makeapp.co/?p=319



效果圖:

SouthEast




代碼分析:


1 進入主場景從本地數據庫中獲取最高分,並顯示最高分文字this.bestScoreLabel;



[javascript]view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. //bestScore

  2. this.bestScore = sys.localStorage.getItem("bestScore");  

  3. if (this.bestScore != null && this.bestScore != undefined) {  

  4. this.bestScore = Number(this.bestScore);  

  5.    }  

  6. else {  

  7. this.bestScore = 0;  

  8.    }  

  9.    cc.log("bestScore==" + this.bestScore);  

  10. this.bestScoreLabel.setString(FRUIT_STRINGS.bestScore + this.bestScore);  

  11. this.overLayer.setVisible(false);  



2  在觸摸移動的過程中,會切到水果也會切刀炸彈,如果是炸彈,遊戲直接結束 ;

#我們已經建立過水果數組,炸彈的編號num是5,所以很簡單,只要判斷水果的編號就可以輕易的確定炸彈;

#如果是炸彈,遊戲狀態over,播放音效boom;

#創建炸彈光芒light精靈;

#播放一個序列動畫,放大選擇 然後清除,最後回調到結束函數this.gameOver();


[javascript]view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. //if bomb

  2. if (fruit.num == 5) {  

  3. this.gameStatus = OVER;  

  4.                   cc.AudioEngine.getInstance().playEffect(FRUIT_SOUNDS.boom, false);  

  5. var light = cc.MySprite.create(this.rootNode, FRUIT_DATA[5].cutImage, loc, 1100);  

  6.                   light.runAction(cc.Sequence.create(  

  7.                           cc.Spawn.create(cc.ScaleTo.create(2, 10), cc.RotateBy.create(1, 360)),  

  8.                           cc.CleanUp.create(light),  

  9.                           cc.CallFunc.create(function ()  

  10.                           {  

  11. this.gameOver();  

  12.                           }, this)  

  13.                   ));  

  14. return;  

  15.               }  



3 遊戲結束有兩種情況,一種是時間到,另一種是切到炸彈;

#遊戲結束後,顯示遊戲層overLayer;

#提示你得到的分數gameScoreTip;

#如果本次玩的最高分大於歷史最佳分數,本地數據庫存儲當前分數

#延時6s回到開始界面;


[javascript]view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. MainLayer.prototype.gameOver = function ()  

  2. {  

  3.    cc.AudioEngine.getInstance().playEffect(FRUIT_SOUNDS.over, false);  

  4. this.overLayer.setZOrder(1000);  

  5. this.overLayer.setVisible(true);  

  6. var gameScoreTip = FRUIT_STRINGS.youGet + this.totalScore + FRUIT_STRINGS.score;  

  7.    cc.log("this.totalScore=" + this.totalScore);  

  8.    cc.log("this.bestScore=" + this.bestScore);  

  9. if (this.totalScore > this.bestScore) {  

  10.        cc.log("this.bestScore=" + this.bestScore);  

  11.        sys.localStorage.setItem("bestScore", this.totalScore + "");  

  12.        gameScoreTip = gameScoreTip + FRUIT_STRINGS.record;  

  13.    }  

  14. this.overScoreLabel.setString(gameScoreTip);  

  15. this.overLayer.scheduleOnce(function ()  

  16.    {  

  17.        cc.AudioEngine.getInstance().stopAllEffects();  

  18.        cc.BuilderReader.runScene("", "StartLayer");  

  19.    }, 6);  

  20. };  


水果忍者系列結束


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章