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

正文內(nèi)容

j2me手機游戲開發(fā)畢業(yè)設(shè)計(doc畢業(yè)設(shè)計論文)-閱讀頁

2025-07-09 02:32本頁面
  

【正文】 column)/15 取得。由于地圖位于 Layer 的最低層,即離用戶視線最遠的層,所以 Tiledlayer 最后一個被添加到 lm 中。 其次,render()函數(shù)中,使用 (0,0,getWidth(),getHeight()+10000)設(shè)定可視區(qū)域的范圍,(0,0)表示 View Window 的起始坐標,(getWidth() ,getHeight()+10000) 使用 (g,0,y1)決定View Window 從屏幕的哪里畫起。(參考圖 46) gameScreen類的構(gòu)造函數(shù)gameScreen 類的構(gòu)造函數(shù)要將游戲中出現(xiàn)的所有精靈都實例化,實際上,這種方法嚴重的占用了內(nèi)存,但在當時,我并沒有意識到這一點。所以在 gameScreen 類的構(gòu)造函數(shù)分配這 6 個 Sprite 類的存儲空間,并且使用 new Sprite(Image img, int width,int height)實例化這 6 個類變量。同樣處于節(jié)約內(nèi)存的考慮,sboss 與 cboss 同用 3 個 Sprite 類對象 bossbullet0,1,2。conti 的作用在于控制是否進行游戲畫面的重繪及其他需要在畫面重繪前進行的運算。 關(guān)于 mandAction()方法每個創(chuàng)建 Command 實例的 J2ME 的應(yīng)用程序也必須創(chuàng)建實現(xiàn) CommandListener 接口的實例。在 mandAction()方法中,使用 getabel()方法獲取命令的標簽。將”繼續(xù)“按紐”添加進來。必須調(diào)用 start()方法的原因是:J2ME 的線程已 stop()方法拿掉,如果想停止線程的運做,就必須依靠一個旗標(flag),在本程序中,flag 就是 boolean 型變量conti。當用戶按下“繼續(xù)”的時候,start()將重新產(chǎn)生一個線程繼續(xù)執(zhí)行相關(guān)的運算和畫面繪制。完成此項功能的語句子為 [0] =”重新開始”。使用 ()重新開始程序的循環(huán)。由于設(shè)計的問題,玩家發(fā)射的子彈與普通敵機的碰撞檢測被寫在了 mybullets 類中,并且只檢測第一發(fā)子彈是否與敵人相碰撞,如果碰撞為真時,則使用 setVisible(false)函數(shù)將敵機隱藏,使用 setImage()函數(shù)將子彈精靈的三張圖片置換為爆炸圖片( 圖 48 )。在按“開火”鍵時,使 用setImage()函數(shù)將 huokebullets 重新設(shè)定為子彈圖片(每次擊落敵機后屏幕上的爆炸效果有 3 團,并且按“開火”后爆炸圖片就消失了,實際上 setVisavle(false)的應(yīng)該是子彈數(shù)組,而對敵人精靈使用 setImage(),這樣效果會好一些)。 玩家 4次游戲機會的實現(xiàn)方法 根據(jù)游戲設(shè)置,玩家在每關(guān)中有共四次機會,當玩家飛機被擊中或撞擊爆炸后,程序首先檢測整型變量 playerno 的值,并根據(jù) playerno 的值決定屏幕右上角所畫玩家飛機標志的數(shù)量(參考圖 48),playerno 的初始值設(shè)為 3,因為碰撞后才減 1,所以玩家共有 4 次機會,當 playerno0 時,游戲結(jié)束,同時將變量 pver 賦值為 1,render()或renderboss()函數(shù)中,over=1 代表在屏幕上 GAMEOVER 等相關(guān)信息,同時,將整型變量inputno 賦植為 1,以使手機的方向鍵失效,以消除玩家可以控制爆炸圖像移動這個BUG。J2ME 手 機 游 戲 開 發(fā) 與 設(shè) 計畢業(yè)設(shè)計 第 20 頁圖 48 游戲界面 當 playerno0 時,碰撞后,將變量 planert 賦值為 1,在之后的 if(planert==1)判斷語句中,重新設(shè)定玩家飛機的圖片和可視狀態(tài),同時使用 setPosition()函數(shù)設(shè)定玩家非的位置在屏幕下方。設(shè)定 inputno=1,即飛入屏幕的過程中手機鍵盤是不可以用的。 在 if(planert==2)判斷語句中,使用語句 move(0,2)使飛機自己向上運動,使用 if(()(planepo24))判斷飛機是否到達屏幕最下方(planepo是屏幕下邊緣的坐標),如條件為真,則將 inputno設(shè)置為 1,表示鍵盤可用,將 planert 賦值為 3,使其不再執(zhí)行以上各步。首先使用 if(inputno==0)判斷用戶的輸入是否被禁止,如為真,則用戶輸入不被禁止。當玩家按方向鍵時,玩家飛機就向不同的方向運行,這需要使用 (int x,int y)函數(shù),當玩家控制飛機向左或右飛時,需要使 ()函數(shù)改變飛機的圖形(參見圖 47,此時飛機右飛)。上、下、左的設(shè)置原理同上。LEFT_PRESSED)==0)的作用是消除左、右飛后在上、下飛時飛機的形態(tài)不變的 BUG。根據(jù)游戲設(shè)定,玩家一次最多只能發(fā)三組子彈,并且子彈有射程限制(在類mybullets 中使用整型變量 no 表示),而當玩家按下“開火“鍵時,即if((keystateamp。i=6。其次,檢測huokebullet[i].no 是否等于 1,當?shù)扔?1 時使用語句 for( int z=i。z++)初始化該組子彈中的 3 發(fā)子彈,而設(shè)置子彈位置的函數(shù)應(yīng)該在 if(huokebullet[i].no==1)語句外設(shè)置,因為當初設(shè)計的時候 mybullets 類里的函數(shù)寫成了一次設(shè)置三組子彈的形式。當程序循環(huán)運行時 no,當一次發(fā)射了三組子彈后,只有某一組子彈消失,即 no 等于 1 后才能繼續(xù)發(fā)射子彈。 render()和 renderboss()在方法 render()過程中,除了要重繪飛機、地圖、子彈外還要在上方繪制關(guān)卡信息、戰(zhàn)果、玩家飛機數(shù)、及無敵狀態(tài)時的無敵時間、大飛機生命條等。其次,使用 ()繪制屏幕上方的關(guān)卡信息、戰(zhàn)績、玩家剩余生命標志。其中根據(jù) playerno 的值繪出玩家的飛機標志數(shù)(應(yīng)該有更好方法,但是沒有想到 )當每次刷新繪圖頁面時,應(yīng)使用 GameCanvas 的 flushGraphics()將屏幕后臺的緩沖區(qū)內(nèi)的圖像刷新到前臺來(flushGraphics()應(yīng)該寫在 render(){ }的最后)。實際上,renderboss()是完全不需要的,只要在 render()函數(shù)中設(shè)置相關(guān)標志位就可以解決關(guān)尾的繪圖問題。 游戲中的獎勵及相關(guān)飛機的行為 根據(jù)游戲設(shè)定,當 y1=1000 時,會出現(xiàn)如圖 48所示的飛機(sboss),當玩家擊落他后,屏幕會顯示“援軍到達“,并且玩家剩余飛機數(shù)加 1。amp。最后,要將 sbz 賦值為 1,消除 sboos 不停設(shè)置初始位置的 BUG。 在判斷語句 if(sbz==2)里,將根據(jù)玩家的位置自動飛行。設(shè)置這個標志位的目的是防止 sboos 根據(jù) c1 的位置不停的改變運行狀態(tài),即防止 sboos 成為跟蹤飛機。只有 sboss 運行到屏幕的邊緣時,才將 smovebz 重新賦值為 0,使其可以再次通過 c1 的位置決定 sboos 的運行方向。(參見圖 410)。 sboss 與 cboss 共用 3 發(fā)子彈,因為當 sboss 出現(xiàn)時,離關(guān)尾還遠,所以,為了提高效率,采用這種方法。同時,玩家生命標志 playerno 加 1,sbz 賦值為1,使得sboos 無法發(fā)射子彈,sbpzbz 賦值為 1,使得玩家的子彈不與 sboos 進行碰撞檢測。 如果玩家被擊落后并沒有點“返回“,而此時,背景會一直運動到關(guān)尾,考慮到其圖 49J2ME 手 機 游 戲 開 發(fā) 與 設(shè) 計畢業(yè)設(shè)計 第 23 頁與關(guān)尾 BOSS 共用 3 發(fā)子彈,如 sboos 不消失,將會出現(xiàn)子彈亂飛的情況。同時調(diào)用 (0,3),使 sboos 快速飛出屏幕,直到判斷語句 if(()65)為真時,調(diào)用下面的函數(shù)setVisable(false),使得 sboos 不可見。 首先在程序中首先定義了 aik、aip 兩個 Random()類對象,ai 和 aipp 兩個整型變量。 情況 1:使用 aipp=()%5 取得隨機數(shù) aipp,根據(jù)下面三條語句設(shè)置飛機的出現(xiàn)位置:(100aipp*30,planepoup+24)。 (100+aipp*30,planepoup24)。當 aipp0 時,向右下方運動,實現(xiàn)方法同上。當 kkk〈0 時,飛機掉頭向上飛,其中setFrame(3),move(4,0)。當 kkk〈0 時,飛機只向左轉(zhuǎn)。 情況 4:初始位置設(shè)置方法同情況 1。amp。amp。 以上四種情況的最后,都將使用函數(shù) nextInt()產(chǎn)生 ai,aipp 的值。 如,執(zhí)行情況 1,首先執(zhí)行判斷語句 if(jb[0]==1),在此語句中,首先使用setVisable (true)函數(shù)將敵人飛機設(shè)置為可見的,并根據(jù)上次運行的 qipp 的值設(shè)置敵人飛機的初始位置最后,jb[0]賦值為 2。當飛機飛出屏幕時,jb[0]賦值為 3。因為當4 種情況都出現(xiàn)一便的時候,標志位 jb[]里的數(shù)值都將變?yōu)?3,如果不將其重新賦值為1,敵人飛機將只能出現(xiàn) 4 次。 普通敵人是否發(fā)射子彈由以下語句 if(((()=()18)||((() 6)=()))amp。 如果 jpb 的值為 0,則判斷語句 if(jpb==0)里的 move()語句將一直執(zhí)行下去。 白云的實現(xiàn)原理 為了游戲界面更加美觀,程序中設(shè)定了精靈數(shù)組 cloud[i]來表示白云,由于白云應(yīng)該在所有飛機的上方,即 cloud[i]應(yīng)該最早被 append()到 LayerManager 中,或者使用insert (cloud[],0)在索引數(shù)值 0 處插入 Layer,本程序采用了第一種方法,即在gameScreen 類的構(gòu)造函數(shù)中按游戲設(shè)置的順序使用 ()加入到 LayerManager 之中。首先設(shè)置白云的初始位置,其語句如下:cloud[0].setPosition(25,planepoup(65))。cloud[2].setPosition(112,planepoup(90))。cloud[4].setPosition(223,planepoup(70))。所以的白云的起始位置在每次游戲開始時是固定的。如果為真則使用 cloud[].setPosition(cloudposition*40,planepoup)設(shè)置白云的位置,其中,cloudposition=()%5,aicloud 為 Random()類對象。以達成白云的隨機出現(xiàn)效果。BOSS 生命進度條由以下語句繪制:(255,0,0)。//生命進度條背靜紅 (255,255,255)。//生命進度條前景白其中 bosslife 記錄著 BOSS 的生命值,其初始值為 0,當玩家每擊中一次 BOSS,其值加5,即化出白色進度條,當 bosslife==60 時,表示過關(guān),除玩家飛機與子彈外的其他Sprite 均使用 setVisable(false)使其不在顯示,同樣的 pzbz 要賦予 1,以消除玩家飛機還能與敵人碰撞的 BUG。同理如果()(getWidth()()),則表示其在屏幕右方出界,應(yīng)改為左飛。amp。而((()=()10)||(()=()+60)表示當玩家飛機處于 BOSS 的左右各 10 個象素的范圍內(nèi)時。關(guān)尾參見圖 410。對游戲有關(guān)的各運行面也做了展示。圖 51 新建項目后,將 Eclipse 文件拷入 src 文件夾, 文件拷入class 文件夾(需要新建),將 pic 文件夾拷入 res 文件夾,點擊生成,如一切正常,將如圖片 52 所示。如圖 53 所示。運行 Motorola SDK for J2ME,使用 MOTOA760 手機模擬器進行測試。點擊 Lanuch 按紐,進入如圖 55 的界面,即可以進行游戲測試了。實際上,幾乎每一版本都會產(chǎn)生很多 BUG。即使是作為操作系統(tǒng)的各種版本的 Windows 也時常會發(fā)生許多類型的錯誤和漏洞。; 左側(cè)子彈發(fā)射后不停在原位置刷新問題;7. 游戲運行一段時間后變的很卡; 其中,4 條 BUG 已經(jīng)解決(方法已在第 4 章相關(guān)位置進行了說明)。第 7 條以現(xiàn)有水平無法解決,因為出現(xiàn)這種情況的原因估計是內(nèi)存的問題,而由于水平的關(guān)系,現(xiàn)在的代碼變量過多,并且效率低下,有很多重復(fù)的地方,解決的方法只能是在水平提高的情況下重寫整個程序。即使刷屏沒有間隔也不會提高速度; 2. 最好有接寶物的設(shè)置,增強可玩性; 3. 由于沒由合適的圖片,使得敵人設(shè)置單一; 4. 地圖本應(yīng)由外部文件讀入,但設(shè)計初期并沒有掌握這項技術(shù); 5. 手機游戲最好只有一個類,而我卻有 4 個; 7. 沒有添加成績記錄,即英雄榜; 6. 最大的遺憾,敵人不夠智能化。 圖 55圖 55J2ME 手 機 游 戲 開 發(fā) 與 設(shè) 計畢業(yè)設(shè)計 第 31 頁6 總結(jié) 本程序的總結(jié)和展望 本程序設(shè)計實現(xiàn)了手機上以 J2ME 為平臺的飛行射擊游戲的開發(fā),敵人運行的方式由程序進行控制,具有一定的可玩性和復(fù)雜性。 但是我的水平實在有限,在第 5 章列舉的眾多 BUG 和遺憾就可以看出這一點來,但我相信,隨著時間的推移,個人水平的增長,我一定會重寫這個程序
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1