一、由來
前段時間李san推薦瞭一個iphone上的五聯方小遊戲,覺得挺有意思。準備也下一個玩玩。可是回去一搜android上竟然沒有這個遊戲。決定自己搞一個,順便也學習學習android,據說以後會很火。現在也差不多搞完瞭,回頭總結一下。
二、概要設計
1、遊戲頁面的類圖
GameActivity
?
GameController ←→ GameModel ← ΓMapModel ← MapFactory ← Helper
? |
GameView |_ ItemModel ← ItemFactory
GameContext、Utils、DBUtils
隻是想做個自己玩玩,所以沒搞圖片,所有內容都通過*Model中的數組直接劃的。Item的旋轉也是通過數組的旋轉來做的。
2、畫面遷移
Menu ←→ MapList ←→ Game
?
Setting
3、開發難點
①、根據Model狀態,設別各個事件。由於沒用狀態機,所以判斷的條件比較亂
三、輔助工具
1、給定圖片的地圖取得
網上搞的各種地圖圖片,如果手工錄入的話太花時間,就將圖片劃成小方格,取各個方格中心點的顏色來識別。雖然有些不能正確識別,但是大多數都沒有問題。難識別的那就手工搞瞭。
2、給定地圖的求解
就是窮舉,做這種事情計算機還是比較在行的。就是算法的效率不高。所有的地圖算下來要10個小時。不過就跑一次也懶得改進瞭。
四、總結
1、大概熟悉瞭Android的架構。
?動畫那塊設計的比較好,用的特別方便。
?我是先搞得Game*那塊,自己畫的View,開始就搞不清楚為什麼要搞個Activity在那裡礙事。後來做其他畫面的時候發現有幾個理由:
①View可以抽出用Layout來做,這樣就必須找個地方寫事件的控制代碼
②當有多頁內容是需要一個地方共同管理
③需要一個共通的窗口也其他Activity聯系
2、瞭解一下Google market的發佈流程
3、開發的過程中沒有寫測試代碼,到後面有些代碼就不敢隨便重構瞭
4、之前的沒做什麼設計,大概考慮瞭一下就直接開始搞瞭,很多東西決定的比較倉促,後面也懶得改瞭。如MapModel中用瞭byte沒用int,Controller中沒用狀態機等等
5、全局資源的初期化和釋放沒有好好規劃
?應該加一個共同的Activity的父類,方便管理
?全局資源應該在程序開始統一初始化,這次搞得有點亂瞭