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

正文內(nèi)容

基于eclipse平臺的飛機游戲的開發(fā)畢業(yè)論文設計(參考版)

2025-07-06 21:54本頁面
  

【正文】 在判斷語句 if(sbz==2)里,將根據(jù)玩家的位置自動飛 行。 最后,要將 sbz 賦值為 1,消除 sboos 不停設置初始位置的 BUG。amp。 游戲中的獎勵及相 關飛機的行為 根據(jù)游戲設定,當 y1=1000 時,會出現(xiàn)如圖 48 所示的飛機(sboss),當玩家擊落他后,屏幕會顯示 “援軍到達“,并且玩家剩余飛機數(shù)加 1。實際上, renderboss()是完全不需要的,只要在 render()函數(shù)中設置相關標志位就可以解決關尾的繪圖問題。 其中根據(jù) playerno 的值繪出玩家的飛機標志數(shù) (應該有更好方法,但是沒有想到 )當每次刷新繪圖頁面時,應使用GameCanvas 的 flushGraphics()將屏幕后臺的緩沖區(qū)內(nèi)的圖像刷新到前臺來 (flushGraphics()應該寫在 render(){ }的最后 )。 其次,使用()繪制屏幕上方的關卡信息、戰(zhàn)績、玩家剩余生命標志。 render()和 renderboss() 在方法 render()過程中,除了要重繪飛機、地圖、子彈外還要在上方繪制關卡信息、戰(zhàn)果、玩家飛機數(shù)、及無敵狀態(tài)時的無敵時間、大飛機生命條等。當程序循環(huán)運行 時 no,當一次發(fā)射了三組子彈后,只有某一組子彈消失,即 no 等于 1 后才能繼續(xù)發(fā)射子彈。z++)初始化該組子彈中的 3 發(fā)子彈,而設置子彈位置的函數(shù)應該在 if(huokebullet[i].no==1)語句外設置,因為當初設計的時候 mybullets 類里的函數(shù)寫成了一次設置三組子彈的形式。其次,檢測 huokebullet[i].no 是否等于1,當?shù)扔?1 時使用語句 for( int z=i。i=6。 根據(jù)游戲設定,玩家一次最多只能發(fā)三組子彈,并且子彈有射程限制 (在類 mybullets 中使用整型變量 no 表示 ),而當玩家按下 “開火 “鍵時,即 if((keystateamp。LEFT_PRESSED)==0)的作用是消除左、右飛后在上、下飛時飛機的形態(tài)不變的BUG。上、下、左的設置原理同上。 當 按方向鍵時,玩家飛機就向不同的方向運行,這需要使用 (int x,int y)函數(shù),當玩家控制飛機向左或右飛時,需要使 ()函數(shù)改變飛機的圖形 (參見圖 47,此時飛機右飛 )。 首先使用 if(inputno==0)判斷用戶的輸入是否 被禁止,如為真,則用戶輸入不被禁止。 在 if(planert==2)判斷語句中,使用語句 move(0,2)使飛機自己向上運動,使用 if(()(planepo24))判斷飛機是否到達屏幕最下方 (planepo 是屏幕下邊緣的坐標),如條件為真,則將 inputno 設置為 1,圖 47 圖 48 14 圖 410 表示鍵盤可用,將 planert 賦值為 3,使 其不再執(zhí)行以上各步。設定inputno=1,即飛入屏幕的過程中手機鍵盤是不可以用的。 當 playerno0 時,碰撞后,將變量 planert 賦值為 1,在之后的 if(planert==1)判斷語句中,重新設定玩家飛機的圖片和可視狀態(tài),同時使用 setPosition()函數(shù)設定玩家非的位置在屏幕下方。 玩家 4 次游戲機會的實現(xiàn)方法 根據(jù)游戲設置,玩家在每關中有共四次機會,當玩家飛機被擊中或撞擊爆炸后,程序首先檢測整型變量 playerno 的值,并根據(jù) playerno 的值決定屏幕右上角所畫玩家飛機標志的數(shù)量 (參考圖 48), playerno 的初始值設為 3,因為碰撞后才減 1,所以玩家共有 4 次機會,當 playerno0 時,游戲結束,同時將變量 pver賦值為 1, render()或 renderboss()函數(shù)中, over=1 代表在屏幕上GAMEOVER 等相關信息,同時,將整型變量 inputno 賦植為 1,以使手機的方向鍵失效,以消除玩家可 以控制爆炸圖像移動這個BUG。在按 “開火 ”鍵時,使用 setImage()函數(shù)將 huokebullets 重新設定為子彈圖片 (每次擊落敵機后屏幕上的爆炸效果有 3 團,并且按 “開火 ”后爆炸圖片就消失了,實際上 setVisavle(false)的應該是子彈數(shù)組,而對敵人精靈使用 setImage(),這樣效果會好一些 )。由于設計的問題,玩家 的子彈與敵機的碰撞檢測被寫在了 mybullets 類中,并 且只檢測第一發(fā)子彈是否與敵人相碰撞,如果碰撞為真時,則使用setVisible(false)函數(shù)將敵機隱藏,使用 setImage()函 數(shù) 將子彈精靈的三張圖片置換為爆炸圖片 ( 圖 48 )。使用 ()重新開始程序的循環(huán)。完成此項功能的語句子為 [0] =“再來一次” 。當用戶按下 “ 繼續(xù) ” 的時候, start()將重新產(chǎn)生一個線程繼續(xù)執(zhí)行相關的運算和畫面繪制。必須調用 start()方法的原因是: J2ME 的線程已 stop()方法拿掉,如果想停止線程的運做,就必須依靠一個旗標 (flag),在本程序中, flag 就是 boolean 型變量 conti。將 ”繼續(xù) “ 按紐 ” 添加進來。 在 mandAction()方法中,使用 getabel()方法獲取命令的標簽。 關于 mandAction()方法 每個創(chuàng)建 Command 實例的 J2ME 的應用程序也必須創(chuàng)建實現(xiàn) CommandListener 接口的實例。 conti 的作用在于控制是否 進行游戲畫面的重繪及其他需要在畫面重繪前進行的運算。同樣處于節(jié)約內(nèi)存的考慮, sboss 與 cboss 同用 3 個 Sprite 類對象 bossbullet0, 1, 2。所以在 gameScreen類的構造函數(shù)分配這 6 個 Sprite 類的存儲空間,并且使用 new Sprite(Image img, int width, int height)實例化這 6 個類變量。 gameScreen 類的構造函數(shù) gameScreen 類的構造函數(shù)要將游戲中出現(xiàn)的所有精靈都實例化,實際上,這種方法 嚴重的占用了內(nèi)存,但在當時,我并沒有意識到這一點。 在 run()函數(shù)中的 while(conti)中, 使用語句 y1=y1+1 使得每次繪圖都使 地圖下移 1 個象素。 地圖的移動 根據(jù)游戲的設定,游戲中地圖是向下移動的,實現(xiàn)此功能的方法如下: 首先,在使用 createBackGround()函數(shù)創(chuàng)建地圖數(shù)組時,用 (row+1)*16getHeight() 語句對整型變量 row2 賦值,其中 row+1 代表地圖有多 少列, 16 為地圖片的高度,而減去 getHeight()是因為要留出一個屏幕的可視區(qū)域,由于 J2ME 規(guī)定坐標系中下方向為正,所以使用語句 y1=row2 將row2 的數(shù)值變?yōu)樨摂?shù)。 畫出地圖后,由 ()將地圖添加到 LayerManager 類對象 lm 中。i++)取得, column 由語句 column=i%15 取進入游戲 y11550 pzbzover==0 顯示敵人 玩家被擊落了嗎 ? 玩家是否還有機會? 繼續(xù)游戲 是否過關 返回主界面 Y Y N Y Y N 圖 44 N 12 (0,y1) y1=y1+1。其中 i 的值由循環(huán) for(int i=0。在方法中,定義整型數(shù)組 map1[]以存儲 Cell 的索引值。先利用 TiledLayer 的構造函數(shù)建立 TiledLayer,根據(jù)構造函數(shù)的參數(shù)可以給定 Cell 數(shù)組 的大小,并且地圖圖片切割成等尺寸的畫面,并調用 setCell()設置具體的圖象格內(nèi)容。 TiledLayer 指的是由一塊一塊類似用瓷磚拼湊起來的畫面。 地圖的創(chuàng)建 由于手機存儲空間的限制,不可能將整張地圖完整地存儲在手機中,為了節(jié)約空間,往往提出地圖中相同的 圖片組成一張 PNG 格式的圖片,然后象拼圖一樣拼出地圖來,專業(yè)的游戲設計者往往自己寫一個地圖編輯器,以使拼圖過程不是那么痛苦。 gameScreen 類 包括了 LayerManager,這樣所有靜態(tài)和動態(tài)的圖象都不需要手動刷新,只需要在 LayerManager中加 入所有的需要控制的 精靈 ,在統(tǒng)一由 LayerManager 刷新即可 , 因此 ,在 gameScreen 中創(chuàng)建 LayerManager 的對象lm,并在構造函數(shù)中實例子化。其主邏輯如圖 44 所示。它運行在獨立的線程中,以恒定的頻率刷新畫面。 mybullets 類在 gameScreen 中建立了對象數(shù)組 huokebullet[9],代表玩家所能發(fā)射的 9 發(fā)子彈。類中定義的方法 setfirstposition()起到定義玩家子彈發(fā)射坐標的作用 (此方法在設計時起到的作用是消除每按一次開火玩家子彈位置就重新定位這個 BUG,但是,這個 BUG 完全 可以用設置標志位的方法消除 )。 11 Mybullets 類繼承 自 Sprite 類,以實現(xiàn)玩家子彈的相關功能。 當移動選項條到某項,并點擊 ok 時,在 mandAction()方法中根據(jù) menuIndex 的值判斷選擇了哪個選項,列如當選擇“相關信息 ”時,將調用 lzhhdm 類中的 renwuShow()方法以顯示“相關信息” 界面(圖 43),在 renwuShow()方法中, Form 類對象 a=null,表示清空 Form,并重新調用用 append()方法在表單上放置 StringItem 類的實例以顯 示游戲關于信息, “游戲幫助” 界面的顯示與 “相關信息” 界面相同,只不過調用的是 helpShow()方法。當玩家按住上或下鍵時,在函數(shù)keyPressed(int code)中的整型變量 menuIndex 相應的減 1 或加 1,相應的,在 paint()函數(shù)中會根據(jù)menuIndex 繪制選項是否被選中。在類 menuscreen 中定義了 lowColor 和 highColor、 highBGColor 三個整型變量及布爾型變量 co。當玩家點擊 ok 后將調用 (menuscreen) 以顯示游戲菜單 menuscreen(圖 42)。調用 addCommand()命令建立 ok命令與 Form 之間的關聯(lián),調用 setCommandListener()命令使 Form 與 CommandListener 建立關聯(lián)。使用語句 ok=new Command(ok,1)。本程序主類為lzhhdm, 并實現(xiàn)接口 CommandListener。該類中擁有可以管理程序的創(chuàng)建、開始、暫停(手機中很可能有正在運行程序卻突然來電的情況,這時應進入暫停狀態(tài)。 10 圖 41 圖 42 圖 43 4 程序分析和具體實現(xiàn) 游戲進入前的選擇 每個 MIDlet 程序都必須有一個主類,該類必須繼承自 MIDlet。對游戲基本算法等做了詳細敘述?;煜?,體積大約能減少 25%,這對當前費用較貴的無線網(wǎng)絡傳輸是有一定意義的。 混淆器的作用不僅僅是保護代碼,它也有精簡編譯后程序大小的作用。 由此引入混淆器的概念。目前流行的如 decode, JAD 等反編譯工 具可以以很快的速度生成源文件。它包括了所有的信息。在程序運行中也可以調用 System 類的gc()函數(shù)手動收回廢棄的內(nèi)存。其中,允許強制垃圾回收 (Garbage Collection)。 包括內(nèi)存狀況的檢測(手機上的內(nèi)存空間十分有限,必須時刻關注機載內(nèi)存是否大于程序所能使用到的最大可能的內(nèi)存空間),網(wǎng)絡狀況的檢測,運行函數(shù)的跟蹤等。 將 PNG 格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了頭文件的大小,將比合并前的總大小減少許多。 (4)盡量不使用靜態(tài)變量。所有這些可以借助混淆器來幫助實現(xiàn) (2)所有代碼寫為一個類。 內(nèi)存的優(yōu)化 手機內(nèi)存空間小,所以在程序設計時應該注意以下幾點,以盡量減少內(nèi)存的使用: (1)盡量縮短命名的長度。 使用每組子彈的第一發(fā)作為與敵人進行碰撞檢測的精靈,同時相關的標志位也設在第一發(fā)子彈中。由于本游戲僅有一關,所以子彈速度設定的差別沒有體現(xiàn)出來??上в捎跁r間關系沒 有實現(xiàn)。 在關尾出現(xiàn)的 BOSS,其在屏幕上方左右移動并發(fā)射子彈。 在游戲進 行中出現(xiàn)的大型飛機,由于其不可能立即被擊落,所以應該設置其的運行方法,理論上講還是根據(jù)玩家飛機的坐標,但是,在此設置一個標志位,使得敵人在取的玩家位置后即開始玩家方向運動,這期間,將不執(zhí)行取得玩家飛機位置重設飛行方向的步驟。 在普通敵機中,有一組敵機的其中一架具有跟蹤功能,其原理為:當其進入屏幕后,根據(jù)玩家飛機的
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1