周燕彬
隨著智能手機的普及,各種各樣的手機app層出不窮,其中手機游戲也異常火爆。而目前我國智能手機用戶的系統大多以Android為主,所以本文設計實現了一款基于Android平臺的新的手機游戲--左右不分,并詳細闡述了游戲的功能結構、開發過程以及關鍵技術。
【關鍵詞】Android 手機游戲 左右不分
1 游戲開發背景
近年來,智能手機憑借其便于攜帶、溝通迅捷、功能多樣、私密性強等獨有優勢,已經成為普通民眾不可替代的隨身工具。其益智、趣味和休閑的特點迎合了消費者的娛樂需要。而如今,人們的學習工作壓力逐漸增大,生活節奏加快,大多數人沒有足夠的時間去休閑娛樂,放松自己。在這種背景下,開發一款簡潔而不簡單,有創意,既娛樂有趣,又可以鍛煉人們某種技能的手機游戲是很符合目前的潮流的。《左右不分》便是在這種情況下設計并開發出來的。
2 游戲功能和原型設計
2.1 總體功能結構
本游戲主要是靠手指的上下左右滑動來完成游戲的,由經典++模塊、道爾頓模塊、左右互搏模塊、更多以及幫助部分五大模塊組成,其中經典++模塊由經典模式、百米模式、無極限模式組成,左右互搏模塊由經典版、百米版、無極限版組成。游戲需要實現的主要功能有游戲開場動畫、道具制造、游戲操作、分數統計4個主要功能。
2.2 模塊設計及功能說明
經典++模塊:分為經典模式、百米模式和無極限模式。經典模式的主要功能是在一定的時間內依照屏幕上的指示統計完成正確滑動的次數。百米模式的主要功能是正確滑動固定的次數來計算所需要花費的時間。無極限模式的主要功能是不受時間的限制,一直玩到玩家出錯為止。
左右互搏模塊:本模塊為橫屏,也有三種模式:經典版、百米版和無極限版。功能和經典++模塊一樣,但是屏幕分為左右兩部分,點擊開始按鈕后,兩只手分別依據兩部分的指示進行滑動來完成游戲,可以很好地鍛煉自己的反應能力,也可以兩個人同時玩來進行比賽。
道爾頓模塊:圖片指示全部都是檢測色盲色弱的圖片,一共有20次滑動機會,到最后若是錯得太多,則會被當成色盲或者色弱,不過若是真的分辨不出來,那就有可能真的是色盲或者色弱了。
3 游戲關鍵技術
3.1 所用平臺介紹
本系統采用Android SDK和集成ADT的Eclipse 開發環境,運行調試環境以Android AVD(即Android虛擬設備)和真機共同完成,這里對軟件的安裝步驟不作過多贅述。游戲以MVC模式為基礎,將顯示部分和數據部分分離,這樣當更換視圖時可以不影響對方,更有利于程序維護。
3.2 關鍵技術介紹
3.2.1 動畫生成
在本游戲中,大量字體的旋轉采用了補間動畫來實現,補間動畫類位于 android.view.animation 類庫中,其中包含一些常用的動畫實現類,如AlphaAnimation:透明度漸變效果,TranslateAnimation:位移漸變,ScaleAnimation:縮放漸變,RotateAnimation:旋轉漸變,AnimationSet:組合漸變。另外一小部分動畫采用了逐幀動畫來實現,Drawable animation可以加載Drawable資源實現幀動畫。
3.2.2 游戲屏幕自適應
目前市場上有各種各樣的手機,而這些手機的分辨率也有所不同,如何在不同分辨率的手機上完美運行游戲,也是我們需要考慮并解決的問題。
在目前的Android版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三個drawable文件夾來存儲圖片資源,主要目的是為了支持多分辨率。
drawable-hdpi、drawable-mdpi、drawable-ldpi的區別:(1)drawable-hdpi里面存放高分辨率的圖片;(2)drawable-mdpi里面存放中等分辨率的圖片;(3)drawable-ldpi里面存放低分辨率的圖片。系統會根據機器的分辨率來分別到這幾個文件夾里面去找對應的圖片,在開發時為了兼容不同平臺不同屏幕,需要在各個文件夾根據需求來存放不同分辨率的圖片。
3.2.3 手勢探測器
在Android應用中,經常需要手勢滑動操作,比如上下滑動,或左右方向滑動,處理手勢滑動通常有兩種方法:一種是單獨實現setOnTouchListener監聽器,另一種是構建手勢探測器。本游戲使用的是第二種方法,即手勢探測器。Android目前擁有兩個不同的類用于手勢探測:
(1)GestureDetector類可以用于探測一般的單點觸控手勢;
(2)ScaleGestureDetector可以用來探測多點縮放操作手勢。
本文開發的游戲主要用的是第一種,通過GestureDetector類可以識別很多的手勢,主要是通過onTouchEvent(event)方法完成不同手勢的識別,這個類對外提供了兩個接口:OnGestureListener,OnDoubleListener,還有一個內部類SimpleOnGestureListener,它是GestureDetector提供給我們的一個更方便的響應不同手勢的類,這個類實現了上述兩個接口,通過GestureDetector的構造方法可以將SimpleOnGestureListener對象傳遞進去,這樣GestureDetector就能處理不同的手勢了。
3.2.4 自定義控件
本游戲中用到了自定義控件。開發自定義控件的步驟如下:
(1)了解View的工作原理;
(2)編寫繼承自View的子類;
(3)為自定義View類增加屬性;
(4)繪制控件;
(5)響應用戶消息;
(6)自定義回調函數。
Android系統的視圖結構的設計采用了組合模式,即View作為所有圖形的基類,Viewgroup對View繼承擴展為視圖容器類。基本操作由三個函數完成:measure()、layout()、draw(),其內部又分別包含了onMeasure()、onLayout()、onDraw()三個子方法。Measure操作主要用于計算視圖的大小,它會調用onMeasure函數實現自己的計算視圖大小的方式,并通過setMeasuredDimension(width,height)保存計算結果。Layout操作用于設置在屏幕中顯示的位置,該函數中的兩個方法setFrame(l,t,r,b)和onLayout()分別保存了子視圖在父視圖中的具體位置和為ViewGroup類型布局子視圖。Draw操作利用前兩步得到的參數,將視圖顯示在屏幕上,從而完成視圖繪制工作。
4 游戲測試及總結
游戲開發完成后,將apk包安裝在手機上進行測試。
本游戲本著簡潔的原則,在設計上有多種模式,通過對本游戲的安裝、卸載及運行中的各項測試,結果表明,本游戲能夠很好地在Android手機上流暢地運行,歡迎界面動畫,主界面動畫,各個模式的功能都基本實現,畫面清晰度高,運行流暢,手勢響應合理且迅速,UI設計合理,畫面簡潔而有自己的風格,基本上實現了預定的目標,為其他游戲的設計開發提供參考。
參考文獻
[1]李剛.瘋狂Android講義[M].北京:電子工業出版社,2013.
[2]陳咪,劉光燦,張竹嫻.基于Android操作系統的手機小游戲開發[J].信息通信,2012(04).
[3]郭東恩,吳剛.基于android平臺的數獨游戲設計與實現[J].計算機與數字工程,2012(03).
[4]曲蘊慧.Android系統下手機游戲的設計與開發[J].電子科技,2013(06).
[5]申健唯,吳麗.安卓手機游戲的快速開發[J]. 數字技術與應用,2014.
[6]秦成.基于Android平臺的手機游戲的設計與開發[D]. 云南大學,2015(12).
作者單位
南華大學計算機科學與技術學院 湖南省衡陽市 421001