999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JAVA的安卓小游戲小行星帶的設計

2019-07-20 13:24:35金玉寶
電子技術與軟件工程 2019年10期

金玉寶

摘要:本文設計了一個簡單的這種游戲,采用的語言是JAVA,在Android平臺上運行,使用Eclipse制作。

[關鍵詞]JAVA Android Eclipse 手機游戲線性布局

1背景

最近幾年以來,Android一直比較熱門,雖然并不是手機系統里最優秀的,但卻是大多數手機廠商都在用的,盡管近幾年小程序正在興起,但手機應用的開發仍有很強的活力。隨著Android的不斷更新,其性能也在不斷變好,在這里做些游戲還是很有價值的。

2游戲結構

(1)要有進入游戲的界面,可以選擇各個模式。

(2)有專門的游戲界面,可以控制左右。

(3)游戲結束后要能顯示分數。

3設計目標

(1)在布局文件main.xml中做好主界面,

主界面提供冒險模式和時間模式兩個模式的選擇,還有提供其他一些諸如音樂,歷史分數顯示的功能。如圖1所示。

(2)分別用兩個布局文件gamew.xml和gamet.xml表示無盡模式和時間模式兩個模式的游戲界面,因為兩個界面雖然相像但是計分方式不一樣,而用算法實現有些麻煩,所以索性建立兩個布局文件。

(3)設計計算游戲結束的算法,在“飛行器”轉到“小行星”后會提示游戲結束,這時要根據情況彈出gameoverw.xml或gameovert.xml來顯示本次得分和歷史得分。

(4)所有布局中設計的按鈕,圖片框等都要寫好相應的程序讓它能起到相應的功能,例如點擊“無盡模式”就能打開無盡模式的游戲界面。

(5)在所有布局界面中,右上角都提供了音樂的開關,APP把當前音樂的狀態(“開啟”還是“關閉”)寫在SharedPreferences中,當APP每次啟動時會讀取SharedPreferences中的數據,初始化音樂按鈕的狀態。

4游戲的設計原理及實現

游戲的界面主要通過布局文件來制作,安卓開發中布局文件和程序代碼同樣重要,合理運用布局文件可以省去很多代碼,布局文件存放在res/layout文件夾中。圖片文件,包括按鈕圖片,資源圖片,還有聲音,都存放在res/drawable-hdpi文件夾中,程序代碼作為app的主要部分存放在src/com.example.AsteriodBelt文件夾中。

按鈕要具備跳轉功能,點擊“無盡模式“或”時間模式“任意一個按鈕都能跳轉到相應的界面,需要首先在布局文件中交代按鈕的位置,然后在程序代碼中寫跳轉的代碼,這也是安卓應用的巧妙之處,通過合理使用布局文件是APP能兼容很多信號的屏幕,因為手機不像電腦,手機屏幕尺寸很多,而應用要是不能根據屏幕尺寸適當改變,在手機上用起來就很不方便,這與電腦不同,電腦屏幕足夠大。具體添加按鈕和添加程序的方法則較簡單,這里簡單交代一下:

采用線性設計UI:線性布局是安卓開發中最常用的一種布局,習慣安卓開發的人應該會很習慣使用,但是初學時總是感覺沒有絕對布局順手,但是線性布局的嵌套實際比絕對布局,表格布局等都靈活的多。

布局文件中的按鈕添加方法:

android:layoutwidth="0dp"

android:layout_height="match_

parent”

android:orientation="vertical"

android:layout_weight="30">

android:id="@+id/wjms"

android:layoutwidth”match_parent"

android:layoutheight=“matchparent"

android:background=“@drawable/wj0*/>

按鈕添加在線性布局LinearLayout中而不是直接寫在布局文件中,這也是安卓應用的一般作法,安卓應用有線性布局,絕對布局,表格布局等很多布局,但最常用的還是線性布局,很多資料上也就給出了線性布局的用法,因為這種布局有很大的靈活性,可以根據需要在對應的位置添加合適的尺寸的控件,在添加控件時布局則相當于容器,這里不再贅述。

程序代碼中的對應部分:

finalButtonwjms=(Button)findViewById(R.id.wjms);

