前言css
你們好!本系列博文記錄了炸彈人遊戲迭代開發的過程。在開發的過程當中,代碼會不斷重構,領域模型會不斷演變,高層劃分也會不斷變化。html
博文重點在於記錄面向對象思想運用、重構、迭代開發的過程,對於遊戲的實現細節和原理不會深刻討論。html5
若是您對RPG遊戲的基本概念不熟悉,我推薦您能夠先看看HTML5研究小組第二期技術講座《手把手製做HTML5遊戲》,它講解了Html5超級瑪麗遊戲開發的過程,提出了一些基本概念(如精靈、主循環等)。另外您能夠學習它的代碼HTML5超級瑪麗小遊戲源代碼,您能夠看到它是如何一步一步實現遊戲的。git
但願能與你們一塊兒分享遊戲開發的過程和樂趣,爲你們運用oo思想和實踐迭代開發提供力所能及的幫助。github
面向對象、測試驅動開發、重構、迭代、領域模型、炸彈人遊戲算法
系列博文目錄chrome
最終成果編程
下面是完成整個遊戲開發後的成果,你們能夠先預覽一下。canvas
演示地址設計模式
遊戲中包含了包含了多個畫布,其中地圖畫布、炸彈畫布、火焰畫布分別對應地圖層、炸彈層、火焰層,玩家畫布和敵人畫布對應人物層。下面是各個層的層疊順序,地圖層顯示在最下面,人物層顯示在最上面:
具體概念請見第2篇博文的「分層渲染」。
前期準備
如今,就讓咱們一塊兒踏上游戲開發的旅程。首先來看看在炸彈人遊戲開發中須要的知識和參考的資源。
初步需求分析
下面來進行初步的需求分析。首先進行高層的需求分析;而後根據分析結果,輸出用例、功能需求、非功能需求和約束條件。
如敵人使用A*算法尋路。
如顯示地圖、人物,實現人物移動動畫。
玩家經過操做鍵盤來控制炸彈人的行爲,所以遊戲須要監聽判斷鍵盤事件。
炸彈人可以放置炸彈,炸彈可以爆炸並炸死敵人和炸彈人。
系統、玩家
炸彈人能夠放炸彈。該角色由玩家控制。
敵人會追蹤炸彈人。該角色由系統控制。
玩家進入遊戲後,預先加載遊戲使用的圖片到內存中。
地圖大小爲20 * 20。
地圖由牆和空地組成。
牆能夠被炸開。
炸彈人、敵人不能穿過牆、炸彈。
炸彈人、敵人不能走出地圖邊界。
在地圖上顯示炸彈人和敵人。
炸彈人和敵人能夠在地圖上移動,並以動畫顯示。
使用A*算法尋找從敵人所在位置到炸彈人所在位置的路徑,並按照路徑移動。
若是遇到炸彈人,則遊戲結束;若是走到終點時沒有遇到炸彈人,則再次尋找路徑,而後按照路徑移動。
炸彈人移動時也能放炸彈
不能在一個方格疊加多個炸彈
炸彈能夠爆炸,顯示火焰
玩家、敵人不能穿過炸彈
炸彈能夠炸掉牆
炸彈能夠炸死玩家、敵人
可放置多個炸彈(3個),炸彈爆炸時會引爆在火力範圍內的炸彈
玩家能夠經過W、A、S、D鍵控制炸彈人的移動方向,一共有上下左右四個方向。
玩家可使用空格鍵控制炸彈人放置炸彈
經過記錄日誌、SVN提交日誌、測試文檔以及註釋和相關的總結文檔,開發人員能夠理解遊戲的架構設計(參照總結文檔、代碼)及實現(參照日誌、測試文檔、代碼)。
如須要增長一個敵人時,只須要增長相應代碼便可;須要增長一類敵人,只須要增長一個敵人子類及相應的客戶端代碼便可。不用修改已有的代碼,符合開閉原則。
即在遊戲中提煉出具備通用性的模塊,供之後複用。
採用TDD開發,保證低耦合高內聚,加強可測試性。
無,由於開發炸彈人遊戲僅爲了我的學習,所以對性能等運行期質量沒有要求。
採用迭代開發的方法,逐步細化。
本文參考資料
《軟件架構設計》