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

正文內(nèi)容

基于j2me手機(jī)坦克大戰(zhàn)游戲設(shè)計(jì)與開(kāi)發(fā)畢業(yè)論文(編輯修改稿)

2025-07-16 12:33 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 動(dòng)設(shè)備上運(yùn)行即可。(5)在模擬器或手機(jī)上安裝運(yùn)行:在生成了應(yīng)用程序的jar及jad文件后,就可以把它們放到模擬器或手機(jī)上運(yùn)行了。對(duì)于如何將其部署到到手機(jī)上,根據(jù)手機(jī)的功能不同,通常可以選擇如下方法:使用數(shù)據(jù)線、使用紅外線、使用藍(lán)牙或者使用OTA技術(shù)下載安裝。 本章小結(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)用程序的開(kāi)發(fā)流程及部署方法。第三章 坦克大戰(zhàn)的設(shè)計(jì)流程和設(shè)計(jì)思路 坦克大戰(zhàn)手機(jī)游戲的設(shè)計(jì)流程手機(jī)游戲的開(kāi)發(fā)不同于一般應(yīng)用程序,它受到手機(jī)本身的限制,開(kāi)發(fā)人員使用現(xiàn)有的技術(shù)去實(shí)現(xiàn),采用合理的開(kāi)發(fā)流程非常重要,下面來(lái)介紹下手機(jī)游戲的簡(jiǎn)要開(kāi)發(fā)流程:(1) 提出方案:創(chuàng)意的產(chǎn)生。(2) 方案分析:市場(chǎng)商業(yè)評(píng)估與開(kāi)發(fā)難度評(píng)估。(3) 概要設(shè)計(jì):策劃具體的游戲方案。(4) 詳細(xì)設(shè)計(jì):包括框架設(shè)計(jì)、圖像設(shè)計(jì)、具體方案、初步測(cè)試等。(5) 品質(zhì)管理:跟蹤質(zhì)量評(píng)估,發(fā)布最終穩(wěn)定產(chǎn)品。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。MIDlet及相關(guān)的支持類組成了MIDP應(yīng)用程序的實(shí)際內(nèi)容。消減狀態(tài)(Destroyed)停止?fàn)顟B(tài)(Paused)運(yùn)行狀態(tài)(Active)StartApp ()DestroyApp ()DestroyApp ()PauseApp()圖5 MIDlet的流程,這個(gè)MIDlet抽象類。在MIDP規(guī)格中定義了MIDlet的生命周期,以及可以存在的三種狀態(tài),包括Paused、Active以及Destroyed,每一個(gè)MIDlet在任何時(shí)刻只可能處于其中的一個(gè)狀態(tài)。這三種狀態(tài)的轉(zhuǎn)換關(guān)系如圖所示[11]下面就是主程序邏輯圖開(kāi)始創(chuàng)建程序主體框架,定義游戲的變量與實(shí)例定義游戲的變量與實(shí)例顯示游戲選項(xiàng)菜單 選擇exit游戲說(shuō)明難度選擇選擇PLAY選擇游戲難度顯示說(shuō)明信息按下確定鍵顯示下一關(guān)菜單讀取場(chǎng)景,設(shè)置玩家初始位置按下開(kāi)火鍵按下方向鍵 Y Y玩家坦克發(fā)射子彈移動(dòng)玩家坦克 N N邏輯操作敵方坦克隨即移動(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è)置顯示游戲畫(huà)面玩家失敗玩家勝利返回主界面進(jìn)入下一關(guān)游戲N圖6 坦克大戰(zhàn)主程序流程圖結(jié)束游戲,退出 本程序采用面向?qū)ο蟮脑O(shè)計(jì)模式,對(duì)游戲中的所有物體賦予對(duì)象的概念和屬性。運(yùn)行程序后允許用戶選擇執(zhí)行選項(xiàng)菜單,在開(kāi)始游戲后將先從外部文件載入地圖文件,對(duì)背景的所有物體進(jìn)行繪圖。在主程序運(yùn)行的線程中,畫(huà)面刷新將以一定的頻率采用雙緩沖技術(shù)對(duì)屏幕重繪,實(shí)時(shí)反映整個(gè)游戲的進(jìn)行狀態(tài)。用戶控制的坦克運(yùn)行在主線程中,隨屏幕刷新的頻率而步進(jìn)。敵方坦克將在游戲開(kāi)始時(shí)逐漸新增線程,每增加一個(gè)敵方對(duì)象就新增加一條線程,一旦線程數(shù)滿到最大值(本程序暫設(shè)置為5和7),就不允許敵人再繼續(xù)出現(xiàn)。用戶坦克自誕生之時(shí)起將擁有一發(fā)子彈,子彈雖然開(kāi)在單獨(dú)的線程中,但運(yùn)行結(jié)束后(比如撞到相關(guān)物體或敵方坦克時(shí))并不結(jié)束子彈對(duì)象,只是將其線程終止。用戶再次發(fā)射子彈時(shí)只是將終止的線程再次激活。在屏幕重繪的主程序中,將在每次的循環(huán)中判斷若干事件。以便程序進(jìn)入相關(guān)的分支執(zhí)行相關(guān)的反應(yīng)代碼,結(jié)束游戲或統(tǒng)計(jì)分?jǐn)?shù)等。程序?yàn)樾枰瓿瑟?dú)立功能的需顯示的模塊設(shè)置了單獨(dú)的類。TankMidlet類是繼承自MIDlet的控制主程序啟動(dòng)的首先被載入系統(tǒng)的部分。載入程序后首先啟動(dòng)的是程序的信息畫(huà)面。閃過(guò)后載入TankCanvas類,為用戶提供可選擇的選項(xiàng)。在選擇開(kāi)始后,將運(yùn)行該類中的總流程控制。它決定了游戲何時(shí)該結(jié)束,何時(shí)分配敵人數(shù)量,游戲結(jié)束字樣的閃現(xiàn)規(guī)則,地圖的繪制及整個(gè)游戲的調(diào)度。 坦克控制的設(shè)計(jì)思路在游戲中,坦克分玩家坦克和敵方坦克。敵方按照規(guī)則不能和用戶坦克重合,則它每行走一步就需要把用戶坦克掃描一次,判斷其是否碰撞到了用戶的坦克。在本程序的編寫(xiě)中使用到了三種碰撞檢測(cè),第一種是敵方坦克與用戶坦克的碰撞檢測(cè),第二種是敵方坦克與地圖的碰撞檢測(cè),第三種是敵方坦克和子彈的碰撞檢測(cè)。敵方坦克由于需要具有一定的智能性,以便對(duì)玩家攻擊,使之具有一定的可玩性。敵人可以自動(dòng)行走,但是應(yīng)當(dāng)在以下適當(dāng)?shù)那闆r下轉(zhuǎn)向:首先是是否超出界面的邊界,其次是是否與地圖障礙物發(fā)生了碰撞,再次是是否與用戶坦克發(fā)生了碰撞。需要指出的是,當(dāng)發(fā)生阻礙不能在不變方向的情況下繼續(xù)行走時(shí),并不一定立即需要采取轉(zhuǎn)向的對(duì)策。如果一定發(fā)生轉(zhuǎn)向,試想,當(dāng)敵方碰到玩家時(shí),如果它立即轉(zhuǎn)向,將不會(huì)對(duì)玩家發(fā)射射向他的子彈,就不構(gòu)成任何威脅,當(dāng)然,也不能永遠(yuǎn)不轉(zhuǎn)向。另外,坦克的發(fā)炮間隔和轉(zhuǎn)后的具體方向都由隨機(jī)數(shù)決定。坦克之間由以上道理也不會(huì)發(fā)生重疊,但當(dāng)某坦克正從上方生成而正巧有另一輛阻礙在其生成點(diǎn)處,這將導(dǎo)致不可避免的重合。這是允許的,但需要對(duì)他們標(biāo)注狀態(tài),即當(dāng)坦克剛出現(xiàn)時(shí)暫時(shí)允許重合,一旦在某個(gè)時(shí)間他們脫離了重合狀態(tài),就不能在允許重合,如果不設(shè)置這樣的判斷,剛出現(xiàn)的坦克將會(huì)因?yàn)槭艿阶枞肋h(yuǎn)不能前進(jìn),坦克將混成一團(tuán)。本程序中并未使用過(guò)多復(fù)雜的人工智能算法,如有時(shí)間,將可能再此方面加以完善。無(wú)反應(yīng)向上移動(dòng)向上 N向下向下移動(dòng) 向左玩家坦克向左移動(dòng)按鍵盤(pán) Y向右移動(dòng)向右發(fā)射子彈開(kāi)火鍵坦克轉(zhuǎn)向碰撞電腦敵方坦克圖7 坦克的邏輯設(shè)計(jì) 子彈控制的設(shè)計(jì)思路子彈的行為是雙方坦克的共同行為,每一個(gè)坦克都有他自己的一顆子彈,這顆子彈在任何一輛坦克被構(gòu)造時(shí)就一直存在,在坦克發(fā)射子彈前,其圖像被設(shè)置為不可見(jiàn),并且該子彈在只有直至和障礙物發(fā)生碰撞或坦克生命的結(jié)束時(shí)才消滅,子彈的再次出現(xiàn),只是將屏幕上暫時(shí)掩蓋的圖象重新置于坦克炮筒才恰當(dāng)位置,并使其顯示出來(lái),向坦克前進(jìn)的方向前進(jìn),這與現(xiàn)實(shí)中每個(gè)子彈都是單獨(dú)的個(gè)體有所不同。對(duì)于子彈的邏輯設(shè)計(jì)參閱圖8。子彈是一個(gè)繼承了虛類的可運(yùn)行單獨(dú)線程的對(duì)象。在其出現(xiàn)在屏幕上的運(yùn)行周期中,每一步都需要循環(huán)檢測(cè)以下條件[12]是否與某坦克發(fā)生了碰撞,即擊中了這輛坦克。子彈使用的是象素級(jí)的碰撞檢測(cè),因?yàn)樽訌椀膱D片形狀不規(guī)則,如果使用矩形碰撞檢測(cè),將有可能在子彈尚未接觸到物體時(shí)就已返回碰撞的真值。分為兩種情況,如果此子彈來(lái)自于敵方,將只檢測(cè)玩家坦克,因?yàn)閿撤街g的子彈必須允許可以透明的穿過(guò),以保證不會(huì)在敵人之間發(fā)生子彈的消減。如果來(lái)自玩家,則每一步需掃描所有的敵方坦克,檢查是否發(fā)生碰撞,這可能會(huì)花費(fèi)不少的CPU時(shí)間。其次,子彈之間需要檢測(cè)是否碰撞。敵人之間顯然,如上已經(jīng)提過(guò),不需要檢測(cè),但敵人與玩家之間應(yīng)當(dāng)可以互相消除子彈,以便在狹窄的路口中仍有存活的機(jī)會(huì)。玩家的子彈需要在每一步檢測(cè)所有敵人的子彈的運(yùn)行狀態(tài)。這樣較多的運(yùn)算也將不可避免的耗費(fèi)大量CPU時(shí)間。子彈對(duì)不同障礙物將有不同的反映。對(duì)磚墻將有能力將其擊毀,使之在畫(huà)面上消失;對(duì)水泥鋼筋將不能發(fā)生作用,子彈也不能通過(guò);對(duì)于草叢,子彈和坦克都可以通過(guò)。坦克的程序邏輯圖如下所示:草叢與森林不發(fā)生碰撞石磚碰撞后發(fā)生爆炸,同時(shí)石磚消失背景子彈石頭碰撞后發(fā)生爆炸,子彈消失坦克碰撞后發(fā)生爆炸,同時(shí)子彈消失圖8 坦克的邏輯設(shè)計(jì) 本章小結(jié)本章通過(guò)對(duì)游戲的總體程序了解,知道了我們需要實(shí)現(xiàn)哪些功能,在以及坦克和子彈所需要具備的一些基本的邏輯,在此邏輯和程序設(shè)計(jì)流程之上我們才能對(duì)坦克大戰(zhàn)游戲的制作有一個(gè)整體的把握,下面一張介紹坦克大戰(zhàn)所需要的技術(shù)支持。第四章 坦克大戰(zhàn)的相關(guān)技術(shù)應(yīng)用 程序需解決的技術(shù)問(wèn)題,因?yàn)槠浯a利用率很高。一個(gè)實(shí)時(shí)運(yùn)行的最終作品,每秒都會(huì)運(yùn)行成千上萬(wàn)行程序,繪圖事件、鍵盤(pán)事件都會(huì)以極高的頻率在后臺(tái)等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運(yùn)行不久后可能出現(xiàn)嚴(yán)重錯(cuò)誤,甚至死循環(huán)。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。,適用性強(qiáng),可能需要采用外部文件引入的圖片貼圖,有關(guān)貼圖,使得解決靜態(tài)或動(dòng)態(tài)、畫(huà)面背景、屏幕刷新的雙緩沖等都有較好的解決方案。,而是眾多領(lǐng)域的綜合體。涉及到藝術(shù),文學(xué),邏輯學(xué),社會(huì)學(xué),歷史等等一系列的元素。本次設(shè)計(jì)由于是一個(gè)人獨(dú)立開(kāi)發(fā),不可能具有全面的才華,因此需要從自身以外的地方獲取資料。其中原版地圖,配音,及游戲引擎。,子彈也需要處在獨(dú)立的程序中。敵方子彈僅需要掃描用戶坦克,而用戶坦克需要在每一步掃描所有的敵方坦克。這需要對(duì)所有的對(duì)象有較好的控制。另外,子彈在運(yùn)行過(guò)程中也需要實(shí)時(shí)掃描是否碰撞到了相關(guān)障礙物或屏幕邊界。如此過(guò)多的程序同時(shí)在本來(lái)效率就不高的KVM虛擬機(jī)上運(yùn)行,也許會(huì)導(dǎo)致程序的緩慢。,以免重疊運(yùn)行,造成許多物理上不可能的情況,缺乏真實(shí)感。每一次刷新頁(yè)面、每前進(jìn)一步都需要將所有的周圍環(huán)境都進(jìn)行掃描。如何采用合理的記分標(biāo)準(zhǔn),需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)。記錄分?jǐn)?shù)的存儲(chǔ)方式也需要有較好的解決方案。手機(jī)中由于處理器和內(nèi)存空間、存儲(chǔ)空間都十分有限,其數(shù)據(jù)庫(kù)結(jié)構(gòu)較為簡(jiǎn)單,與普通PC大相徑庭。,其執(zhí)行效率較C++等完全編譯后的程序會(huì)低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。除開(kāi)發(fā)過(guò)程中對(duì)結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(Obfuscator)進(jìn)行程序打包后的優(yōu)化。,根據(jù)FC版的坦克大戰(zhàn)去設(shè)計(jì)各種初始參數(shù),例如:坦克數(shù)量,坦克類型設(shè)置,游戲圖形匹配,游戲速度。由于設(shè)備的限制,實(shí)現(xiàn)FC版所有功能將會(huì)產(chǎn)生比較龐大的數(shù)據(jù),因此簡(jiǎn)化部分功能也是需要詳細(xì)考慮。,對(duì)添加的新元素也需要參考和分析,一般從畫(huà)面和游戲性方面著手。、結(jié)束、以及游戲中信息的布局作為一個(gè)游戲的重要部分。制作友好的用戶界面可以更加吸引玩家,這也需要參考大量的同類型游戲。以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。 繪圖基礎(chǔ) 如同高級(jí)界面屏幕類都繼承Screen類一樣,在使用到低級(jí)用戶界面必須要繼承Canvas這個(gè)抽象類,Canvas是Displayable的直接子類,屬于J2ME中的低級(jí)API。 用戶利用這些低級(jí)API可對(duì)設(shè)備精確控制,如繪制像素,接受原始的用戶輸入事件等。 與高級(jí)API相比控制更加靈活,但這是以其復(fù)雜性、高成本為代價(jià)的,并犧牲了一定的可移植性。它的基本用法與其他Displayable對(duì)象一致。Canvas的核心是paint()這個(gè)方法, 這個(gè)方法做是負(fù)責(zé)繪制屏幕上的畫(huà)面,每當(dāng)屏幕需要重新繪制時(shí),就會(huì)產(chǎn)生重繪事件,系統(tǒng)就會(huì)自動(dòng)調(diào)用paint(),并傳入一個(gè)Graphics對(duì)象。從程序開(kāi)發(fā)的觀點(diǎn)看,Canvas類可與高級(jí)Screen類交互,程序可在需要時(shí)在Canvas中摻入高級(jí)類的組件。Canvas提供了鍵盤(pán)事件、指點(diǎn)桿事件(如果設(shè)備支持), 并定義了允許將鍵盤(pán)按鍵映射為游戲控制鍵的函數(shù)。鍵盤(pán)事件由鍵代碼指定,但這樣控制游戲會(huì)導(dǎo)致缺乏通用性,并不是每個(gè)設(shè)備的鍵盤(pán)布局都適合游戲的操作。應(yīng)當(dāng)將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開(kāi)發(fā)商能定義他們自己的游戲鍵布局。本程序中,操縱用戶坦克運(yùn)行的按鍵都定義為游戲控制鍵,這樣便能適應(yīng)所有的機(jī)器[13]。 Graphics類Graphics類中提供了一套各不相同的關(guān)于圖形繪制的方法,一般來(lái)說(shuō),圖形繪制首先要調(diào)用相關(guān)的方法進(jìn)行顏色設(shè)置、坐標(biāo)變換和剪裁。針對(duì)不同的需要,Graphics類中提供了用于描繪線條、繪制和填充矩形或圓角矩形、繪制和填充圓弧以及文本和圖像的方法。程序只能在paint()函數(shù)中使用Graphics繪制,GameCanvas可調(diào)用getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時(shí)間請(qǐng)求傳輸?shù)角芭_(tái)。其對(duì)象會(huì)被傳給Canvas的paint()函數(shù),以便最終顯示。PNG(Portable Network Graphics)格式是MIDlet唯一支持的圖象格式。PNG格式圖片中包含許多定義其圖片特性的冗余部分(Chunks)。這些代碼包含在每一個(gè)單獨(dú)的png格式圖象中,然而如果將多個(gè)png圖象合并在一張幅面稍大一些的整圖中,多個(gè)chunks就可以得到精簡(jiǎn),圖片的大小可以得到控制。使用Image類中的createImage函數(shù)可從整圖中分割出所需要的元素。Game包中的TiledLayer和Sprite類都整合了這樣的功能。,進(jìn)行游戲繪圖一般需要手動(dòng)編程使用雙緩沖。需要在paint()方法內(nèi)所想要畫(huà)的圖形畫(huà)在一張預(yù)先準(zhǔn)備好的背景,等所有繪圖操作都完成后再將背景的數(shù)據(jù)拷貝到實(shí)際的屏幕上。Image類提供了一個(gè)建立背景的靜態(tài)方法createImage(int width, int height),再利用getGraphics()方法取得屬于這個(gè)背景的Graphics對(duì)象,所進(jìn)行的繪圖操作都會(huì)作用在背景上,等到全部的繪圖操作完成后,再調(diào)用drawImage()方法將背景的數(shù)據(jù)復(fù)制到實(shí)際顯示的屏幕上。這樣的技術(shù)在繪制動(dòng)畫(huà)時(shí)特別有用。繪制動(dòng)畫(huà)時(shí)經(jīng)常需要不斷地更新畫(huà)面,而更新畫(huà)面的操作就是先
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1