【摘 要】本軟件使用Android Studio進行開發(fā),選擇Android的FrameLayout(幀布局)作為游戲主布局;使用自定義View來實現(xiàn)圖形的繪制,通過重寫父類的onDrow()方法來繪制以及invalidate()方法來實現(xiàn)刷新;通過Handler的postDalayed()方法來實現(xiàn)計時器,從而實現(xiàn)定時刷新游戲界面;通過onTouch()方法來實現(xiàn)屏幕點擊事件的監(jiān)聽,并在其中進行碰撞檢測,根據(jù)結(jié)果進行數(shù)據(jù)的存儲,通過ListView進行顯示。
【關(guān)鍵詞】Android;Intent;Handler;View
隨著移動網(wǎng)絡(luò)的全面覆蓋以及網(wǎng)速的提高,智能移動終端設(shè)備已成為人們生活中必不可少的一部分。Android是Google在2008年推出的開源智能手機操作系統(tǒng),憑借著其優(yōu)秀的人機交互和開放性,受廣大手機生產(chǎn)的重視。Android已改變了智能手機市場的格局。手機不再僅僅是通訊設(shè)備,更多的是娛樂、購物、社交等等。因此手機的應(yīng)用服務(wù)存在的很大的發(fā)展空間,游戲APP就是其中很大的一部分。
一、問題定義
本游戲擬實現(xiàn)功能:當玩家進入游戲之后,屏幕中間有一個旋轉(zhuǎn)的圓盤,玩者需要做的,就是將自己手中的“針”,全部插進旋轉(zhuǎn)的圓盤上其它針的縫隙中。相鄰的針是不能有接觸的,否者就顯示游戲失敗。從軟件工程的角度產(chǎn)生3個問題:針的旋轉(zhuǎn);針的插入;針的碰撞檢測。
二、總體設(shè)計
首先,通過自定義View來實現(xiàn)針的旋轉(zhuǎn),重寫父類的onDrow()方法來繪制以及invalidate()方法來實現(xiàn)刷新,產(chǎn)生旋轉(zhuǎn)的效果。共分為3個自定義View類:中心圓盤、圓盤上的針、剩余個數(shù)。
其次,將圓盤上的針作為一個類,通過直接操作這個類的實例來實現(xiàn)針的動態(tài)改變,然后將針的實例傳給相應(yīng)的自定義View類,從而實現(xiàn)針的動態(tài)插入。
最后是碰撞檢測,在屏幕點擊事件觸發(fā)時,將每次插入的針與針實例中已有的針進行比較,小于某個角度即判定為發(fā)生碰撞。
三、詳細設(shè)計
1.針的旋轉(zhuǎn)
圓盤上的針(自定義View類)獲取針類實例化對象內(nèi)的數(shù)據(jù)來實現(xiàn)針的繪制,針類對象有5個屬性,圓盤上的所有針數(shù)、每個針所對應(yīng)的角度、針所對應(yīng)的數(shù)字、關(guān)卡等級(用來初始化針)、初始針個數(shù)。通過操作針類對象中的角度來實現(xiàn)針的旋轉(zhuǎn),在這個角度的基礎(chǔ)上加一個旋轉(zhuǎn)角,使用三角函數(shù)來確定其具體的位置,改變旋轉(zhuǎn)角的同時對自定義View類進行重繪,從而實現(xiàn)旋轉(zhuǎn)。
由于Android不允許子線程直接更新UI的, 當一個程序第一次啟動時,Android會同時啟動一個對應(yīng)的主UI線程,也就是ActivityThread。主要負責處理與UI相關(guān)的事件,如用戶的按鍵點擊、用戶觸摸屏幕以及屏幕繪圖等。系統(tǒng)不會為每個組件單獨創(chuàng)建一個線程,在同一個進程里的UI組件都會在UI線程里實例化,系統(tǒng)對每一個組件的調(diào)用都從UI線程分發(fā)出去。這里使用Handler機制來處理子線程去更新UI控件。
2.碰撞檢測
碰撞檢測采用最簡單的遍歷,將每次插入的針與針實例中已有的針進行比較,小于10角度即判定為發(fā)生碰撞。
for(int b=0;b
ball.invalidate(small,i);//圓盤上針繪制
handler.removeCallbacks(runnable);//關(guān)閉計時器
return 1;}}
四、小結(jié)
在研究Android平臺的過程中,主要對Android的四大組件Activity、Service、BroadcatReceiver、CotetProvider進行解析,以及Intent和重要API的機制。在此基礎(chǔ)上,開發(fā)基于Android的見縫插針小游戲,由此更進一步了解Android智能手機操作系統(tǒng)。在開發(fā)過程中尤其注重Intent機制的學習。
參考文獻
[1]郭霖. 第一行代碼——Android[M]. 北京:人民郵電出版社,2014:40-109.
[2]李剛. 瘋狂 Android 講義[M]. 北京:電子工業(yè)出版社,2013:25-42.
[3]楊云君. Android 的設(shè)計與實現(xiàn)[M]. 北京:機械工業(yè)出版社,2013:45-49.