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

基于JAVA的安卓小游戲小行星帶的設(shè)計(jì)

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

金玉寶

摘要:本文設(shè)計(jì)了一個(gè)簡(jiǎn)單的這種游戲,采用的語(yǔ)言是JAVA,在Android平臺(tái)上運(yùn)行,使用Eclipse制作。

[關(guān)鍵詞]JAVA Android Eclipse 手機(jī)游戲線性布局

1背景

最近幾年以來(lái),Android一直比較熱門,雖然并不是手機(jī)系統(tǒng)里最優(yōu)秀的,但卻是大多數(shù)手機(jī)廠商都在用的,盡管近幾年小程序正在興起,但手機(jī)應(yīng)用的開發(fā)仍有很強(qiáng)的活力。隨著Android的不斷更新,其性能也在不斷變好,在這里做些游戲還是很有價(jià)值的。

2游戲結(jié)構(gòu)

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

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

(3)游戲結(jié)束后要能顯示分?jǐn)?shù)。

3設(shè)計(jì)目標(biāo)

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

主界面提供冒險(xiǎn)模式和時(shí)間模式兩個(gè)模式的選擇,還有提供其他一些諸如音樂,歷史分?jǐn)?shù)顯示的功能。如圖1所示。

(2)分別用兩個(gè)布局文件gamew.xml和gamet.xml表示無(wú)盡模式和時(shí)間模式兩個(gè)模式的游戲界面,因?yàn)閮蓚€(gè)界面雖然相像但是計(jì)分方式不一樣,而用算法實(shí)現(xiàn)有些麻煩,所以索性建立兩個(gè)布局文件。

(3)設(shè)計(jì)計(jì)算游戲結(jié)束的算法,在“飛行器”轉(zhuǎn)到“小行星”后會(huì)提示游戲結(jié)束,這時(shí)要根據(jù)情況彈出gameoverw.xml或gameovert.xml來(lái)顯示本次得分和歷史得分。

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

(5)在所有布局界面中,右上角都提供了音樂的開關(guān),APP把當(dāng)前音樂的狀態(tài)(“開啟”還是“關(guān)閉”)寫在SharedPreferences中,當(dāng)APP每次啟動(dòng)時(shí)會(huì)讀取SharedPreferences中的數(shù)據(jù),初始化音樂按鈕的狀態(tài)。

4游戲的設(shè)計(jì)原理及實(shí)現(xiàn)

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

按鈕要具備跳轉(zhuǎn)功能,點(diǎn)擊“無(wú)盡模式“或”時(shí)間模式“任意一個(gè)按鈕都能跳轉(zhuǎn)到相應(yīng)的界面,需要首先在布局文件中交代按鈕的位置,然后在程序代碼中寫跳轉(zhuǎn)的代碼,這也是安卓應(yīng)用的巧妙之處,通過(guò)合理使用布局文件是APP能兼容很多信號(hào)的屏幕,因?yàn)槭謾C(jī)不像電腦,手機(jī)屏幕尺寸很多,而應(yīng)用要是不能根據(jù)屏幕尺寸適當(dāng)改變,在手機(jī)上用起來(lái)就很不方便,這與電腦不同,電腦屏幕足夠大。具體添加按鈕和添加程序的方法則較簡(jiǎn)單,這里簡(jiǎn)單交代一下:

采用線性設(shè)計(jì)UI:線性布局是安卓開發(fā)中最常用的一種布局,習(xí)慣安卓開發(fā)的人應(yīng)該會(huì)很習(xí)慣使用,但是初學(xué)時(shí)總是感覺沒有絕對(duì)布局順手,但是線性布局的嵌套實(shí)際比絕對(duì)布局,表格布局等都靈活的多。

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

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中而不是直接寫在布局文件中,這也是安卓應(yīng)用的一般作法,安卓應(yīng)用有線性布局,絕對(duì)布局,表格布局等很多布局,但最常用的還是線性布局,很多資料上也就給出了線性布局的用法,因?yàn)檫@種布局有很大的靈活性,可以根據(jù)需要在對(duì)應(yīng)的位置添加合適的尺寸的控件,在添加控件時(shí)布局則相當(dāng)于容器,這里不再贅述。

程序代碼中的對(duì)應(yīng)部分:

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

wjms.setOnClickListener(newOnClickListener(){

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

Intentintent=newIntentO;

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

startActivity(intent);//開始跳轉(zhuǎn)}}};

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

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

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));}

