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

正文內(nèi)容

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

2025-07-16 12:33 本頁面
 

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