




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、J2ME手機(jī)游戲開發(fā)技術(shù)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:益智類類游戲炸彈彈人實(shí)驗(yàn)?zāi)康?利用JJ2MEE有關(guān)知知識(shí),設(shè)設(shè)計(jì)一款款益智類類(PUUZ)炸炸彈人(Bommbmaan)游游戲程序序,是我我們能夠夠掌握J(rèn)JavaaME游游戲開發(fā)發(fā)的基本本技巧。實(shí)驗(yàn)環(huán)境 Winndowws 77操作系系統(tǒng),EEcliipsee,WTKK2.55.1,JJDK11.6實(shí)驗(yàn)內(nèi)容 利用自自己所學(xué)學(xué)的J22ME知知識(shí),進(jìn)進(jìn)行游戲戲開發(fā),該該游戲的的創(chuàng)意是是游戲主主角在一一個(gè)隨機(jī)機(jī)生存的的地圖中中放置炸炸彈,以以消滅地地圖中所所有的敵敵人為目目的。游游戲地圖圖被設(shè)計(jì)計(jì)成一個(gè)個(gè)多行多多列的棋棋盤,游游戲中的的主角和和敵人每每次都只
2、只能按照照棋盤中中相鄰的的棋盤格格進(jìn)行移移動(dòng),而而且在地地圖中還還存在不不同的障障礙物,用用來阻擋擋游戲主主角和敵敵人的移移動(dòng)。游游戲主角角可以在在沒有障障礙物的的地方防防止炸彈彈來引爆爆敵人或或障礙物物來獲得得去路。從從中有以以下是幾幾個(gè)元素素的詳細(xì)細(xì)功能:空白區(qū):是是游戲主主角和敵敵人可以以移動(dòng)的的位置及及放置炸炸彈的位位置。巖石:地圖圖中的障障礙物,用用來阻止止游戲主主角和敵敵人的且且不能被被炸彈摧摧毀。磚墻:也是是用來阻阻止的,不不過能被被炸彈摧摧毀變成成空白區(qū)區(qū)。敵人:是消消滅游戲戲主角的的一方,它它需要游游戲主角角用炸彈彈將其炸炸死,其其所處 的的地方也也會(huì)變?yōu)闉榭瞻讌^(qū)區(qū),敵人人在
3、空白白區(qū)來去去自如,一一旦碰到到游戲主主 角,游游戲主角角會(huì)被殺殺死。游戲主角:游戲中中由玩家家控制的的一方,在在空白區(qū)區(qū)移動(dòng),可可以放置置炸彈。實(shí)驗(yàn)步驟(代代碼分析析) 該游戲戲是一個(gè)個(gè)11*11的的棋盤,用用一個(gè)ccharr型的二二維數(shù)組組來表示示該棋盤盤,二維維數(shù)組中中的每一一個(gè)數(shù)組組元素就就代表了了游戲棋棋盤中的的一個(gè)棋棋盤格。該該游戲采采用面向向?qū)ο蟮牡某绦蛟O(shè)設(shè)計(jì)方法法,主要要的功能能都封裝裝到不同同的類中中,定義義了以下下幾個(gè)類類:1.Boaard類類:該類類作為程程序的模模型定義義類,在在其中定定義了游游戲中所所使用的的數(shù) 據(jù)據(jù)結(jié)構(gòu)以以及對(duì)這這些數(shù)據(jù)據(jù)結(jié)構(gòu)中中的數(shù)據(jù)據(jù)進(jìn)行設(shè)設(shè)置和
4、獲獲取的方方法。2.BoaardVVieww類:該該類作為為程序的的視圖定定義類,也也是游戲戲的畫布布屏幕類類,在 該類類中定義義了如何何根據(jù)用用戶的游游戲動(dòng)作作繪制對(duì)對(duì)應(yīng)的游游戲運(yùn) 行畫畫面的方方法。3. Boomb類類:該類類表示游游戲中的的炸彈,定定義了如如何顯示示炸彈的的爆炸效效果以及及炸 彈爆炸炸后對(duì)其其他相關(guān)關(guān)元素的的影響的的方法。4.Eneemy類類:該類類表示游游戲中的的敵人,具具體定義義了敵人人如何移移動(dòng)以及及判斷敵敵 人是是否死亡亡的方法法。5.Plaayerr類:該該類表示示游戲中中的主角角,定義義了游戲戲主角如如何移動(dòng)動(dòng)、如何何防止 炸彈彈以及判判斷游戲戲是否死死亡的方
5、方法。6.Imgg類:該該類定義義了游戲戲中各種種圖像的的構(gòu)造方方法。7.jBoombMMan類類:該類類是程序序的MIIDleet類。(1)jBBombbMann.jaava pprivvatee Diispllay oDiispllay; /屏幕幕對(duì)象privvatee BooarddVieew ooBoaardVVieww; /棋棋盤視圖圖對(duì)象privvatee Booardd oBBoarrd; /棋盤對(duì)對(duì)象privvatee Pllayeer ooPlaayerr; /主主角對(duì)象象privvatee Ennemyy oEEnemmy; /敵人對(duì)對(duì)象(2) BBoarrd.jjavaa
6、/定義義棋盤的的二維數(shù)數(shù)組publlic chaar cchBooardd;/*N - Noone 表示什什么也沒沒有W - Waall 表示磚磚墻L - Piillaar 表表示巖石石P - Pllayeer 表表示游戲戲主角E - Ennemyy 表表示敵人人B - Boomb 表表示炸彈彈U - Boomb undder plaayerr 表示示主角正正在放置置炸彈X - Exxploodinng 表表示炸彈彈爆炸*/ /聲明明一個(gè)隨隨機(jī)數(shù)對(duì)對(duì)象privvateeRanndomm raandoom; /聲明明棋盤的的行和列列數(shù)publlic intt iCColss, iiRowws;
7、/聲明明判斷游游戲是否否結(jié)束的的標(biāo)識(shí)publlic vollatiile boooleaan iisGaameOOverr; /聲明明判斷是是否玩家家勝利的的標(biāo)識(shí)publlic vollatiile boooleaan iisWiin; /構(gòu)造造函數(shù),初初始化棋棋盤的行行數(shù)和列列數(shù),并并構(gòu)造隨隨機(jī)數(shù)對(duì)對(duì)象publlic Boaard( innt ccolss, iint rowws ) /定義義棋盤的的初始化化方法publlic voiid iinitt() /判斷斷某個(gè)棋棋盤格中中是否是是給定的的元素publlic boooleaan iisEllemeent( chhar ch, innt
8、 xx, iint y ) /獲取取指定的的某個(gè)棋棋盤格中中的元素素publlic chaar ggetEElemmentt( iint x, intt y ) /設(shè)置置指定的的某個(gè)棋棋盤格中中的元素素publlic voiid ssetEElemmentt( ccharr chh, iint x, intt y ) /判判斷給定定的位置置是否在在敵人的的攻擊范范圍內(nèi)publlic boooleaan nnearr( ccharr chh, iint x, intt y ) /判斷斷給定的的位置是是否可以以向某個(gè)個(gè)方向移移動(dòng)2步步publlic boooleaan nnearr2( chaar
9、 cch, intt x, innt yy ) (3)BBoarrdViiew.javvaprivaate Boaard oBooardd;privaate Plaayerr oPPlayyer;privaate Eneemy oEnnemyy;/定義背背景色privaate finnal intt BaackggrouundCColoor = 0 xxffffffff;/定義每每個(gè)棋盤盤格的大大小privaate finnal intt iCCelllSizze = 200;/聲明內(nèi)內(nèi)部邊框框距離坐坐標(biāo)原點(diǎn)點(diǎn)的橫坐坐標(biāo)距離離privaate finnal intt iLLeftt = 10;
10、/聲明內(nèi)內(nèi)部邊框框距離坐坐標(biāo)原點(diǎn)點(diǎn)的縱坐坐標(biāo)距離離privaate finnal intt iTTop = 110; publiic BBoarrdViiew( Booardd booardd )publiic vvoidd seetPllayeer( Plaayerr pllayeer )publiic vvoidd seetEnnemyy( EEnemmy eenemmy )/繪制游游戲屏幕幕publiic vvoidd paaintt( GGrapphiccs gg )/定義繪繪制游戲戲結(jié)束的的方法privaate voiid ppainntGaameOOverr( GGrapphicc
11、s gg )/定義繪繪制游戲戲玩家獲獲勝的方方法privaate voiid ppainntWiin( Graaphiics g )/繪制游游戲棋盤盤邊框的的方法privaate voiid ppainntFrramee( GGrapphiccs gg )/定義繪繪制棋盤盤的方法法privaate voiid ppainntBooardd( GGrapphiccs gg )/定義響響應(yīng)按鍵鍵按下的的事件處處理方法法publiic vvoidd keeyPrresssed( innt ccodee )/定義游游戲結(jié)束束或者玩玩家勝利利時(shí)的事事件處理理方法privaate voiid kkeyFF
12、orIInitt( iint acttionn )/定義游游戲過程程中的事事件處理理方法privaate voiid kkeyFForPPlayy( iint acttionn )/定義重重新繪制制棋盤格格的方法法publiic vvoidd reepaiintCCellls( intt x, innt yy, iint w, intt h ) (4)PPlayyer.javvaprivaate Boaard oBooardd;privaate BoaardVVieww oBBoarrdViiew;privaate Eneemy oEnnemyy;privaate Bommb ooBommb;
13、privaate Ranndomm raandoom;privaate intt iXX, iiY;/游戲主主角的構(gòu)構(gòu)造函數(shù)數(shù)publiic PPlayyer( Booardd booardd, BBoarrdViiew boaardvvieww )/游戲主主角的初初始化方方法publiic vvoidd innit()publiic vvoidd seetEnnemyy( EEnemmy eenemmy )/清除炸炸彈對(duì)象象的方法法publiic vvoidd cllearrBommb()/判斷游游戲主角角能否移移動(dòng)到給給定的棋棋盤格上上privaate boooleaan ccanGGo(
14、 intt x, innt yy )/定義放放置炸彈彈的方法法publiic vvoidd fiire()/定義游游戲主角角向左移移動(dòng)的方方法publiic vvoidd leeft()/定義游游戲主角角向右移移動(dòng)的方方法publiic vvoidd riightt()/定義游游戲主角角向上移移動(dòng)的方方法publiic vvoidd upp()/定義游游戲主角角向下移移動(dòng)的方方法publiic vvoidd doown()/定義游游戲主角角死掉的的方法publiic vvoidd diie() (5)EEnemmy.jjavaa pprivvatee Booardd oBBoarrd;priv
15、vatee BooarddVieew ooBoaardVVieww;publlic Plaayerr oPPlayyer; /設(shè)置置敵人每每次移動(dòng)動(dòng)的間隔隔時(shí)間privvatee fiinall innt iiMovveTiime = 5500;privvatee Raandoom rranddom; /聲明明游戲中中敵人的的數(shù)量privvatee innt iiNummberrs; /聲明明所有敵敵人所在在位置的的二維數(shù)數(shù)組privvatee innt arrrPossitiionss;privvatee voolattilee boooleean stoopThhreaad = faals
16、ee;/初始始化敵人人對(duì)象的的構(gòu)造函函數(shù)publlic Eneemy( Booardd booardd, BBoarrdViiew boaardvvieww, PPlayyer plaayerr, iint nummberrs ) /敵人人對(duì)象的的初始化化方法publlic voiid iinitt()publiic vvoidd sttopTThreead()/定義線線程的方方法體,在在該方法法中將定定義敵人人如何進(jìn)進(jìn)行移動(dòng)動(dòng)publiic vvoidd ruun()/定義敵敵人的移移動(dòng)方法法privaate voiid mmovee( iint i )/判斷能能否移動(dòng)動(dòng)到指定定棋盤格格位置
17、上上的方法法privaate boooleaan ccanGGo( intt x, innt yy )/定義給給定位置置上的敵敵人死亡亡的方法法publiic vvoidd diie( intt x, innt yy )/定義游游戲中的的所有敵敵人對(duì)象象全部死死亡的方方法publiic vvoidd diieAlll() (6) Bommb.jjavaa pprivvatee Booardd oBBoarrd;privvatee BooarddVieew ooBoaardVVieww;privvatee Pllayeer ooPlaayerr;privvatee Ennemyy oEEnemm
18、y;/定義義炸彈爆爆炸前等等待的時(shí)時(shí)間privvatee fiinall innt iiExpploddinggTimme = 40000; /定義義爆炸效效果顯示示的時(shí)間間privvatee fiinall innt iiDissapeearTTimee = 10000;privvatee innt iiX, iY;privvatee voolattilee boooleean stoopThhreaad = faalsee;/炸彈彈類的構(gòu)構(gòu)造方法法publlic Bommb( Boaard boaard, BooarddVieew bboarrdviiew, Pllayeer pplayy
19、er, Ennemyy ennemyy, intt x, innt yy )publiic vvoidd sttopTThreead()/根據(jù)給給定的單單元格判判斷炸彈彈爆炸后后的結(jié)果果的方法法privaate voiid eexpllodee( iint x, intt y )/清空給給定的單單元格中中的元素素privaate voiid ccleaar( intt x, innt yy )/定義線線程的方方法體,在在該方法法中將定定義炸彈彈爆炸的的效果publiic vvoidd ruun() (7) imgg.jaava /創(chuàng)建建游戲中中炸彈圖圖像的方方法,其其余圖像像方法一一樣publ
20、lic staaticc Immagee immgBoomb = IImagge.ccreaateIImagge(nnew bytte ., (innt)00, (innt)1163 );實(shí)驗(yàn)結(jié)果與與分析(包包括代碼碼和實(shí)驗(yàn)驗(yàn)總結(jié))程序代碼:游戲的模型型類實(shí)現(xiàn)現(xiàn)Boardd.jaavapackaage comm.moot.jj2mee.miidleets.jboombmman;imporrt jjavaa.uttil.*;/定義游游戲的模模型的類類,可以以將其看看做一個(gè)個(gè)棋盤publiic claass Boaard /定定義棋盤盤的二維維數(shù)組publlic chaar chBBoarrd;/
21、*N - Noone 表示什什么也沒沒有W - Waall 表示磚磚墻L - Piillaar 表表示巖石石P - Pllayeer 表表示游戲戲主角E - Ennemyy 表表示敵人人B - Boomb 表表示炸彈彈U - Boomb undder plaayerr 表示示主角正正在放置置炸彈X - Exxploodinng 表表示炸彈彈爆炸*/ /聲聲明一個(gè)個(gè)隨機(jī)數(shù)數(shù)對(duì)象privvateeRanndomm raandoom; /聲聲明棋盤盤的行和和列數(shù)publlic intt iCools, iRRowss; /聲聲明判斷斷游戲是是否結(jié)束束的標(biāo)識(shí)識(shí)publlic vollatiile bo
22、ooleaan isGGameeOveer; /聲聲明判斷斷是否玩玩家勝利利的標(biāo)識(shí)識(shí)publlic vollatiile boooleaan isWWin;/構(gòu)造造函數(shù),初初始化棋棋盤的行行數(shù)和列列數(shù),并并構(gòu)造隨隨機(jī)數(shù)對(duì)對(duì)象publlic Boaard( innt ccolss, iint rowws ) /構(gòu)構(gòu)造隨機(jī)機(jī)數(shù)對(duì)象象 rranddom = nnew Ranndomm();iCools = ccolss;iRoows = rrowss; /構(gòu)造造表示棋棋盤的二二維數(shù)組組chBBoarrd = neew chaariCoolsiRRowss; /調(diào)用用棋盤的的初始化化方法iniit()
23、; /定定義棋盤盤的初始始化方法法publlic voiid iinitt() /表示示游戲結(jié)結(jié)束的標(biāo)標(biāo)識(shí)設(shè)置置為faalseeisGGameeOveer = faalsee; /表示示玩家獲獲勝的標(biāo)標(biāo)識(shí)設(shè)置置為faalseeisWWin = ffalsse; /遍歷二二維數(shù)組組,為數(shù)數(shù)組的每每個(gè)元素素設(shè)置值值為NN,表表示游戲戲中每個(gè)個(gè)棋盤格格上都為為空forr( innt ii=0; iiCools; i+ )foor( intt j=0; jiiRowws; j+ )cchBooarddij = N;/ 遍歷二二維數(shù)組組,每相相隔一個(gè)個(gè)元素設(shè)設(shè)置值為為L(zhǎng),表示示游戲中中每相隔隔的棋盤盤格
24、上放放置一個(gè)個(gè)巖石forr( innt ii=1; iiCools; i+=2 )foor( intt j=1; jiiRowws; j+=2 )cchBooarddij = L;/ 遍歷二二維數(shù)組組,在棋棋盤上非非巖石的的位置隨隨機(jī)放置置磚墻forr( innt ii=0; iiCools; i+ )foor( intt j=0; jiiRowws; j+ ) /判判斷當(dāng)前前遍歷到到的棋盤盤格是否否為空iif( chBBoarrdiijj = N ) /如果果當(dāng)前棋棋盤格位位置為空空,則根根據(jù)隨機(jī)機(jī)數(shù)的判判斷條件件是否成成立來判判斷是否否放置磚磚墻if( Matth.aabs( raando
25、om.nnexttIntt() ) % 2 = 0 )chBBoarrdiijj = WW;/判斷斷某個(gè)棋棋盤格中中是否是是給定的的元素publlic boooleaan iisEllemeent( chhar ch, innt xx, iint y ) if( x = iCools )reeturrn fallse;if( y = iRoows )reeturrn fallse;retturnn( chhBoaardxy = ch );/獲取取指定的的某個(gè)棋棋盤格中中的元素素publlic chaar ggetEElemmentt( iint x, intt y ) if( x = iCoo
26、ls )reeturrn ?;if( y = iRoows )reeturrn ?;retturnn chBBoarrdxxyy;/設(shè)置置指定的的某個(gè)棋棋盤格中中的元素素publlic voiid ssetEElemmentt( ccharr chh, iint x, intt y ) if( chh = ? )reeturrn;if( x = iCools )reeturrn;if( y = iRoows )reeturrn;chBBoarrdxxyy = chh; /判判斷給定定的位置置是否在在敵人的的攻擊范范圍內(nèi)publlic boooleaan nnearr( ccharr chh,
27、iint x, intt y ) retturnn issEleemennt( ch, x-1, y )|iisEllemeent( chh, xx, yy-1 )|issEleemennt( ch, x+1, y )|iisEllemeent( chh, xx, yy+1 );/判斷斷給定的的位置是是否可以以向某個(gè)個(gè)方向移移動(dòng)2步步publlic boooleaan nnearr2( chaar cch, intt x, innt yy ) retturnn ( isEElemmentt( cch, x-11, yy )&issEleemennt( ch, x-2, y ) )|( isEE
28、lemmentt( cch, x, y-11 )&issEleemennt( ch, x, y-2 ) )|( isEElemmentt( cch, x+11, yy )&issEleemennt( ch, x+2, y ) )|( isEElemmentt( cch, x, y+11 )&issEleemennt( ch, x, y+2 ) );游戲的視圖圖類實(shí)現(xiàn)現(xiàn)BoarddVieew.jjavaapackaage comm.moot.jj2mee.miidleets.jboombmman;imporrt jjavaax.mmicrroedditiion.lcddui.*;/游戲的的畫布屏
29、屏幕類publiic claass BoaardVVieww exxtennds Cannvass privvatee Booardd oBBoarrd;privvatee Pllayeer ooPlaayerr;privvatee Ennemyy oEEnemmy;/定義義背景色色privvatee finnal intt BacckgrrounndCoolorr = 0 xffffffff; /定定義每個(gè)個(gè)棋盤格格的大小小privvatee finnal intt iCeellSSizee = 20; /聲聲明內(nèi)部部邊框距距離坐標(biāo)標(biāo)原點(diǎn)的的橫坐標(biāo)標(biāo)距離privvatee finnal in
30、tt iLeeft = 110; /聲聲明內(nèi)部部邊框距距離坐標(biāo)標(biāo)原點(diǎn)的的縱坐標(biāo)標(biāo)距離privvatee finnal intt iToop = 100;publlic BoaardVVieww( BBoarrd bboarrd ) oBooardd = boaard;publlic voiid ssetPPlayyer( Pllayeer pplayyer ) oPllayeer = pllayeer;publlic voiid ssetEEnemmy( Eneemy eneemy ) oEnnemyy = eneemy;/繪制制游戲屏屏幕publlic voiid ppainnt( Graa
31、phiics g ) /聲明明同步塊塊,對(duì)GGrapphiccs對(duì)象象g進(jìn)行行同步synnchrroniizedd( gg ) /如果游游戲結(jié)束束,則繪繪制游戲戲結(jié)束的的界面iff( oBBoarrd.isGGameeOveer )ppainntGaameOOverr( gg ); /如果玩玩家獲勝勝,則繪繪制玩家家獲勝的的界面ellse if( oBooardd.isWWin )ppainntWiin( g ); /否則繪繪制當(dāng)前前游戲運(yùn)運(yùn)行的界界面ellseppainntBooardd( gg );/定義義繪制游游戲結(jié)束束的方法法privvatee voiid ppainntGaameOO
32、verr( GGrapphiccs gg ) g.ddrawwImaage( Immg.iimgGGameeOveer, 60, 1000, Graaphiics.LEFFT|GGrapphiccs.TTOP );/定義義繪制游游戲玩家家獲勝的的方法privvatee voiid ppainntWiin( Graaphiics g ) g.ddrawwImaage( Immg.iimgCConggrattulaatioon, 60, 1000, Graaphiics.LEFFT|GGrapphiccs.TTOP );/繪制制游戲棋棋盤邊框框的方法法privvatee voiid ppainnt
33、Frramee( GGrapphiccs gg ) g.ddrawwRecct( 0, 0, 2399, 2239 );g.ddrawwRecct( 1, 1, 2377, 2237 );g.ddrawwRecct( 2, 2, 2355, 2235 );g.ddrawwRecct( 3, 3, 2333, 2233 );g.ddrawwRecct( 7, 7, 2255, 2225 );g.ddrawwRecct( 8, 8, 2233, 2223 );/定義義繪制棋棋盤的方方法privvatee voiid ppainntBooardd( GGrapphiccs gg ) /判斷斷畫布屏屏
34、幕的工工作區(qū)的的原點(diǎn)是是否在坐坐標(biāo)軸的的原點(diǎn)上上,如果果是則直直接繪制制游戲棋棋盤的邊邊框if( g.gettCliipX() = 00 )paainttFraame( g ); /設(shè)置畫畫布屏幕幕的工作作區(qū)的左左上角坐坐標(biāo)以及及高度和和寬度intt x = ( g.gettCliipX() - iLLeftt ) / iiCelllSiize;intt y = ( g.gettCliipY() - iTTop ) / iCCelllSizze;intt w = gg.geetCllipWWidtth() / iCeellSSizee;intt h = gg.geetCllipHHeigght
35、() / iCCelllSizze;Sysstemm.ouut.pprinntlnn( paiint: x= + x + , yy= + yy + , w= + w + , hh= + hh );/如如果畫布布屏幕的的工作區(qū)區(qū)的高度度超過了了棋盤的的高,則則將工作作區(qū)的高高度設(shè)置置為棋盤盤的高度度if( hoBooardd.iRoows )h = ooBoaard.iRoows;/根根據(jù)工作作區(qū)的位位置,開開始繪制制棋盤中中的元素素forr( innt ii=x; ix+ww; ii+ )foor( intt j=y; jyy+h; j+ ) /根根據(jù)遍歷歷得到的的數(shù)組中中的元素素類型進(jìn)進(jìn)行繪
36、制制sswittch( oBBoarrd.chBBoarrdiijj ) caase N: /當(dāng)前數(shù)數(shù)組元素素中的類類型表示示空白區(qū)區(qū)域,則則繪制空空白區(qū)域域的圖像像g.ssetCColoor( BacckgrrounndCoolorr );g.ffilllRecct( iLeeft + ii*iCCelllSizze, iToop + j*iCeellSSizee, iCeellSSizee, iCCelllSizze );breeak; caase W: /當(dāng)前數(shù)數(shù)組元素素中的類類型表示示磚墻,則則繪制磚磚墻的圖圖像g.ddrawwImaage( Immg.iimgWWalll, iLLe
37、ftt + i*iiCelllSiize, iTTop + jj*iCCelllSizze, Graaphiics.LEFFT|GGrapphiccs.TTOP );breeak; caase L: /當(dāng)前數(shù)數(shù)組元素素中的類類型表示示巖石,則則繪制巖巖石的圖圖像g.ddrawwImaage( Immg.iimgPPilllar, iLLeftt + i*iiCelllSiize, iTTop + jj*iCCelllSizze, Graaphiics.LEFFT|GGrapphiccs.TTOP );breeak; caase P: /當(dāng)前數(shù)數(shù)組元素素中的類類型表示示游戲主主角,則則繪制游游戲
38、主角角的圖像像 caase U: /當(dāng)前數(shù)數(shù)組元素素中的類類型表示示主角正正在放置置炸彈,則則繪制游游戲主角角的圖像像g.ddrawwImaage( Immg.iimgPPlayyer, iLLeftt + i*iiCelllSiize, iTTop + jj*iCCelllSizze, Graaphiics.LEFFT|GGrapphiccs.TTOP );breeak; caase E: /當(dāng)前數(shù)數(shù)組元素素中的類類型表示示敵人,則則繪制敵敵人的圖圖像g.ddrawwImaage( Immg.iimgEEnemmy, iLeeft + ii*iCCelllSizze, iToop + j*i
39、CeellSSizee, Graaphiics.LEFFT|GGrapphiccs.TTOP );breeak; caase B: /當(dāng)前數(shù)數(shù)組元素素中的類類型表示示炸彈,則則繪制炸炸彈的圖圖像g.ddrawwImaage( Immg.iimgBBombb, iLLeftt + i*iiCelllSiize, iTTop + jj*iCCelllSizze, Graaphiics.LEFFT|GGrapphiccs.TTOP );breeak; caase X: /當(dāng)前數(shù)數(shù)組元素素中的類類型表示示炸彈爆爆炸,則則繪制炸炸彈爆炸炸的圖像像g.ddrawwImaage( Immg.iimgEExp
40、llodiing, iLLeftt + i*iiCelllSiize, iTTop + jj*iCCelllSizze, Graaphiics.LEFFT|GGrapphiccs.TTOP );breeak;/定義義響應(yīng)按按鍵按下下的事件件處理方方法publlic voiid kkeyPPresssedd( iint codde ) /如果果游戲結(jié)結(jié)束或者者玩家勝勝利,則則調(diào)用kkeyFForIInitt()方方法響應(yīng)應(yīng)按鍵事事件if( oBBoarrd.isGGameeOveer|oBooardd.isWWin )keeyFoorInnit( geetGaameAActiion(codde)
41、 ); /否則則調(diào)用kkeyFForPPlayy()方方法響應(yīng)應(yīng)按鍵事事件elssekeeyFoorPllay( geetGaameAActiion(codde) ); /定定義游戲戲結(jié)束或或者玩家家勝利時(shí)時(shí)的事件件處理方方法privvatee voiid kkeyFForIInitt( iint acttionn ) /如果果用戶按按下了手手機(jī)中的的Sellectt按鍵,則則游戲進(jìn)進(jìn)行初始始化if( acctioon != FFIREE )reeturrn;/棋棋盤初始始化oBooardd.innit(); /敵人人初始化化oEnnemyy.innit(); /游戲戲主角初初始化oPllay
42、eer.iinitt();/初初始化完完成后重重新繪制制屏幕reppainnt(); /定定義游戲戲過程中中的事件件處理方方法privvatee voiid kkeyFForPPlayy( iint acttionn ) swiitchh( aactiion ) ccasee FIRRE:oPPlayyer.firre();brreakk; ccasee LEFFT:oPPlayyer.lefft();brreakk; ccasee RIGGHT:oPPlayyer.rigght();brreakk; ccasee UP:oPPlayyer.up();brreakk; ccasee DOWWN
43、:oPPlayyer.dowwn();brreakk;/定義義重新繪繪制棋盤盤格的方方法publlic voiid rrepaainttCellls( innt xx, iint y, intt w, innt hh ) if( x = oBooardd.iCools )x = ooBoaard.iCools - 11;if( x + ww oBooardd.iCools )w = ooBoaard.iCools - xx;if( y = oBooardd.iRoows )y = ooBoaard.iRoows - 11;if( y + hh oBooardd.iRoows )h = ooBo
44、aard.iRoows - yy;reppainnt( iLeeft + xx*iCCelllSizze, iToop + y*iCeellSSizee, w*iCCelllSizze, h*iiCelllSiize );游戲的主角角類實(shí)現(xiàn)現(xiàn)Playeer.jjavaapackaage comm.moot.jj2mee.miidleets.jboombmman;imporrt jjavaa.uttil.*;/游戲中中的主角角類publiic claass Plaayerr privvatee Boaard oBooardd;privvatee BooarddVieew ooBoaardVVie
45、ww;privvatee Ennemyy oEEnemmy;privvatee Boomb oBoomb;privvatee Raandoom rranddom;privvatee intt iX, iY;/游戲戲主角的的構(gòu)造函函數(shù)publlic Plaayerr( BBoarrd bboarrd, BoaardVVieww booarddvieew ) oBooardd = boaard;oBooarddVieew = booarddvieew;ranndomm = neww Raandoom(); /調(diào)用用游戲主主角的初初始化方方法iniit();/游戲戲主角的的初始化化方法publlic
46、 voiid iinitt() whiile( trrue ) /獲取游游戲主角角初始化化的隨機(jī)機(jī)位置iXX = Matth.aabs( raandoom.nnexttIntt() ) % oBBoarrd.iCools;iYY = Matth.aabs( raandoom.nnexttIntt() ) % oBBoarrd.iRoows;/如果隨隨機(jī)位置置上不為為空,則則跳出當(dāng)當(dāng)前本次次循環(huán),再再重新獲獲取隨機(jī)機(jī)位置iff( oBBoarrd.chBBoarrdiXiY != N )cconttinuue;/如果隨隨機(jī)位置置在敵人人的攻擊擊范圍內(nèi)內(nèi),則跳跳出當(dāng)前前本次循循環(huán),再再重新獲獲取隨
47、機(jī)機(jī)位置iff( oBBoarrd.nnearr( E, iXX, iYY ) )cconttinuue;/如果隨隨機(jī)位置置不能夠夠向任何何方向移移動(dòng)2步步,則跳跳出當(dāng)前前本次循循環(huán),再再重新獲獲取隨機(jī)機(jī)位置iff( !oBooardd.neear22( N, iXX, iYY ) )cconttinuue;/如果獲獲得一個(gè)個(gè)合適的的隨機(jī)位位置,則則跳出死死循環(huán),繼繼續(xù)向下下執(zhí)行brreakk;/在在棋盤中中根據(jù)獲獲取的隨隨機(jī)位置置設(shè)置對(duì)對(duì)應(yīng)的棋棋盤格中中的元素素為游戲戲主角oBooardd.chBBoarrdiXiY = P;publlic voiid ssetEEnemmy( Eneemy
48、 eneemy ) oEnnemyy = eneemy;/清除除炸彈對(duì)對(duì)象的方方法publlic voiid ccleaarBoomb() oBoomb = nnulll;Sysstemm.ouut.pprinntlnn( delletee Boomb );/判斷斷游戲主主角能否否移動(dòng)到到給定的的棋盤格格上privvatee boooleaan ccanGGo( intt x, innt yy ) /如果果要移動(dòng)動(dòng)到的棋棋盤格中中沒有元元素,則則返回ttrueeif( oBBoarrd.iisEllemeent( NN, x, y ) )reeturrn truue;/如如果要移移動(dòng)到的的棋盤
49、格格中是敵敵人,則則游戲主主角死掉掉if( oBBoarrd.iisEllemeent( EE, x, y ) )diie();/如如果上述述條件都都不成立立,則不不能移動(dòng)動(dòng)到給定定的單元元格中,返返回faalseeretturnn fallse; /定定義放置置炸彈的的方法publlic voiid ffiree() /構(gòu)造造一個(gè)炸炸彈對(duì)象象oBoomb = nnew Bommb( oBooardd, oBBoarrdViiew, thhis, oEEnemmy, iX, iY ); /啟動(dòng)動(dòng)炸彈對(duì)對(duì)象中的的線程方方法體oBoomb.staart();Sysstemm.ouut.pprinn
50、tlnn( neww Boomb: x= + iXX + , y= + iY );/定義義游戲主主角向左左移動(dòng)的的方法publlic voiid lleftt() /如果果不能向向左移動(dòng)動(dòng),則返返回if( !ccanGGo( iX-11, iiY ) )reeturrn;/如如果移動(dòng)動(dòng)之前的的棋盤格格中的元元素是游游戲主角角放置炸炸彈,則則移動(dòng)之之前的棋棋盤格中中放置炸炸彈元素素if( oBBoarrd.chBBoarrdiXiY = U )oBBoarrd.chBBoarrdiXiY = B;elsse /否否則的話話,移動(dòng)動(dòng)之前的的棋盤格格中設(shè)置置為空oBBoarrd.chBBoarrdi
51、XiY = N; /游戲戲主角的的列數(shù)減減1iX-; /設(shè)置置移動(dòng)后后的棋盤盤格中的的元素為為游戲主主角oBooardd.chBBoarrdiXiY = P;/在在畫布屏屏幕上重重繪指定定的區(qū)域域oBooarddVieew.rrepaainttCellls( iXX, iYY, 22, 11 );/定義義游戲主主角向右右移動(dòng)的的方法publlic voiid rrighht() /如果果不能向向右移動(dòng)動(dòng),則返返回if( !ccanGGo( iX+11, iiY ) )reeturrn;/如如果移動(dòng)動(dòng)之前的的棋盤格格中的元元素是游游戲主角角放置炸炸彈,則則移動(dòng)之之前的棋棋盤格中中放置炸炸彈元素素
52、if( oBBoarrd.chBBoarrdiXiY = U )oBBoarrd.chBBoarrdiXiY = B;elsse /否否則的話話,移動(dòng)動(dòng)之前的的棋盤格格中設(shè)置置為空oBBoarrd.chBBoarrdiXiY = N; /游戲戲主角的的列數(shù)加加1iX+; /設(shè)置置移動(dòng)后后的棋盤盤格中的的元素為為游戲主主角oBooardd.chBBoarrdiXiY = P;/在在畫布屏屏幕上重重繪指定定的區(qū)域域oBooarddVieew.rrepaainttCellls( iXX-1, iYY, 22, 11 );/定義義游戲主主角向上上移動(dòng)的的方法publlic voiid uup() /如
53、果果不能向向上移動(dòng)動(dòng),則返返回if( !ccanGGo( iX, iY-11 ) )reeturrn;/如如果移動(dòng)動(dòng)之前的的棋盤格格中的元元素是游游戲主角角放置炸炸彈,則則移動(dòng)之之前的棋棋盤格中中放置炸炸彈元素素if( oBBoarrd.chBBoarrdiXiY = U )oBBoarrd.chBBoarrdiXiY = B;elsse /否否則的話話,移動(dòng)動(dòng)之前的的棋盤格格中設(shè)置置為空oBBoarrd.chBBoarrdiXiY = N; /游戲戲主角的的行數(shù)減減1iY-; /設(shè)置置移動(dòng)后后的棋盤盤格中的的元素為為游戲主主角oBooardd.chBBoarrdiXiY = P;/在在畫布屏
54、屏幕上重重繪指定定的區(qū)域域oBooarddVieew.rrepaainttCellls( iXX, iYY, 11, 22 );/定義義游戲主主角向下下移動(dòng)的的方法publlic voiid ddownn() /如如果不能能向上移移動(dòng),則則返回if( !ccanGGo( iX, iY+11 ) )reeturrn;/如如果移動(dòng)動(dòng)之前的的棋盤格格中的元元素是游游戲主角角放置炸炸彈,則則移動(dòng)之之前的棋棋盤格中中放置炸炸彈元素素if( oBBoarrd.chBBoarrdiXiY = U )oBBoarrd.chBBoarrdiXiY = B;elsse /否否則的話話,移動(dòng)動(dòng)之前的的棋盤格格中設(shè)置
55、置為空oBBoarrd.chBBoarrdiXiY = N; /游戲戲主角的的行數(shù)加加1iY+; /設(shè)置置移動(dòng)后后的棋盤盤格中的的元素為為游戲主主角oBooardd.chBBoarrdiXiY = P;/在在畫布屏屏幕上重重繪指定定的區(qū)域域oBooarddVieew.rrepaainttCellls( iXX, iYY-1, 1, 2 );/定義義游戲主主角死掉掉的方法法publlic voiid ddie() Sysstemm.ouut.pprinntlnn( Plaayerr diie: x= + iX + , y= + iYY ); /殺死死游戲中中搜有的的敵人oEnnemyy.diie
56、Alll(); /設(shè)置置游戲結(jié)結(jié)束的標(biāo)標(biāo)識(shí)為ttrueeoBooardd.isGGameeOveer = trrue; /重新新繪制畫畫布屏幕幕oBooarddVieew.rrepaaintt();游戲的敵人人類實(shí)現(xiàn)現(xiàn)Enemyy.jaavapackaage comm.moot.jj2mee.miidleets.jboombmman;imporrt jjavaa.uttil.*;/游戲中中的敵人人類publiic claass Eneemy exttendds TThreead privvatee Booardd oBBoarrd;privvatee BooarddVieew ooBoaard
57、VVieww;publlic Plaayerr oPPlayyer; /設(shè)設(shè)置敵人人每次移移動(dòng)的間間隔時(shí)間間privvatee finnal intt iMooveTTimee = 5000;privvatee Raandoom rranddom; /聲聲明游戲戲中敵人人的數(shù)量量privvatee intt iNuumbeers; /聲聲明所有有敵人所所在位置置的二維維數(shù)組privvatee intt aarrPPosiitioons;privvatee vollatiile boooleaan stoopThhreaad = faalsee;/初始始化敵人人對(duì)象的的構(gòu)造函函數(shù)publlic
58、Eneemy( Booardd booardd, BBoarrdViiew boaardvvieww, PPlayyer plaayerr, iint nummberrs ) oBooardd = boaard;oBooarddVieew = booarddvieew;oPllayeer = pllayeer;iNuumbeers = nnumbberss;arrrPossitiionss = neww inttiNuumbeers2;ranndomm = neww Raandoom();/調(diào)調(diào)用敵人人對(duì)象的的初始化化方法iniit(); /敵敵人對(duì)象象的初始始化方法法publlic voii
59、d iinitt() intt x, y; /隨機(jī)機(jī)將游戲戲中的敵敵人放置置在棋盤盤中forr( innt ii=0; iiNuumbeers; ) /隨機(jī)得得到每個(gè)個(gè)敵人在在棋盤格格中的位位置x = MMathh.abbs( ranndomm.neextIInt() ) % oBooardd.iCools;y = MMathh.abbs( ranndomm.neextIInt() ) % oBooardd.iRoows;/如果得得到的隨隨機(jī)位置置上已經(jīng)經(jīng)有其他他元素了了,則跳跳出本次次循環(huán)iff( oBBoarrd.chBBoarrdxxyy != N )cconttinuue;/如果得得到
60、的隨隨機(jī)位置置上為空空,則將將敵人元元素放置置在該單單元格中中oBBoarrd.chBBoarrdxxyy = EE; /將敵人人對(duì)象所所處的單單元格位位置保存存在數(shù)組組中arrrPoosittionnsii00 = x;arrrPoosittionnsii11 = y;/繼續(xù)本本次循環(huán)環(huán)i+;publlic voiid sstoppThrreadd() stoopThhreaad = trrue;/定義義線程的的方法體體,在該該方法中中將定義義敵人如如何進(jìn)行行移動(dòng)publlic voiid rrun() whiile (!sstoppThrreadd) trry /敵人人對(duì)象靜靜止一段段時(shí)間
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024福建西海岸建筑設(shè)計(jì)院有限公司下半年招聘26人筆試參考題庫(kù)附帶答案詳解
- 達(dá)州市市屬國(guó)有企業(yè)“達(dá)人英才”2024年赴高校引才考生結(jié)論補(bǔ)檢人員及考察聘用筆試參考題庫(kù)附帶答案詳解
- 浙江國(guó)企招聘2025金華浦江縣國(guó)有企業(yè)招聘14人(03)筆試參考題庫(kù)附帶答案詳解
- 小角蛙養(yǎng)護(hù)知識(shí)培訓(xùn)課件
- 浙江國(guó)企招聘2024浙江舟山東大城市運(yùn)營(yíng)服務(wù)有限公司物業(yè)分公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年度碎石場(chǎng)安全生產(chǎn)合作協(xié)議
- 二零二五年度大學(xué)生就業(yè)指導(dǎo)與職業(yè)規(guī)劃實(shí)施合同
- 二零二五年度網(wǎng)絡(luò)安全服務(wù)傭金支付及風(fēng)險(xiǎn)防范合同
- 2025年度電商代發(fā)貨與大數(shù)據(jù)分析合作合同
- 2025年度新能源建筑項(xiàng)目入股投資協(xié)議書
- 小學(xué)科學(xué)湘科版六年級(jí)下冊(cè)全冊(cè)同步練習(xí)含答案
- 人教版小學(xué)五年級(jí)英語(yǔ)上冊(cè)作文專項(xiàng)練習(xí)題
- (2024年)傳染病培訓(xùn)課件
- 乘務(wù)大隊(duì)客艙服務(wù)質(zhì)量
- 海智工作站申報(bào)計(jì)劃書
- 托管崗前培訓(xùn)教學(xué)課件
- 機(jī)房運(yùn)維管理制度
- 昆明撫仙湖鰭魚灣棋盤山度假娛樂旅游區(qū)總體規(guī)劃方案樣本
- 突發(fā)疾病時(shí)的安全駕駛方法
- 污水處理廠入河排污口設(shè)置論證報(bào)告
- T-SHNA 0005-2023 成人住院患者腸外營(yíng)養(yǎng)輸注護(hù)理
評(píng)論
0/150
提交評(píng)論