freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于eclipse平臺(tái)的飛機(jī)游戲的開發(fā)畢業(yè)論文設(shè)計(jì)-資料下載頁(yè)

2025-06-22 00:49本頁(yè)面
  

【正文】 lumn=i%15 取得、行由 row=(icolumn)/15 取得。 畫出地圖后,由 ()將地圖添加到 LayerManager 類對(duì)象 lm 中。由于地圖位于 Layer 的最低層,即離用戶視線最遠(yuǎn)的層,所以 Tiledlayer 最后一個(gè)被添加到 lm 中。 地圖的移動(dòng) 根據(jù)游戲的設(shè)定,游戲中地圖是向下移動(dòng)的,實(shí)現(xiàn)此功能的方法如下: 首先,在使用 createBackGround()函數(shù)創(chuàng)建地圖數(shù)組時(shí),用(row+1)*16getHeight() 語(yǔ)句對(duì)整型變量 row2 賦值,其中 row+1 代表地圖有多少列, 16 為地圖片的高度,而減去 getHeight()是因?yàn)橐舫鲆粋€(gè)屏幕的可視區(qū)域,由于 J2ME 規(guī)定坐標(biāo)系中下方向?yàn)檎允褂谜Z(yǔ)句 y1=row2將 row2 的數(shù)值變?yōu)樨?fù)數(shù)。 其次,render()函數(shù)中,使用 (0,0,getWidth(),getHeight()+10000)設(shè)定可視區(qū)域的范圍,(0,0)表示 View Window 的起始坐標(biāo),(getWidth() ,getHeight()+10000) 使用 (g,0,y1)決定View Window 從屏幕的哪里畫起。在 run()函數(shù)中的 while(conti)中,使用語(yǔ)句 y1=y1+1 使得每次繪圖都使地圖下移 1 個(gè)象素。如圖 46 所示。 gameScreen 類的構(gòu)造函數(shù)gameScreen 類的構(gòu)造函數(shù)要將游戲中出現(xiàn)的所有精靈都實(shí)例化,實(shí)際上,這種方法嚴(yán)重的占用了內(nèi)存,但在當(dāng)時(shí),我并沒(méi)有意屏幕13識(shí)到這一點(diǎn)。由于敵人要求不停的出現(xiàn),但是不可能設(shè)置過(guò)多的精靈,解決的辦法是設(shè)定 6 個(gè) Sprite 類對(duì)象j0、jj2 及 jbulletjbulletjbullet2 ,分別代表三架敵機(jī)及其配屬的子彈。所以在 gameScreen 類的構(gòu)造函數(shù)分配這 6 個(gè) Sprite 類的存儲(chǔ)空間,并且使用 new Sprite(Image img, int width,int height)實(shí)例化這 6 個(gè)類變量。同關(guān)尾 cboss 與游戲進(jìn)行中的大飛機(jī)其他的 Sprite 類對(duì)象都需要使用相同的方法實(shí)例化。同樣處于節(jié)約內(nèi)存的考慮,sboss 與 cboss 同用 3 個(gè) Sprite 類對(duì)象 bossbullet0,1,2。 在構(gòu)造函數(shù)中,定義 boolean 型變量 conti=true。conti 的作用在于控制是否進(jìn)行游戲畫面的重繪及其他需要在畫面重繪前進(jìn)行的運(yùn)算。 在構(gòu)造函數(shù)中,將 mybullets 類里的 no 和 score 初始化,現(xiàn)在看來(lái) no 的初始化沒(méi)有必要,但是score 的初始化是必須的,因?yàn)檫@個(gè)變量存儲(chǔ)著玩家每次游戲的成績(jī),如果不在此進(jìn)行初始化,則玩家重新開始游戲后 score 并不歸 0。 關(guān)于 mandAction()方法每個(gè)創(chuàng)建 Command 實(shí)例的 J2ME 的應(yīng)用程序也必須創(chuàng)建實(shí)現(xiàn) CommandListener 接口的實(shí)例。每當(dāng)用戶通過(guò) mandAction()方法的方式與命令進(jìn)行交互的時(shí)候,就會(huì)通過(guò) 現(xiàn) CommandListener 的類必須實(shí)現(xiàn) mandAction()方法。在 mandAction()方法中,使用 getabel()方法獲取命令的標(biāo)簽。如果 getLabel()=“暫?!睍r(shí),表示玩家點(diǎn)擊了暫停鍵,此時(shí),conti 賦值為 false,游戲畫面的繪制及游戲相關(guān)的運(yùn)算暫停,并且,使用removeCommand(c)語(yǔ)句將“暫?!币瞥褂?addCommand(new Command(繼續(xù),2))。將”繼續(xù)“按紐”添加進(jìn)來(lái)。當(dāng)玩家點(diǎn)擊“繼續(xù)“時(shí),conti 賦值為 true,并且,一定要調(diào)用 start()方法,否則繼續(xù)功能不可用。必須調(diào)用 start()方法的原因是:J2ME 的線程已 stop()方法拿掉,如果想停止線程的運(yùn)做,就必須依靠一個(gè)旗標(biāo)(flag),在本程序中,flag 就是 boolean 型變量 conti。所以一旦此標(biāo)識(shí)變量被設(shè)為 false,那么 while(conti)循環(huán)就會(huì)結(jié)束,線程也會(huì)跟著結(jié)束。當(dāng)用戶按下“繼續(xù)”的時(shí)候,start()將重新產(chǎn)生一個(gè)線程繼續(xù)執(zhí)行相關(guān)的運(yùn)算和畫面繪制。當(dāng)玩家通關(guān)時(shí)或者任務(wù)失敗時(shí),將顯示相應(yīng)信息,并使用上面的方法將“暫?!辨I變?yōu)椤胺祷亍辨I盤,當(dāng)點(diǎn)擊“返回”鍵時(shí),將返回主菜單選項(xiàng),調(diào)用類 lzhhdm 里的方法 menuscreensecond(),在此方法中,實(shí)例化一個(gè) MenuScreen 類對(duì)象,并且使選項(xiàng)“開始游戲”改變?yōu)椤霸賮?lái)一次”(圖 47)。完成此項(xiàng)功能的語(yǔ)句子為 [0] =“再來(lái)一次”。當(dāng)選擇”再來(lái)一次“時(shí),使用gamescreen=new gameScreen(this)將使所有變量重新被初始化,如地圖的繪制、敵人出現(xiàn)位置的重置、敵人的數(shù)量、玩家飛機(jī)的當(dāng)前位置等。使用()重新開始程序的循環(huán)。 Sprite 類對(duì)象的碰撞檢測(cè)及相關(guān)屬性游戲進(jìn)行中,即在 while(conti){ }中,需要進(jìn)行玩家飛機(jī)、子彈與敵機(jī)的碰撞檢測(cè),即使用函數(shù)collidesWith(Sprite,boolean)。由于設(shè)計(jì)的問(wèn)題,玩家的子彈與敵機(jī)的碰撞檢測(cè)被寫在了 mybullets 類中,并且只檢測(cè)第一發(fā)子彈是否與敵人相碰撞,如果碰撞為真時(shí),則使用setVisible(false)函數(shù)將敵機(jī)隱藏,使用 setImage()函數(shù)將子彈精靈的三張圖片置換為爆炸圖片( 圖 48 )。當(dāng)敵人剩余飛機(jī)消失后,即所有的敵人都飛出了屏幕后,使用函數(shù)setVisible(true)將敵機(jī)重新設(shè)置為可見。在按“開火”鍵時(shí),使用 setImage()函數(shù)將 huokebullets 重新設(shè)定為子彈圖片( 每次擊落敵機(jī)后屏幕上的爆炸效果有 3 團(tuán),并且按“開火”后爆炸圖片就消失了,實(shí)際上 setVisavle(false)的應(yīng)該是子彈數(shù)組,而對(duì)敵人精靈使用 setImage(),這樣效果會(huì)好一些) 。敵機(jī)與玩家的碰撞檢測(cè)原理同上,都是使圖 4714用的 collidesWith()函數(shù),遺憾的是,我在寫這段代碼的時(shí)候,并沒(méi)有考慮設(shè)置玩家有 4 次機(jī)會(huì),所以對(duì)敵人飛機(jī) setVisable(fasle)了,而將玩家的飛機(jī)換成了爆炸圖片,之后,添加了玩家 4 次機(jī)會(huì)這個(gè)功能,由于玩家被擊落后會(huì)重新從屏幕下方進(jìn)入屏幕,所以爆炸的圖片一閃而過(guò),效果不是很好。 玩家 4 次游戲機(jī)會(huì)的實(shí)現(xiàn)方法 根據(jù)游戲設(shè)置,玩家在每關(guān)中有共四次機(jī)會(huì),當(dāng)玩家飛機(jī)被擊中或撞擊爆炸后,程序首先檢測(cè)整型變量 playerno 的值,并根據(jù) playerno 的值決定屏幕右上角所畫玩家飛機(jī)標(biāo)志的數(shù)量(參考圖 48),playerno 的初始值設(shè)為 3,因?yàn)榕鲎埠蟛艤p 1,所以玩家共有 4 次機(jī)會(huì),當(dāng) playerno0 時(shí),游戲結(jié)束,同時(shí)將變量 pver 賦值為 1,render() 或 renderboss()函數(shù)中,over=1 代表在屏幕上 GAMEOVER 等相關(guān)信息,同時(shí),將整型變量 inputno 賦植為 1,以使手機(jī)的方向鍵失效,以消除玩家可以控制爆炸圖像移動(dòng)這個(gè) BUG。同時(shí)整型變量 pzbz 賦植為 1,以消除玩家爆炸圖像繼續(xù)與敵人進(jìn)行碰撞檢測(cè)這個(gè) BUG。當(dāng) playerno0 時(shí),碰撞后,將變量 planert 賦值為 1,在之后的 if(planert==1)判斷語(yǔ)句中,重新設(shè)定玩家飛機(jī)的圖片和可視狀態(tài),同時(shí)使用 setPosition()函數(shù)設(shè)定玩家非的位置在屏幕下方。設(shè)定 pzbz=1,即不檢測(cè)碰撞,玩家有短暫時(shí)間無(wú)敵,無(wú)敵時(shí)間由屏幕右上角進(jìn)度條表示。設(shè)定 inputno=1,即飛入屏幕的過(guò)程中手機(jī)鍵盤是不可以用的。設(shè)置 planert=2,即以上這些設(shè)置只執(zhí)行一便。在 if(planert==2)判斷語(yǔ)句中,使用語(yǔ)句 move(0,2)使飛機(jī)自己向上運(yùn)動(dòng),使用 if(()(planepo24))判斷飛機(jī)是否到達(dá)屏幕最下方(planepo 是屏幕下邊緣的坐標(biāo)),如條件為真,則將inputno 設(shè)置為 1,表示鍵盤可用,將 planert 賦值為 3,使其不再執(zhí)行以上各步。 input() input()函數(shù)的作用是檢測(cè)用戶的輸入。首先使用if(inputno==0)判斷用戶的輸入是否被禁止,如為真,則用戶輸入不被禁止。其次,調(diào)用 getKeyStates()查詢按鍵的狀態(tài)。當(dāng)按方向鍵時(shí),玩家飛機(jī)就向不同的方向運(yùn)行,這需要使用(int x,int y)函數(shù),當(dāng)玩家控制飛機(jī)向左或右飛時(shí),需要使 ()函數(shù)改變飛機(jī)的圖形( 參見圖 47,此時(shí)飛機(jī)右飛 )。同時(shí),還需要判斷飛機(jī)是否飛出屏幕,如,當(dāng)飛機(jī)右飛時(shí),用 if(()(getWidth()()))語(yǔ)句判斷(getWith() 為屏幕的寬度,() 為玩家飛機(jī) c1 的寬度) ,如果條件為真,則使用 ((getWidth()()),())語(yǔ)句將飛機(jī)設(shè)置在緊靠屏幕右邊的位置。上、下、左的設(shè)置原理同上。語(yǔ)句 if((keystateamp。LEFT_PRESSED)==0)的作用是消除左、右飛后在上、下飛時(shí)飛機(jī)的形態(tài)不變的BUG。如果為真,則執(zhí)行語(yǔ)句 (0),表示只要左鍵松開飛機(jī)的形態(tài)都是平飛。根據(jù)游戲設(shè)定,玩家一次最多只能發(fā)三組子彈,并且子彈有射程限制(在類 mybullets 中使用整型變量 no 表示),而當(dāng)玩家按下“開火“鍵時(shí),即 if((keystateamp。FIRE_PRESSED)!=0)中判斷條件為真時(shí),首先執(zhí)行循環(huán)語(yǔ)句 for(int i=0。i=6。i=i+3),即檢測(cè) 3 組子彈中每組的第一發(fā),即 0,3,6。其次,檢測(cè) huokebullet[i].no 是否等于1,當(dāng)?shù)扔?1 時(shí)使用語(yǔ)句 for( int z=i。zi+3。z++)初始化該組子彈中的 3 發(fā)子彈,而設(shè)置子彈位置的函數(shù)應(yīng)該在 if(huokebullet[i].no==1)語(yǔ)句外設(shè)置,因?yàn)楫?dāng)初設(shè)計(jì)的時(shí)候 mybullets 類里的函數(shù)寫成了一次設(shè)置三組子彈的形式。huokebullet[z].no=huokebullet[z].bulletheight 賦予子彈射程。當(dāng)程序循環(huán)運(yùn)行時(shí) no,當(dāng)一次發(fā)射了三組子彈后,只有某一組子彈消失,即 no 等于 1 后才能繼續(xù)發(fā)射子彈?,F(xiàn)在看來(lái),玩家發(fā)射子彈的設(shè)置是完全失敗的,降低了效率。 render()和 renderboss()圖 4815圖 410在方法 render()過(guò)程中,除了要重繪飛機(jī)、地圖、子彈外還要在上方繪制關(guān)卡信息、戰(zhàn)果、玩家飛機(jī)數(shù)、及無(wú)敵狀態(tài)時(shí)的無(wú)敵時(shí)間、大飛機(jī)生命條等。首先使用 ()和 ()設(shè)定可視范圍 ViewWindow 和從哪里畫起 (見 )。其次,使用()繪制屏幕上方的關(guān)卡信息、戰(zhàn)績(jī)、玩家剩余生命標(biāo)志。drawString()中使用 (huokebullet[0].rscore()+huokebullet[3]. rscore()+huokebullet[6].rscore())返回玩家成績(jī) score 的字符串表示。其中根據(jù) playerno 的值繪出玩家的飛機(jī)標(biāo)志數(shù)(應(yīng)該有更好方法,但是沒(méi)有想到 )當(dāng)每次刷新繪圖頁(yè)面時(shí),應(yīng)使用 GameCanvas 的 flushGraphics()將屏幕后臺(tái)的緩沖區(qū)內(nèi)的圖像刷新到前臺(tái)來(lái)(flushGraphics()應(yīng)該寫在 render(){ }的最后)。renderboss()方法重繪的是關(guān)尾的精靈 cboss、相關(guān)信息等,與 render()的區(qū)別在與于函數(shù) (g,0,0),起始坐標(biāo)是不可變的,即,關(guān)尾的地圖背景是不可變的。實(shí)際上,renderboss()是完全不需要的,只要在 render()函數(shù)中設(shè)置相關(guān)標(biāo)志位就可以解決關(guān)尾的繪圖問(wèn)題。玩家飛機(jī)的生命標(biāo)志使用 drawImage()就可以繪制在屏幕上了。 游戲中的獎(jiǎng)勵(lì)及相關(guān)飛機(jī)的行為 根據(jù)游戲設(shè)定,當(dāng) y1=1000 時(shí),會(huì)出現(xiàn)如圖 48 所示的飛機(jī)(sboss),當(dāng)玩家擊落他后,屏幕會(huì)顯示“援軍到達(dá)“,并且玩家剩余飛機(jī)數(shù)加 1。使用 if((y1==1000)amp。amp。(sbz==0)){ }設(shè)定 sboss 的初始位置,根據(jù)游戲設(shè)定,sboos 從屏幕上方倒飛入屏幕,所以 sboss 設(shè)定的初始位置(50,planepoup65),其中planepoup 為屏幕上邊緣的標(biāo)志位。最后,要將 sbz 賦值為 1,消除 sboos 不停設(shè)置初始位置的 BUG。當(dāng) sboss 飛入屏幕后,將 sbz 賦值為 2,以執(zhí)行下面的 if(sbz==2)語(yǔ)句。 在判斷語(yǔ)句 if(sbz==2)里,將根據(jù)玩家的位置自動(dòng)飛行。首先,根據(jù)玩家飛機(jī)的位置對(duì) sbmove 賦值,當(dāng) c1 在 sboos 的上、下、左、右時(shí),其對(duì)應(yīng)的值為4 在這 4 個(gè) if 語(yǔ)句中,要設(shè)置標(biāo)志位(smovebz==0)。設(shè)置這個(gè)標(biāo)志位的目的是防止 sboos 根據(jù) c1 的位置不停的改變運(yùn)行狀態(tài),即防止 sboos 成為跟蹤飛機(jī)。當(dāng) sboos 根據(jù) c1 的位置改變一次運(yùn)行方向后,smovebz 賦值為 1,即不檢測(cè) c1 的位置。只有 sboss 運(yùn)行到屏幕的邊緣時(shí),才將 smovebz 重新賦值為 0,使其可以再次通過(guò) c1 的位置決定 sboos 的運(yùn)行方向。當(dāng)玩家子彈擊中 sboss 后,使用 (1),此時(shí)飛機(jī)變紅,在本次 repaint 結(jié)束前,使用(0)使飛機(jī)變?yōu)楸緛?lái)顏色,而程序設(shè)定每 1/20 秒畫一次,由此得到飛機(jī)被擊中后變色的效果。( 參見圖
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1