wjms.setOnClickListener(newOnClickListener(){

publicvoidonClick(Viewv){//無盡模式按下

Intentintent=newIntentO;

intent.setClass(Main.this,Gamew.class);

startActivity(intent);//開始跳轉}}};

首先聲明這個按鈕,聲明的名稱可以和布局里的名稱不一樣,但是在findViewById括號里必須和布局中生命的名字一樣,當然這里我保持了前后的名稱,所有的名稱都是wjms,其他幾個按鈕也類似,必須先聲明才能使用,在下面部分的代碼注冊一個內部監聽器處理按鈕按下的事件一即跳轉到“Gamew“Activity中,其它幾個按鈕也采用這種方式,只是跳轉的窗口不同這里不再贅述。

在具體的游戲界面中,首先要生成若干的小行星,小行星的位置隨機生成,速度根據具體的小行星設置具體的速度,使速度很大或很小的小行星都很少,主要小行星的速度都在一個合理的區間里,這樣游戲才更有意義一點。

enemy0.setY(enemy0.getY0+2*height/720);

enemy0.getLocationInWindow(coordinate2);

if(coordinate2[1]>height)

{enemy0.setY(-(int)(0+Math.random()*(height-0+)));enemy0.setX((int)(0+Math.random()*(width-enemy0.getWidth0-0+1));}

思路如此,因為要保證生成的小行星在屏幕內而不是屏幕外,所以我考慮了一個比較完備的算法如上,在生成小行星后通過一個循環控制小行星按一定速度下落,其實下落速度根據不同的手機具體的數值也是不一樣的,我一開始做的時候把數字定的很死,但是這就造成不同的同學在測試游戲的時候,小行星下落速度不一樣,有的人很快,有的人很慢,因為不同的手機分辨率,像素密度不同,所以后來我都改成了在一定的時間里下落按比例計算的屏幕距離,所以最后才定下了這個算法。

最后得要有一個判斷游戲是否結束的算法,需要根據飛船和小行星的位置,算一下他們是否相撞,這個算法我從網上搜出來的,因為自己想了不少時間也沒想好:

if(enemy0.getX()+enemy0.

getWidth()*2/5

getWidth()*2/5

.getY(+enemy0.getHeight(

getY(+cs.getHeightO

{}elsegameover();

看起來有點長,但是上面一大部分都只占一行,在Eclipse中看起來還是很清楚的,通過計算“飛船“和”小行星“四個角的相對位置,判斷有沒有相撞。

5結語

本文設計了一個簡單的射擊類游戲,界面適應安卓手機的不同分辨率,作為很多程序員寫游戲時喜歡用的題材,在手機上實現可以讓人學到很多東西,在手機上玩游戲會比電腦上方便很多,更有潛力。

參考文獻

[1]Jvaa語言程序設計(第三版)[M].中國鐵,道出版社,2013.

[2]Android應用開發入門經典[M].人民郵電出版社,2014.

[3]Android移動開發教程(項目式)[M].人民郵電出版社,2013.

主站蜘蛛池模板: 成年免费在线观看| 欧美日韩另类国产| 毛片免费在线视频| 国产免费一级精品视频| 99re在线视频观看| 中美日韩在线网免费毛片视频| 尤物国产在线| 性视频久久| 亚洲中文字幕23页在线| 亚洲日本中文综合在线| 国产成人精品亚洲77美色| 久久成人18免费| 国产SUV精品一区二区| 国产精品亚洲专区一区| 国产一在线| 国产在线一区视频| 日本精品视频一区二区| 久久综合色天堂av| 18禁高潮出水呻吟娇喘蜜芽| www.91中文字幕| 国产青榴视频| 国产高清免费午夜在线视频| 五月天久久综合| 亚洲精品老司机| 狠狠做深爱婷婷综合一区| 毛片一级在线| 97国内精品久久久久不卡| 国产亚洲美日韩AV中文字幕无码成人| 亚洲一区二区精品无码久久久| 国产免费黄| 国产尤物在线播放| 99re精彩视频| 亚洲免费人成影院| 在线观看无码av五月花| 亚洲一区二区日韩欧美gif| 久久免费精品琪琪| 免费看av在线网站网址| 伊人久综合| 久久亚洲日本不卡一区二区| 亚洲精品无码高潮喷水A| 99re热精品视频国产免费| 97国产一区二区精品久久呦| 久久青青草原亚洲av无码| 亚洲天堂久久| 日韩中文无码av超清| 日本三区视频| 免费在线成人网| 亚洲国模精品一区| 一级毛片高清| 一级香蕉视频在线观看| 99热这里只有精品国产99| 毛片久久久| 2020国产精品视频| 999福利激情视频| 成人精品午夜福利在线播放| 国产精品私拍在线爆乳| 国产精品福利一区二区久久| 中国国产一级毛片| jizz在线免费播放| 天堂网亚洲系列亚洲系列| 婷婷伊人五月| 成人福利在线视频免费观看| 人妻夜夜爽天天爽| 四虎亚洲国产成人久久精品| 国产三级毛片| 在线a视频免费观看| 日韩无码视频播放| 四虎亚洲精品| 免费一级大毛片a一观看不卡| 亚洲第一视频网| 国产簧片免费在线播放| 亚洲欧美一区二区三区蜜芽| 欧美亚洲国产一区| 青青热久麻豆精品视频在线观看| 成人国产精品网站在线看 | 午夜小视频在线| 国产在线观看第二页| 国产三级视频网站| 天堂亚洲网| 国产欧美日韩18| 国产91线观看| 最新国产午夜精品视频成人|