flappy pig小遊戲源碼分析(2)——解剖option

來源:互聯網
上載者:User

標籤:

今天繼續分析flappy bird的源碼。重溫一下源碼的目錄結構。

在本系列第一篇中我們分析了game.js檔案,也就是整個程式的架構。這一篇我們來看看option.js檔案,這個檔案的內容很簡單,主要是配置一些遊戲中各類元素的參數。

我們還是按照慣例先上原始碼:

var flappy = (function (self) {    ‘use strict‘;    //設定    self.option = {        //重力加速度,螢幕像素和實際物理上的米有差別,所以存在換算        g: 400,        //跳躍的初速度,控制豬的彈跳力        v0: 400,        //柱子移動速度        vp: 2.5,        //頻率,控制動畫幀數,預設20ms        frequency: 20,        //關卡數        levels: 100,        //開頭的空白距離        safeLift: 500,        //地板高度(和圖片有關)        floorHeight: 64,        //豬的寬度        pigWidth: 33,        //豬的高度        pigHeight: 30,        //豬當前高度        pigY: 300,        //豬距離左邊的距離,        pigLeft: 80,        //柱子Html        pillarHtml: ‘<div class="top"></div><div class="bottom"></div>‘,        //柱子寬度        pillarWidth: 45,        //柱子上下間隔高度        pillarGapY: 108,        //柱子左右間隔寬度        pillarGapX: 250,        //上柱子的基礎定位值(就是top值,和css寫法有關)        pillarTop: -550,        //下柱子的基礎定位值        pillarBottom: -500    };    return self;//這個執行完之後flappy就是一個含有option屬性的對象了})(flappy || {});

關於其中var flappy = (function(self){

//其他細節

})(flappy || {})的用法如果還是不太理解,可以再去看看本系列的第一篇。

看完這個源碼我相信絕大多數同學都沒有一點壓力,唯一可能產生疑問的就是,為什麼要這麼做呢?我們為什麼要單獨的用一個檔案來專門存放這些配置參數呢?

我們經常聽到關於程式設計的一些專業術語如:低耦合、高內聚、可維護性、模組化等等,先拋開這些模糊的概念不談,我們來說說現實生活中隨處可見的一個概念——單一職責原則。

大掃除的時候,掃地的同學只負責掃地、擦玻璃的同學只負責擦玻璃、擦黑板的同學只負責擦黑板,大家各司其職互不牽涉。檢查的時候發現地沒有掃乾淨,那就肯定是掃地同學的責任,相應的玻璃沒乾淨就找擦玻璃的同學來負責。一旦掃地的同學不僅負責掃地,同時還順便幫忙擦擦玻璃的話,檢查時如果發現玻璃沒擦乾淨,這個時候想要知道誰負責的話就很很麻煩了,起碼要把兩個人叫來問個清楚,說不定他倆再互相推脫一下。在程式設計中我們把各司其職個安其分稱之為單一職責原則,一旦出了任何問題,我們能很快的找到哪個模組該對問題負責。

瞭解了什麼是單一職責原則,我們再來看看這個option.js檔案,我們很容易的就會知道,這個option.js檔案的職責就是配置遊戲參數供其它模組使用,一旦需要調整參數,比如我要把豬變大一點,把柱子之間的距離加大一點同時把地板額高度設高一點,我只需要更改option.js檔案就可以了,改完後他會立刻反應到每個引入他的檔案中去。如果你把這些配置項分別寫在各自的模組中,那麼一旦需要調整,你可以想象你有多麼痛苦。

這一節的內容很簡單,但是需要讀者自己加深理解,形成程式設計的思想並加以運用。

flappy pig小遊戲源碼分析(2)——解剖option

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.