聶 茹,李海恩
(華南理工大學廣州學院電子信息工程學院,510800)
Android是Google在2007年11月5日公布的手機系統(tǒng)平臺,早期由 Google開發(fā),后由(Open Handset Alliance)開發(fā)。2012 年7 月數(shù)據(jù)顯示,Android 占據(jù)全球智能手機操作系統(tǒng)市場59%的份額,中國市場為76.7%。Android是一種以Linux為基礎的開放源代碼操作系統(tǒng),任何人對Android感興趣的人都可以開發(fā)基于Android平臺的應用程序并發(fā)布,Android 是一種全新的開源手機操作系統(tǒng),具有強大的應用層API 和豐富的傳感器功能,其開放的平臺有利于開發(fā)者開發(fā)出各類應用軟件,并且無縫地結合Google 優(yōu)秀的服務。手機游戲由于具有隨時、隨地、隨身的特性開始在游戲市場占據(jù)越來越大的市場份額,本手機游戲是基于Android 系統(tǒng)進行開發(fā),因此,具有更廣泛的使用性。
本游戲主要包括以下三個模塊:界面模塊、運動控制模塊和獎勵物品模塊,各模塊及子模塊如圖1所示。
本游戲中,控制調度功能主要由FootballActivity類來實現(xiàn),F(xiàn)ootballActivity繼承自Activity 類,本游戲中Activity起到了控制器的作用,除了在不同的界面之間切換視圖,Activity還負責處理玩家鍵盤的點擊事件和修改鍵盤狀態(tài)等事件。
圖1 系統(tǒng)總體架構Fig.1 System overall architecture
游戲歡迎界面模塊包括WelcomeView、WelcomeThread、WelcomeDrawThread及CutstomGallery。下面將對這些模塊的功能作介紹。
2.2.1 CutstomGallery類
Andriod中的Gallery控件可以實現(xiàn)圖片的水平滾動顯示,本設計中的CutstomGallery即是仿照Gallery控件的實現(xiàn)的,可以作為玩家開始游戲前的俱樂部的選擇器。
2.2.2 WelcomeView類
WelcomeView類繼承于SurfaceView,其主要功能是負責播放歡迎動畫和顯示菜單。
2.2.3 歡迎界面模塊實現(xiàn)
游戲運行后會播放一段歡迎動畫,然后會顯示游戲的菜單,如圖2所示。在菜單最上方是一個俱樂部標志選擇器;中間為游戲中前、中、后場的球員站位分布調節(jié)面板以及聲音開關;菜單最下方是退出和開始按鈕。
圖2 游戲的菜單界面Fig.2 Game menu interface
圖3 游戲“進球啦”主界面 Fig.4 Gam“eGoal”main interface
2.3.1 LoadingView、LoadingDrawThread類
該界面在足球游戲表示層中是比較簡單的,主要涉及到的類有LoadingView和LoadingDrawThread,LoadingView用于在不同的界面之間切換的時候顯示進度,LoadingDrawThread則用于刷新LoadingView顯示的內容。僅僅開發(fā)是不夠的,必須可以修改LoadingView中繪制內容(如進度值)的方法或線程,否則LoadingView是靜止不動的。因此,需要通過開發(fā)和完善中的initSound和updateProgressView方法來實現(xiàn)與LoadingView的通信。
2.4.1 GameView和DrawThread類
在游戲的主界面中主要涉及到的類有GameView和DrawThread,GameView負責顯示游戲畫面,DrawThread用于刷新GameView里的內容。GameView類是游戲中比較重要的一個類,所有游戲中可以繪制的內容都在GameView對象中留有引用。
2.4.2 游戲主界面的實現(xiàn)
在模擬器中運行游戲,經過WelcomeView的菜單選擇和LoadingView的加載后即可進入GameView,如圖3所示。
運動控制模塊是游戲后臺用于控制足球和玩家運動的模塊,其中涉及到的類有Ball、PlayerMoveThread、AI Thread和Player。
2.5.1 玩家球員的運動控制
玩家球員的控制是通過按下鍵盤上的方向鍵來實現(xiàn)的,在中可以通過重寫回調方法來處理按下鍵盤的事件。為了能夠操縱球員移動的頻率,在重寫的鍵盤事件回調方法中不進行球員位置的移動,而是將鍵盤的狀態(tài)記錄在成員變量keyState中。
2.5.2 AI球員的運動控制
AI球員的運動控制是通過一個簡單的算法來實現(xiàn),該算法可以描述如下:每個固定的時間,讀取足球的運動方向,如果足球的運動方向偏左,則將AI球員的運動方向設置為向左,如果偏右則設置運動方向向右。實現(xiàn)AI運動邏輯的是AIThread和PlayerMoveThread。
手機游戲程序與普通PC機上的游戲程序基本的設計思想和基本的編程技術都是相同的,只是由于手機中系統(tǒng)資源的稀缺,設計時必須要仔細考慮系統(tǒng)資源的承受能力,一個重要的原則就是要求游戲的設計盡量縮減對系統(tǒng)資源的使用。本文敘述了游戲的總體功能架構,詳細介紹了各個功能模塊的具體實現(xiàn)。重點介紹游戲中用到的Android關鍵技術,如通過Activity類實現(xiàn)控制調度模塊的對各個界面的切換管理;在多線程方面,Android提供了非常好的支持。在游戲中廣范應用多線程機制,使得多個任務并發(fā)處理,提高了游戲的效率,給玩家提供較好的用戶體驗。
[1]奚洋,郭健.基于Android的連連看游戲的算法研究[J].無線互聯(lián)科技,2012,(9):122
[2]耿東久,索岳,陳渝.基于Android 手機的遠程訪問和控制系統(tǒng) [J].計算機應用,2011,(2):559-561
[3]郭東恩,吳剛.基于Android平臺的數(shù)獨游戲設計與實現(xiàn)[J].計算機與數(shù)字工程,2012,(3):46-48
[4]鄧珍榮,張敬偉.基于J2ME手機游戲設計及實現(xiàn)[J].計算機與現(xiàn)代化,2009,(9):122-124
[5]林立忠,吳愛燕.基于J2ME的嵌入式手機游戲的設計與開發(fā) [J].煤炭技術,2010,29(2):198-200
[6]王賀,劉知青.基于Android的圍棋游戲開發(fā)[J].計算機光盤軟件與應用,2012,(22):224-228