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

正文內(nèi)容

基于j2me手機(jī)坦克大戰(zhàn)游戲設(shè)計(jì)與開發(fā)畢業(yè)論文(參考版)

2025-07-06 19:43本頁面
  

【正文】 構(gòu)造函數(shù)中,需初始化地。其他的,如 記分統(tǒng)計(jì)畫面也都需在此主邏輯中建立相 應(yīng)對(duì)象。它們分別為: Enemy和 Hero。其主邏輯如圖 12 所示。刷新速度需大于 30 毫秒才能使畫面顯示因人眼的暫時(shí)停留效應(yīng)流暢運(yùn)行。 21 主 游戲邏輯及涉及到的若干類 TankCanvas 主管著所有類之間的協(xié)調(diào),決定何時(shí)死亡,何時(shí)分配新的敵人,及控制敵人出現(xiàn)處的閃光圖標(biāo)、游戲結(jié)束后的顯示字樣。在本程序中主要?jiǎng)澐譃?8 個(gè)類: TankCanvas、 TankMIDlet、 Enemy、 SoundPlayer、 EnemyPool、 Hero、Bonous、 Bullet。在難度選擇界面玩家可以自由選擇普通模式和困難模式,普通模式屏幕上最多出現(xiàn)的敵方坦克數(shù)為 5,而困難模式屏幕上能出現(xiàn)的最大坦克數(shù)為 7。 在本程序開始的界面中,先由下而上先顯示出本程序的片頭圖片: BattleCity,在圖片顯示動(dòng)畫結(jié)束之后會(huì)顯示出供玩家選擇的三個(gè)選項(xiàng)按鈕,它們分別為:PLAY、 DIFFICALTY、 CONSTRUCTION 代表著開始游戲、難度選擇和游戲說明。在設(shè)置好 mandlistener 后,需要調(diào)用 setCommandListener()以將按鈕事件激活。繼承了 mandListener 的類必須擁有 mandAction()以決定對(duì)按鍵采取什么樣的行為。游戲的啟動(dòng)選項(xiàng)畫面在 TankCanvas 類中,在控制主程序運(yùn)行的 MIDlet 中, startApp()函數(shù)隨即調(diào)用了 Displayable 的 setCurrent()函數(shù)將當(dāng)前屏幕設(shè)置為 TankCanvas。)、結(jié)束的函數(shù)。它控制著整個(gè)程序的運(yùn)行,并且可以通過相應(yīng)函數(shù)從程序描述文件中獲取相關(guān)的信息。由于專業(yè)限制本設(shè)計(jì)所有地圖美工文件和聲音文件均是由朋友提供。 20 第五章 程序分析和具體實(shí)現(xiàn) 游戲總體 控制類 此次設(shè)計(jì)的坦克大戰(zhàn)總共 20 關(guān),每關(guān)會(huì)有不同的地圖,同時(shí) 要考慮其中的地圖元素。目前流行的 Obfuscator 有 RetroGuard 等 [15]。混淆后,體積大約能減少 25%,這對(duì)當(dāng)前費(fèi)用較貴的無線網(wǎng)絡(luò)傳輸是有一定意義的。 混淆器的作用不僅僅是保護(hù)代碼,它也有精簡(jiǎn)編譯后程序大小的作用。 由此引入混淆器的概念。目前流行的如 decode, JAD 等反編譯工具可以以很快的速度生成源文件。它包括了所有的信息。這樣在處理起來就會(huì)更加流暢和節(jié)省運(yùn)行時(shí)間。 第三是減少圖形數(shù)據(jù)的大小。所有這些可以借助混淆器來幫助實(shí)現(xiàn)。 為了避免這種情況的發(fā)生,我們找出了幾種 方法: 第一,就是盡量縮短命名的長(zhǎng)度。 其中前兩種是持久性的內(nèi)存,關(guān)閉電源后還能保持?jǐn)?shù)據(jù)的正確性,通常這兩種內(nèi)存所能存儲(chǔ)的容量是合并計(jì)算的,這個(gè)上限對(duì)每種手機(jī)都不一樣,大部分在一兩 百 KB 內(nèi)。 } else { … } } 當(dāng)釋放手機(jī)操作鍵盤上被按下的按鍵時(shí),則會(huì)觸發(fā)這個(gè) key 事件,系統(tǒng)并會(huì)自動(dòng)交由 keyReleased( )方法來處理該事件,同樣的上面的這段代碼中,該方法判斷了所按的按鍵值是否大于 0,如果大于 0 則輸出所釋放的手機(jī)鍵盤上的被按下的按鍵的實(shí)際鍵值,否則執(zhí)行其他的操作任務(wù)。它是用來處理手機(jī)操作鍵盤上的按鍵被釋放的事件,這個(gè)方法也同樣沒有與之對(duì)應(yīng)的顯示的聽眾,這些聽眾也是由系統(tǒng)根據(jù)實(shí)際對(duì)象 提供的。 在本程序中 KeyPressed( )方法應(yīng)用于整個(gè)程序的各個(gè)可交互界面,如菜單部分,選關(guān)部分和游戲部分等等。簡(jiǎn)單的一個(gè)樣例代碼: //監(jiān)聽按鍵信息并處理按鍵 public void keyPressed (int keyCode) { if (keyCode 0) { } } //輸出當(dāng)前被按下鍵的鍵碼 System. (“keyPressed ” +( (char) keyCode ) )。 在鍵盤響應(yīng)中又分為監(jiān)聽按鍵處理和放開按鍵處理,本章接下面將以更詳細(xì)的內(nèi)容來介紹這兩個(gè)部分。由于開發(fā) 手機(jī)游戲時(shí)我們主要用到的是 Key 事件的處理方法,因?yàn)橐苿?dòng)設(shè)備的鍵盤是傳遞用戶意圖的最主要的輸入設(shè)備, Key 事件屬于低層事件。低層事件一般用來處理設(shè)備事件,如:按鍵事件、探針事件。繪制動(dòng)畫時(shí)經(jīng)常需要不斷地更新畫面,而更新畫面的操作就是先將屏幕 以 fillRect()的方式清除,再將下一張圖片畫在屏幕上,然而反復(fù)的清除及重繪會(huì)造成屏幕的閃爍現(xiàn)象 (flicker),因此使用雙重緩沖的好處就是在背景進(jìn)行這個(gè)清除及重繪的操作,再將完成的繪圖拷貝到屏幕上,由于用戶看不到清除的操作,因此就不會(huì)出現(xiàn)閃爍的現(xiàn)象了。 Image 類提供了一個(gè)建立背景的靜態(tài)方法 createImage(int width, int height),再利用 getGraphics()方法取得屬于這個(gè)背景的 Graphics 對(duì)象,所進(jìn)行的繪圖操作都會(huì)作用在背景上,等到全部的繪圖操作完成后,再調(diào)用 drawImage()方法將背景的數(shù)據(jù)復(fù)制到實(shí)際顯示的屏幕上。 雙緩沖技術(shù) 在沒有 前,進(jìn)行游戲繪圖一般需要手動(dòng)編程使用雙緩沖。使用 Image 類中的 createImage 函數(shù)可從整圖中分割出所需要的元素。 PNG 格式圖片中包含許多定義其圖片特性的冗余部分 (Chunks)。其對(duì)象會(huì)被傳給 Canvas 的 paint()函數(shù),以便最終顯示。針對(duì)不同的需要,Graphics 類中提供了用于描繪線條、繪制和填充矩形或圓角矩形、繪制和填充圓弧以及文本和圖像的方法。本程序中,操縱用戶坦克運(yùn)行的按鍵都定義為游戲控制鍵,這樣便能適應(yīng)所有的機(jī)器 [13]。鍵盤事件由鍵代碼指定,但這樣控制游戲會(huì)導(dǎo)致缺乏通用性,并不是每個(gè)設(shè)備的鍵盤布局都適合游戲的操作。從程序開發(fā)的觀點(diǎn)看, Canvas 類可與高級(jí) Screen 類交互,程序可在需要時(shí)在 Canvas 中摻入高級(jí)類的組件。它的基本用法與其他 Displayable 對(duì)象一致。 用戶利用這些低級(jí) API 可對(duì)設(shè)備精確控制,如繪制像素 ,接受原始的用戶輸入事件等。 以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。 、結(jié)束、以及游戲中信息的布局作為一個(gè)游戲的重要部分。由于設(shè)備的限制,實(shí)現(xiàn) FC 版所有功能將會(huì)產(chǎn)生比較龐 大的數(shù)據(jù),因此簡(jiǎn)化部分功能也是需要詳細(xì)考慮。 除開發(fā)過程中對(duì)結(jié)構(gòu)上的控制 、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器 (Obfuscator)進(jìn)行程序打包后的優(yōu)化。手機(jī)中由于處理器和內(nèi)存 空間、存儲(chǔ)空間都十分有限,其數(shù)據(jù)庫(kù)結(jié)構(gòu)較為簡(jiǎn)單,與普通 PC 大相徑庭。如何采用合理的記分標(biāo)準(zhǔn),需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)。每一次刷新頁面、每前進(jìn)一步都需要將所有的周圍環(huán)境都進(jìn)行掃描。如此過多的 程序 同時(shí)在本來效率就不高的 KVM 虛擬機(jī)上運(yùn)行,也許會(huì)導(dǎo)致程序的緩慢。這需要對(duì)所有的對(duì)象有較好的控制。 ,子彈也需要處在獨(dú)立的 程序 中。本次設(shè)計(jì)由于是一個(gè)人獨(dú)立開發(fā),不可能具有全面的才華,因此需要從自身以外的地方獲取資料。 ,而是眾多領(lǐng)域的綜合體。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。 子彈 不發(fā)生碰撞 碰撞后發(fā)生爆炸,同時(shí)石磚消失 碰撞后發(fā)生爆炸,子彈消失 碰撞后發(fā)生爆炸,同時(shí)子彈消失 草叢與森林 石磚 石頭 坦克 背景 圖 8 坦克的邏 輯設(shè)計(jì) 14 第四章 坦克大戰(zhàn)的相關(guān)技術(shù) 應(yīng)用 程序需解決的技術(shù)問題 ,因?yàn)槠浯a利用率很高。對(duì)磚墻將有能力將其擊毀,使之在畫面上消失;對(duì)水泥鋼筋將不能發(fā)生作用,子彈也不能通過;對(duì)于草叢,子彈和坦克都可以通過。這樣較多的運(yùn)算也將不可避免的耗費(fèi)大量 CPU 時(shí)間。敵人之間顯然,如上已經(jīng)提過,不坦克 玩家坦克 敵方坦克 電腦 碰撞 無反應(yīng) 向下 向上 向左 向右 開火鍵 向下移動(dòng) 向上移動(dòng) 向左移動(dòng) 向右移動(dòng) 發(fā)射子彈 轉(zhuǎn)向 按鍵盤 圖 7 坦克的邏輯設(shè)計(jì) 13 需要檢測(cè),但敵人與玩家之間應(yīng)當(dāng)可以互相消除子彈,以便在狹窄的路口中仍有存活的機(jī)會(huì)。如果來自玩家,則每一步需掃描所有的敵方坦克,檢查是否發(fā)生碰撞,這可能會(huì)花費(fèi)不少的 CPU 時(shí)間。子彈使用的是象素級(jí)的碰撞檢測(cè),因?yàn)樽?彈的圖片形狀不規(guī)則,如果使用矩形碰撞檢測(cè),將有可能在子彈尚未接觸到物體時(shí)就已返回碰撞的真值。 子彈 是一個(gè)繼承了虛類的可運(yùn)行單獨(dú)線程的對(duì)象。 N Y 子彈控制的設(shè)計(jì)思路 子彈的行為是雙方坦克的共同行為,每一個(gè)坦克都有他自己的一顆子彈,這顆子 彈在任何一輛坦克被構(gòu)造時(shí)就一直存在,在坦克發(fā)射子彈前,其圖像被設(shè)置為不可見,并且該子彈在只有直至和障礙物發(fā)生碰撞或坦克生命的結(jié)束時(shí)才消滅,子彈的再次出現(xiàn),只是將屏幕上暫時(shí)掩蓋的圖象重新置于坦克炮筒才恰當(dāng)位置,并使其顯示出來,向坦克前進(jìn)的方向前進(jìn),這與現(xiàn)實(shí)中每個(gè)子彈都是單獨(dú)的個(gè)體有所不同。這是允許的,但需要對(duì)他們標(biāo)注狀態(tài),即當(dāng)坦克剛出現(xiàn)時(shí)暫時(shí)允許重合,一旦在某個(gè)時(shí)間他們脫離了重合狀態(tài),就不能在允許重 合,如果不設(shè)置這樣的判斷,剛出現(xiàn)的坦克將會(huì)因?yàn)槭艿阶枞?12 永遠(yuǎn)不能前進(jìn),坦克將混成一團(tuán)。另外,坦克的發(fā)炮間隔和轉(zhuǎn)后的具體方向都由隨機(jī)數(shù)決定。需要指出的是,當(dāng)發(fā)生阻礙不能在不變方向的情況下繼續(xù)行走時(shí),并不一定立即需要采取轉(zhuǎn)向的對(duì)策。 敵方坦克由于需要具有一定的智能性,以便對(duì)玩家攻擊,使之具有一定的可玩性。敵方按照規(guī)則不能和用戶坦克重合,則它每行走一步就需要把用戶坦克掃描一次,判斷其是否碰撞到了用戶的坦克。它決定了游戲何時(shí)該結(jié)束,何時(shí)分配敵人數(shù)量,游戲結(jié)束字樣的閃現(xiàn)規(guī)則,地圖的繪制及整個(gè)游戲的調(diào)度。閃過后載入 TankCanvas 類,為用戶提供可選擇的選項(xiàng)。 TankMidlet 類是繼承自 MIDlet 的控制主程序啟動(dòng)的首先被載入系統(tǒng)的部分。以便程序進(jìn)入相關(guān)的分支執(zhí)行相關(guān)的反應(yīng)代碼,結(jié)束游戲或統(tǒng)計(jì)分?jǐn)?shù)等。用戶再次發(fā)射 子彈時(shí)只是將終止的線程再次激活。敵方坦克將在游戲開始時(shí)逐漸新增線程,每增加一個(gè)敵方對(duì)象就新增加一條線程,一旦線程數(shù)滿到最大值(本程序暫設(shè)置為 5 和 7),就不允許敵人再繼續(xù)出現(xiàn)。在主程序運(yùn)行的線程中,畫面刷新將以一定的頻率采用雙緩沖技術(shù)對(duì)屏幕重繪,實(shí)時(shí)反映整個(gè)游戲的進(jìn)行狀態(tài)。這三種狀態(tài)的轉(zhuǎn)換關(guān)系如圖所示 [11] 消減狀態(tài) (Destroyed) 停止?fàn)顟B(tài) (Paused) 運(yùn)行狀態(tài) (Active) StartApp () DestroyApp () DestroyApp () PauseApp() 圖 5 MIDlet 的流程 10 下面就是主程序 邏輯 圖 Y Y N N N 開始 創(chuàng)建程序主體框架,定義游戲的變量與實(shí)例 定義游戲的變量與實(shí)例 顯示游戲選項(xiàng)菜單 選擇 PLAY 難度選擇 游戲說明 選擇 exit 選擇游戲難度 顯示說明信息 按下確定鍵 讀取場(chǎng)景,設(shè)置玩家初始位置 移動(dòng)玩家坦克 玩家坦克發(fā)射子彈 邏輯操作 敵方坦克隨即移動(dòng)并隨即發(fā)射子彈 隨即產(chǎn)生新的坦克 炸彈自動(dòng)飛行,爆炸后自動(dòng)播放 對(duì)各種對(duì)象間的碰撞進(jìn)行檢測(cè) 根據(jù)檢測(cè)結(jié)構(gòu)對(duì)各個(gè)對(duì)象進(jìn)行處理 對(duì)摧毀坦克數(shù)量與游戲結(jié)束的標(biāo)志進(jìn) 行設(shè)置 顯示游戲畫面 玩家失敗 玩家勝利 進(jìn)入下一關(guān)游戲 返回主界面 結(jié)束游戲,退出 按下開火鍵 按下方向鍵 顯示下一關(guān)菜單 圖 6 坦克大戰(zhàn)主程序流程圖 11 本程序采用面向?qū)ο蟮脑O(shè)計(jì)模式,對(duì)游戲中的所有物體賦予對(duì)象的概念和屬性。 每個(gè) MIDlet 都必須繼承 , 這個(gè) MIDlet 抽象類。 坦克大戰(zhàn)的開發(fā)流程 MIDlet suite 是 MIDP 應(yīng)用程序的最小單位, JAM 負(fù)責(zé)將手機(jī)內(nèi)的 MIDlet suite 以圖形化的方式呈現(xiàn),讓用戶能夠選取欲執(zhí)行的 MIDlet suite,一旦選取了某個(gè) MIDlet suite,操作系統(tǒng)就會(huì)激活 KVM 執(zhí)行里面的 MIDlet。 ( 4) 詳細(xì)設(shè)計(jì):包括框架設(shè)計(jì)、圖像設(shè)計(jì)、具體方案、初步測(cè)試等。 ( 2) 方案分析:市場(chǎng)商業(yè)評(píng)估與開發(fā)難度評(píng)估。 本章小結(jié) 本章首先給出了本次畢業(yè)設(shè)計(jì)所用到的系統(tǒng)編程軟件和環(huán)境,接著對(duì) J2ME有了一個(gè)簡(jiǎn)單的描述,其次是對(duì) J2ME 平臺(tái)的體系結(jié)構(gòu)進(jìn)行了比較系統(tǒng)的研究,最后著重論述了 J2ME 移動(dòng)應(yīng)用程序的開發(fā)流程及部署方法。 (5)在模擬器或手機(jī)上安裝運(yùn)行:在生成了應(yīng)用程序的 jar 及 jad 文件后,就
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1