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

正文內(nèi)容

基于j2me的java游戲坦克大戰(zhàn)的開發(fā)畢業(yè)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-文庫吧

2025-06-03 14:48 本頁面


【正文】 ystem(可譯作任天堂娛樂平臺即NES)。FC主機(jī)在游戲業(yè)界造成的巨大沖擊眾所周知,這款主機(jī)在當(dāng)時事實(shí)上幾乎占領(lǐng)了世界各地多個國家的整個游戲市場,并使得逐漸圖12 80年代中期的FC機(jī)器沒落的北美游戲市場再度復(fù)蘇。這款主機(jī)的性能比當(dāng)時的多數(shù)主機(jī)都要強(qiáng)大,而價格上卻便宜得多。主機(jī)所采用得處理器為CMOS 6502,一款已經(jīng)淘汰的70年代中期產(chǎn)品。由于其價格便宜且極易使用,經(jīng)過任天堂的改造后又煥發(fā)了全新活力。6502 芯片cpu 主頻為8 bit,12 MHz,內(nèi)存8k,畫面 52色,同屏最多顯示其中的13色,聲音2個矩波,1個三角波,1個雜音,1個PCM音頻(見圖12)。Battle City是其發(fā)售卡帶中的一款力作,設(shè)置了35個關(guān)卡,可以雙人操縱,畫面設(shè)置了若干種類的建筑物和阻擋物,以消滅所有敵人為通關(guān)條件,并有接寶物等增加游戲效果的設(shè)置,畫面精美,音效杰出,在PC機(jī)的80386處理器仍未面世的當(dāng)時,能在硬件上運(yùn)行這樣的2D程序不得不令人驚嘆,難怪常有人說游戲程序是最大限度發(fā)揮硬件水平的載體。其游戲界面如圖13所示。 本章小結(jié):引言和第一章中介紹了手機(jī)在無線應(yīng)用方向的當(dāng)今概況,并介紹了游戲業(yè)務(wù)在當(dāng)前社會的發(fā)展?jié)摿?。分析了J2ME在手機(jī)軟件開發(fā)中起的重要作用,描述了本論文的相關(guān)背景。 第二章 開發(fā)環(huán)境及相關(guān)技術(shù)的介紹 開發(fā)環(huán)境操作系統(tǒng):Microsoft Windows XP程序語言:Java 2開發(fā)包: Java(TM) 2 Standard Edition (build ) Sun Micro. J2ME Wireless Tool Kit IDE: Borland Jbuilder 9 Java語言的特點(diǎn)1. 平臺無關(guān)性Java引進(jìn)虛擬機(jī)原理,并運(yùn)行于虛擬機(jī),實(shí)現(xiàn)不同平臺之間的Java接口。使用Java編寫的程序能在世界范圍內(nèi)共享。Java的數(shù)據(jù)類型與機(jī)器無關(guān)。2. 安全性Java的編程類似C++,但舍棄了C++的指針對存儲器地址的直接操作,程序運(yùn)行時,內(nèi)存由操作系統(tǒng)分配,這樣可以避免病毒通過指針入侵系統(tǒng)。它提供了安全管理器,防止程序的非法訪問。3. 面向?qū)ο? Java吸收了C++面向?qū)ο蟮母拍?,將?shù)據(jù)封裝于類中,實(shí)現(xiàn)了程序的簡潔性和便于維護(hù)性,使程序代碼可以只需一次編譯就可反復(fù)利用。4. 分布式Java建立在TCP/IP網(wǎng)絡(luò)平臺上,提供了用HTTP和FTP協(xié)議傳送和接收信息的庫函數(shù),使用其相關(guān)技術(shù)可以十分方便的構(gòu)建分布式應(yīng)用系統(tǒng)。5. 健壯性Java致力與檢查程序在編譯和運(yùn)行時的錯誤,并自動回收內(nèi)存,減少了內(nèi)存出錯的可能性。Java取消了C語言的結(jié)構(gòu)、指針、define語句、多重繼承、goto語句、操作符、重載等不易被掌握的特性,提供垃圾收集器自動回收不用的內(nèi)存空間。 關(guān)于JBuilder9 JBuilder是目前最好的Java開發(fā)工具之一,在協(xié)同管理、對J2EE和XML的支持等方面均走在其他產(chǎn)品的前面。JBuilder是遵循Sun公司J2EE標(biāo)準(zhǔn)的可視化集成開發(fā)工具。Jbuilder是一種處于市場領(lǐng)先地位的跨平臺環(huán)境,主要用于構(gòu)建具有行業(yè)實(shí)力的企業(yè)Java應(yīng)用程序。JBuilder集成了Borland公司開發(fā)工具系列的優(yōu)秀特性,使得使用過C++Builder,Delphi的程序員很容易的過度到JBuilder的開發(fā)環(huán)境當(dāng)中。由于Java技術(shù)的發(fā)展迅速,經(jīng)常有新的組件推出或新的錯誤修正,致使JBuilder的版本升級很快。當(dāng)兩年前還是JBuilder6時,現(xiàn)今已推出了10的版本。 關(guān)于Wireless Tool Kit WTK(Wireless Tool Kit)是Sun公司針對J2ME推出的用于手機(jī)和Palm等移動設(shè)備的開發(fā)包,是除手機(jī)廠商的專用開發(fā)包外唯一的手機(jī)模擬器開發(fā)包。它通用性高,開發(fā)出的應(yīng)用程序可保證能運(yùn)行在大部分設(shè)備上,而不像專用廠商具有一定的不兼容性。雖然它沒有強(qiáng)大的功能和完善的調(diào)試手段,但它提供運(yùn)行模擬器的最基本組件,是其他IDE需集成采用的必備元素。 Java Appication Manager手機(jī)中負(fù)責(zé)調(diào)配程序運(yùn)行資源的管理后臺是Java Application Manager。它所使用的傳輸媒體可以是紅外線、網(wǎng)絡(luò)、以及其他可用來傳輸?shù)拿襟w。Java Application Manager 會從網(wǎng)絡(luò)上下載代表該Application Suite 的JAR 檔,接著在手機(jī)上安裝此MIDlet Suite,然后在手機(jī)開始執(zhí)行該應(yīng)用程序。整個詳細(xì)的運(yùn)作流程如圖21所示。存儲媒體手機(jī)內(nèi)建瀏覽器JavaAppicationManagerKVM描述檔圖示檔JAR檔Java ServletHTML網(wǎng)頁6.安裝應(yīng)用程序8.載入并執(zhí)行應(yīng)用程序使用者手機(jī)網(wǎng)站網(wǎng)絡(luò)1.瀏覽網(wǎng)頁圖21 JAM工作流程圖 本章小結(jié):第二章介紹了Java語言的特點(diǎn)、本程序的開發(fā)環(huán)境及其相關(guān)工具的原理和使用。 第三章 程序結(jié)構(gòu)、思想和相關(guān)技術(shù) 本程序需解決的有關(guān)技術(shù)問題1. 游戲程序是一項(xiàng)精度要求很高的程序系統(tǒng),因?yàn)槠浯a利用率很高。一個實(shí)時運(yùn)行的最終作品,每秒都會運(yùn)行成千上萬行程序,繪圖事件、鍵盤事件都會以極高的頻率在后臺等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運(yùn)行不久后可能出現(xiàn)嚴(yán)重錯誤,甚至死循環(huán)。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。2. 游戲中為了美觀,適用性強(qiáng),可能需要采用外部文件引入的圖片貼圖,有關(guān)貼圖,使得解決靜態(tài)或動態(tài)、畫面背景、屏幕刷新的雙緩沖等都有較好的解決方案。3. 己方坦克的運(yùn)行可以通過鍵盤響應(yīng)事件控制,但敵方則因?yàn)槭亲詣舆\(yùn)行,就需要有一定其一定的智能性;同時,出現(xiàn)在屏幕上的敵方可能會有較多的數(shù)量,這需要為每個敵方開辟一個線程以便能讓其獨(dú)立運(yùn)行。Java的多線程能力為實(shí)現(xiàn)這樣的游戲提供了可能。敵人坦克的運(yùn)行算法也需要進(jìn)行適當(dāng)?shù)脑O(shè)置,以免游戲過于簡單,單調(diào)。4. 對于雙方坦克發(fā)出的子彈的控制也需要對其跟蹤控制,子彈也需要處在獨(dú)立的線程中。敵方子彈僅需要掃描用戶坦克,而用戶坦克需要在每一步掃描所有的敵方坦克。這需要對所有的對象有較好的控制。另外,子彈在運(yùn)行過程中也需要實(shí)時掃描是否碰撞到了相關(guān)障礙物或屏幕邊界。如此過多的線程同時在本來效率就不高的KVM虛擬機(jī)上運(yùn)行,也許會導(dǎo)致程序的緩慢。5. 雙方的坦克在前進(jìn)時也需要考慮到是否碰撞到相關(guān)物體或?qū)Ψ教箍?,以免重疊運(yùn)行,造成許多物理上不可能的情況,缺乏真實(shí)感。每一次刷新頁面、每前進(jìn)一步都需要將所有的周圍環(huán)境都進(jìn)行掃描。6. 游戲的結(jié)束、開始、動態(tài)信息畫面作為構(gòu)成一個完美程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標(biāo),相關(guān)的美術(shù)構(gòu)圖也需要有一定的考慮。7. 游戲的地圖不可能通過繪圖來解決。否則,不僅難于控制和處理過多的元素,也會因過多的大型圖片而不能限制程序的大小,失去手機(jī)上程序的原則和Java的優(yōu)勢。同時,地圖關(guān)卡不宜保存在手機(jī)有限的內(nèi)存中,而最好采取外部文件的讀入讀出方法。8. 用戶運(yùn)行游戲時需要有分?jǐn)?shù)記錄的可能。如何采用合理的記分標(biāo)準(zhǔn),需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)。記錄分?jǐn)?shù)的存儲方式也需要有較好的解決方案。手機(jī)中由于處理器和內(nèi)存空間、存儲空間都十分有限,其數(shù)據(jù)庫系統(tǒng)與普通PC大相徑庭。其數(shù)據(jù)庫結(jié)構(gòu)較為簡單,被稱之為RMS系統(tǒng)。9. Java是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較C++等完全編譯后的程序會低很多,程序如果不進(jìn)行精簡和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。除開發(fā)過程中對結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(Obfuscator)進(jìn)行程序打包后的優(yōu)化。以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。 程序流程MIDlet suite是MIDP應(yīng)用程序的最小單位,JAM負(fù)責(zé)將手機(jī)內(nèi)的MIDlet suite以圖形化的方式呈現(xiàn),讓用戶能夠選取欲執(zhí)行的MIDlet suite,一旦選取了某個MIDlet suite,操作系統(tǒng)就會激活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()呼叫MIDlet的構(gòu)造函數(shù)DestroyApp()PauseApp()圖31 MIDlet的流程。在MIDP規(guī)格中定義了MIDlet的生命周期,以及可以存在的三種狀態(tài),包括Paused、Active以及Destroyed,每一個MIDlet在任何時刻只可能處于其中的一個狀態(tài)。這三種狀態(tài)的轉(zhuǎn)換關(guān)系如圖所示:本程序采用面向?qū)ο蟮脑O(shè)計(jì)模式,對游戲中的所有物體賦予對象的概念和屬性。運(yùn)行程序后允許用戶選擇執(zhí)行選項(xiàng)菜單,在開始游戲后將先從外部文件載入地圖文件,對背景的所有物體進(jìn)行繪圖。在主程序運(yùn)行的線程中,畫面刷新將以一定的頻率采用雙緩沖技術(shù)對屏幕重繪,實(shí)時反映整個游戲的進(jìn)行狀態(tài)。用戶控制的坦克運(yùn)行在主線程中,隨屏幕刷新的頻率而步進(jìn)。敵方坦克將在游戲開始時逐漸新增線程,每增加一個敵方對象就新增加一條線程,一旦線程數(shù)滿到最大值(本程序暫設(shè)置為6),就不允許敵人再繼續(xù)出現(xiàn)。用戶坦克自誕生之時起將擁有一發(fā)子彈,子彈雖然開在單獨(dú)的線程中,但運(yùn)行結(jié)束后(比如撞到相關(guān)物體或敵方坦克時)并不結(jié)束子彈對象,只是將其線程終止。用戶再次發(fā)射子彈時只是將終止的線程再次激活。在屏幕重繪的主程序中,將在每次的循環(huán)中判斷若干事件。如:用戶坦克的生命是否已完全用盡,敵方坦克數(shù)是否已經(jīng)為零,屏幕上的坦克數(shù)量是否少于仍剩下的坦克數(shù)量等。以便程序進(jìn)入相關(guān)的分支執(zhí)行相關(guān)的反應(yīng)代碼,結(jié)束游戲或統(tǒng)計(jì)分?jǐn)?shù)等。主程序流程如圖32所示:Logo 畫面選項(xiàng)畫面主程序屏幕繪圖本關(guān)記分統(tǒng)計(jì)顯示GameOver顯示歷史記分表About開始敵方需要出坦克時,生成坦克初始化參數(shù)死亡時符合結(jié)束條件時圖32 本程序的主流程圖程序?yàn)樾枰瓿瑟?dú)立功能的需顯示的模塊設(shè)置了單獨(dú)的類。TankMain類是繼承自MIDlet的控制主程序啟動的首先被載入系統(tǒng)的部分。載入程序后首先啟動的是程序介紹的信息畫面。閃過后載入StartChoice類,為用戶提供可選擇的選項(xiàng)。在選擇開始后,將運(yùn)行BattleCanvas類中的總流程控制。它決定了游戲何時該結(jié)束,何時分配敵人數(shù)量,GameOver字樣的閃現(xiàn)規(guī)則,地圖的繪制及整個游戲的調(diào)度。圖33 與主程序相關(guān)的類的UML視圖圖33是程序中類之間的UML分析圖。敵方坦克與用戶坦克的相關(guān)功能和具體行為分別定義在EnemySprite和UserSprite類中,它們都繼承自TankSprite公共類,以簡化程序的代碼、理清結(jié)構(gòu)。在每關(guān)的結(jié)束或死亡后都將載入ScoreScreen類,統(tǒng)計(jì)當(dāng)前的分?jǐn)?shù)。如果已死亡或完成所有的關(guān)數(shù),程序?qū)⒂脩羲玫姆謹(jǐn)?shù)記載到RMS數(shù)據(jù)庫中,進(jìn)行永久性保存。載入過程中將對所得分?jǐn)?shù)與以往歷史比較,放置到合適的位置中,形成排序。 提供低級繪制的Canvas類為了能有程序開發(fā)人員控制接口的外觀和行為,需要使用大量的初級用戶接口類,尤其在游戲程序中,幾乎完全依賴的就是Canvas抽象類進(jìn)行繪圖。從程序開發(fā)的觀點(diǎn)看,Canvas類可與高級Screen類交互,程序可在需要時在Canvas中摻入高級類的組件。Canvas提供了鍵盤事件、指點(diǎn)桿事件(如果設(shè)備支持),并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù)。鍵盤事件由鍵代碼指定,但這樣控制游戲會導(dǎo)致缺乏通用性,并不是每個設(shè)備的鍵盤布局都適合游戲的操作。應(yīng)當(dāng)將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開發(fā)商能定義他們自己的游戲鍵布局。本程序中,操縱用戶坦克運(yùn)行的按鍵都定義為游戲控制鍵,這樣便能適應(yīng)所有的機(jī)器。 Graphics類Graphics類提供了簡單的2D繪圖功能。它具有24位深度色彩的繪制能力,以三原色分別各占一個字節(jié)表示其顏色。程序只能在paint()函數(shù)中使用Graphics繪制,GameCanvas可調(diào)用getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時間請求傳輸?shù)角芭_。其對象會被傳給Canvas的paint()函數(shù),以便最終顯示。 PNG格式PNG(Portable Network Graphics)格式是MIDlet唯一支持的圖象格式,PNG具體格式由PNG Specification,Version 。PNG格式提供透明背景的圖象,這對繪制游戲畫面和被操縱主角極有幫助。坦克之間或與障礙物碰撞時就不會因?yàn)楸尘坝刑囟ǖ念伾@示出的效果像貼上的圖片而缺乏真實(shí)感,物體之間輕微重疊時最上層圖片也不會覆蓋超過其有效象素外的部分。PNG格式圖片中包含許多定義其圖片特性的冗余部分(Chunks)。這些代碼包含在每一個單獨(dú)的png格式圖象中,然而如果將多個png圖象合并在一張幅面稍大一些的整圖中,多個chunks就可以得到精簡,圖片的大小可以得到控制。使用Image類中的createImage函數(shù)可從整圖中分割出所需要的元素。在Game包中的TiledLayer和Sprite類都整合了這樣的功能。,實(shí)現(xiàn)了方便的管理和程序體積的精簡。 Game包中的新功能 ,為游戲的開發(fā)帶來了極大的便利。地圖繪制、主角的動態(tài)顯示、按鍵的檢測、圖層的控制等游戲?qū)俚奶匦远嫉玫搅嗽谝苿釉O(shè)備上最大的發(fā)揮。 LayerManager(以下簡稱LM)提供控制整體畫面層的控制。它包括了一系列自動獲取了代號和位置的層,簡化了各層加入游戲畫面的過程,提供了自動排序和繪制的能力。LM存儲了一個層的列表,新的層可以用append函數(shù)附加、刪除和插入。層的序號相當(dāng)于坐標(biāo)的Z軸,0層表示最接近用戶視覺,層數(shù)越高,離用戶越遠(yuǎn)。層號總是連續(xù)的,即使有中間的層被移除,其他層的序
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1