思路如此,因?yàn)橐WC生成的小行星在屏幕內(nèi)而不是屏幕外,所以我考慮了一個(gè)比較完備的算法如上,在生成小行星后通過(guò)一個(gè)循環(huán)控制小行星按一定速度下落,其實(shí)下落速度根據(jù)不同的手機(jī)具體的數(shù)值也是不一樣的,我一開始做的時(shí)候把數(shù)字定的很死,但是這就造成不同的同學(xué)在測(cè)試游戲的時(shí)候,小行星下落速度不一樣,有的人很快,有的人很慢,因?yàn)椴煌氖謾C(jī)分辨率,像素密度不同,所以后來(lái)我都改成了在一定的時(shí)間里下落按比例計(jì)算的屏幕距離,所以最后才定下了這個(gè)算法。

最后得要有一個(gè)判斷游戲是否結(jié)束的算法,需要根據(jù)飛船和小行星的位置,算一下他們是否相撞,這個(gè)算法我從網(wǎng)上搜出來(lái)的,因?yàn)樽约合肓瞬簧贂r(shí)間也沒想好:

if(enemy0.getX()+enemy0.

getWidth()*2/5

getWidth()*2/5

.getY(+enemy0.getHeight(

getY(+cs.getHeightO

{}elsegameover();

看起來(lái)有點(diǎn)長(zhǎng),但是上面一大部分都只占一行,在Eclipse中看起來(lái)還是很清楚的,通過(guò)計(jì)算“飛船“和”小行星“四個(gè)角的相對(duì)位置,判斷有沒有相撞。

5結(jié)語(yǔ)

本文設(shè)計(jì)了一個(gè)簡(jiǎn)單的射擊類游戲,界面適應(yīng)安卓手機(jī)的不同分辨率,作為很多程序員寫游戲時(shí)喜歡用的題材,在手機(jī)上實(shí)現(xiàn)可以讓人學(xué)到很多東西,在手機(jī)上玩游戲會(huì)比電腦上方便很多,更有潛力。

參考文獻(xiàn)

[1]Jvaa語(yǔ)言程序設(shè)計(jì)(第三版)[M].中國(guó)鐵,道出版社,2013.

[2]Android應(yīng)用開發(fā)入門經(jīng)典[M].人民郵電出版社,2014.

[3]Android移動(dòng)開發(fā)教程(項(xiàng)目式)[M].人民郵電出版社,2013.

主站蜘蛛池模板: 99re精彩视频| 97se亚洲| 国产精品毛片一区| 中文字幕波多野不卡一区| 亚洲成肉网| 亚洲伊人天堂| 综合色天天| 亚洲精品卡2卡3卡4卡5卡区| 亚洲无码免费黄色网址| 欧美一区二区三区国产精品| 久久免费视频6| 全午夜免费一级毛片| 青青草一区二区免费精品| 99在线视频免费| a色毛片免费视频| 全部毛片免费看| 国产欧美在线观看精品一区污| 亚洲毛片在线看| 成人在线亚洲| 制服丝袜亚洲| 中日韩欧亚无码视频| 国产无码制服丝袜| 天天做天天爱天天爽综合区| 国产青榴视频| 欧美区一区| 亚洲久悠悠色悠在线播放| 亚洲AV无码乱码在线观看代蜜桃| 无码日韩人妻精品久久蜜桃| 国产精品香蕉| 亚洲国产精品成人久久综合影院| 欧美精品v欧洲精品| 国内精品自在欧美一区| Jizz国产色系免费| 在线国产三级| 久久国产精品电影| 国产精品亚洲五月天高清| 亚洲第一中文字幕| 亚洲乱伦视频| 精品色综合| 亚洲性网站| 91亚洲精选| 2022国产91精品久久久久久| 在线精品亚洲国产| 成年人国产网站| 国产浮力第一页永久地址| 一级毛片网| 日韩精品成人网页视频在线| a欧美在线| 99无码中文字幕视频| 国产91九色在线播放| 国产精品欧美激情| 午夜电影在线观看国产1区| 欧美日韩一区二区三区在线视频| 免费AV在线播放观看18禁强制| 国产在线视频导航| 国产后式a一视频| 亚洲日韩精品欧美中文字幕| 91视频99| 日本成人一区| 日韩 欧美 小说 综合网 另类| 日本在线亚洲| 99视频只有精品| 国产亚洲欧美日本一二三本道| 国产高清在线精品一区二区三区 | 真人高潮娇喘嗯啊在线观看| 中文字幕在线欧美| 欧美精品高清| 91青青在线视频| 日韩无码黄色| 最新亚洲人成无码网站欣赏网| 久久精品66| 亚洲无码免费黄色网址| 国产欧美日韩专区发布| 秋霞国产在线| 色AV色 综合网站| 呦女亚洲一区精品| 青草娱乐极品免费视频| 欧美日韩高清在线| 91亚洲免费视频| 亚洲国产精品一区二区第一页免| 中文国产成人精品久久| 国产网站一区二区三区|