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