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

正文內(nèi)容

基于j2me的java游戲坦克大戰(zhàn)的開發(fā)畢業(yè)設計論文(已修改)

2025-06-30 14:39 本頁面
 

【正文】 西南交通大學本科畢業(yè)設計(論文) 第II頁西 南 交 通 大 學Java游戲編程技術課程設計報告坦克大戰(zhàn)游戲編程課程設計報告年 級: 2008級 學 號: 20082961 姓 名: 陳錦添 專 業(yè): 信息管理與信息系統(tǒng) 分數(shù):教師簽名:二零一零年六月西南交通大學課程設計報告摘 要Java良好的跨平臺特性在移動平臺的開發(fā)中顯示出了巨大的威力。Java語言面向?qū)ο蟮膬?yōu)勢也使得開發(fā)游戲變得非常容易。隨著手機的日益普及、Java功能在移動設備上的實現(xiàn),Java應用程序產(chǎn)生的手機增值服務逐漸體現(xiàn)出其影響力,對豐富人們的生活內(nèi)容、提供快捷的資訊起著不可忽視的作用。本論文著眼于J2ME技術的應用,開發(fā)一款可商用的手機游戲程序——坦克大戰(zhàn)。本程序的界面和運作方式繼承于日本任天堂公司在20世紀80年代開發(fā)的Battle City游戲,將老少皆宜的經(jīng)典作品移植到手機上來,為更流行的硬件平臺提供應用軟件。本論文介紹了任天堂紅白機的軟硬件特性、J2ME的相關技術及本程序的結構分析和具體功能的實現(xiàn)。[關鍵字]:J2ME,手機游戲,Java,坦克大戰(zhàn)手機中將Java語言引入,作為一種通用的開發(fā)標準,并將向市場推廣普及僅僅短短幾年,J2ME仍是一種新型的技術,中文資料除臺灣出版過相關書籍外,國內(nèi)相關介紹資源很有限,國內(nèi)J2ME開發(fā)商也屈指可數(shù),名聲較響的DigitalRed公司也僅成立于1999年。本文可算是對新技術的一些嘗試,代表對無線平臺應用程序推廣的一些努力。目 錄摘 要 I Abstract I 第一章 程序結構、思想和相關技術 3 本程序需解決的有關技術問題 3 程序流程 4 6 提供低級繪制的Canvas類 6 Graphics類 6 PNG格式 6 Game包中的新功能 7 第二章 游戲的設計思路 8 坦克的控制和敵方的智能運行 8 子彈的運行和控制 9 RMS數(shù)據(jù)庫系統(tǒng) 10 內(nèi)存使用的最佳化 11 混淆器(Obfuscator)的使用 12 第三章 程序分析和具體實現(xiàn) 12 游戲進入前的選擇 12 主游戲邏輯及其涉及到的若干類 13 坦克的共同行為 15 玩家坦克的功能屬性 16 敵人坦克的功能屬性 16 子彈的運行和控制 18 記分系統(tǒng) 19 本章小結: 21 第四章 總 結 21 本程序的總結和展望 21 經(jīng)驗和感想 22 參考文獻 23 第一章 程序結構、思想和相關技術 本程序需解決的有關技術問題1. 游戲程序是一項精度要求很高的程序系統(tǒng),因為其代碼利用率很高。一個實時運行的最終作品,每秒都會運行成千上萬行程序,繪圖事件、鍵盤事件都會以極高的頻率在后臺等待響應,若有絲毫的差別都將很容易導致程序在運行不久后可能出現(xiàn)嚴重錯誤,甚至死循環(huán)。因此,其邏輯設計應當相當嚴謹,需將所有可能發(fā)生的事件及意外情況考慮在設計中。2. 游戲中為了美觀,適用性強,可能需要采用外部文件引入的圖片貼圖,有關貼圖,使得解決靜態(tài)或動態(tài)、畫面背景、屏幕刷新的雙緩沖等都有較好的解決方案。3. 己方坦克的運行可以通過鍵盤響應事件控制,但敵方則因為是自動運行,就需要有一定其一定的智能性;同時,出現(xiàn)在屏幕上的敵方可能會有較多的數(shù)量,這需要為每個敵方開辟一個線程以便能讓其獨立運行。Java的多線程能力為實現(xiàn)這樣的游戲提供了可能。敵人坦克的運行算法也需要進行適當?shù)脑O置,以免游戲過于簡單,單調(diào)。4. 對于雙方坦克發(fā)出的子彈的控制也需要對其跟蹤控制,子彈也需要處在獨立的線程中。敵方子彈僅需要掃描用戶坦克,而用戶坦克需要在每一步掃描所有的敵方坦克。這需要對所有的對象有較好的控制。另外,子彈在運行過程中也需要實時掃描是否碰撞到了相關障礙物或屏幕邊界。如此過多的線程同時在本來效率就不高的KVM虛擬機上運行,也許會導致程序的緩慢。5. 雙方的坦克在前進時也需要考慮到是否碰撞到相關物體或?qū)Ψ教箍?,以免重疊運行,造成許多物理上不可能的情況,缺乏真實感。每一次刷新頁面、每前進一步都需要將所有的周圍環(huán)境都進行掃描。6. 游戲的結束、開始、動態(tài)信息畫面作為構成一個完美程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標,相關的美術構圖也需要有一定的考慮。7. 游戲的地圖不可能通過繪圖來解決。否則,不僅難于控制和處理過多的元素,也會因過多的大型圖片而不能限制程序的大小,失去手機上程序的原則和Java的優(yōu)勢。同時,地圖關卡不宜保存在手機有限的內(nèi)存中,而最好采取外部文件的讀入讀出方法。8. 用戶運行游戲時需要有分數(shù)記錄的可能。如何采用合理的記分標準,需要進行適當?shù)脑O計。記錄分數(shù)的存儲方式也需要有較好的解決方案。手機中由于處理器和內(nèi)存空間、存儲空間都十分有限,其數(shù)據(jù)庫系統(tǒng)與普通PC大相徑庭。其數(shù)據(jù)庫結構較為簡單,被稱之為RMS系統(tǒng)。9. Java是基于虛擬機的半解釋型編譯系統(tǒng),其執(zhí)行效率較C++等完全編譯后的程序會低很多,程序如果不進行精簡和優(yōu)化,將可能導致運行的不流暢。除開發(fā)過程中對結構上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(Obfuscator)進行程序打包后的優(yōu)化。以上相關技術細節(jié)和整體流程將分別在以下小節(jié)闡述。 程序流程MIDlet suite是MIDP應用程序的最小單位,JAM負責將手機內(nèi)的MIDlet suite以圖形化的方式呈現(xiàn),讓用戶能夠選取欲執(zhí)行的MIDlet suite,一旦選取了某個MIDlet suite,操作系統(tǒng)就會激活KVM執(zhí)行里面的MIDlet。MIDlet及相關的支持類組成了MIDP應用程序的實際內(nèi)容。消減狀態(tài)(Destroyed)停止狀態(tài)(Paused)運行狀態(tài)(Active)StartApp()DestroyApp()呼叫MIDlet的構造函數(shù)DestroyApp()PauseApp()圖11 MIDlet的流程。在MIDP規(guī)格中定義了MIDlet的生命周期,以及可以存在的三種狀態(tài),包括Paused、Active以及Destroyed,每一個MIDlet在任何時刻只可能處于其中的一個狀態(tài)。這三種狀態(tài)的轉(zhuǎn)換關系如圖所示:本程序采用面向?qū)ο蟮脑O計模式,對游戲中的所有物體賦予對象的概念和屬性。運行程序后允許用戶選擇執(zhí)行選項菜單,在開始游戲后將先從外部文件載入地圖文件,對背景的所有物體進行繪圖。在主程序運行的線程中,畫面刷新將以一定的頻率采用雙緩沖技術對屏幕重繪,實時反映整個游戲的進行狀態(tài)。用戶控制的坦克運行在主線程中,隨屏幕刷新的頻率而步進。敵方坦克將在游戲開始時逐漸新增線程,每增加一個敵方對象就新增加一條線程,一旦線程數(shù)滿到最大值(本程序暫設置為6),就不允許敵人再繼續(xù)出現(xiàn)。用戶坦克自誕生之時起將擁有一發(fā)子彈,子彈雖然開在單獨的線程中,但運行結束后(比如撞到相關物體或敵方坦克時)并不結束子彈對象,只是將其線程終止。用戶再次發(fā)射子彈時只是將終止的線程再次激活。在屏幕重繪的主程序中,將在每次的循環(huán)中判斷若干事件。如:用戶坦克的生命是否已完全用盡,敵方坦克數(shù)是否已經(jīng)為零,屏幕上的坦克數(shù)量是否少于仍剩下的坦克數(shù)量等。以便程序進入相關的分支執(zhí)行相關的反應代碼,結束游戲或統(tǒng)計分數(shù)等。主程序流程如圖32所示:Logo 畫面選項畫面主程序屏幕繪圖本關記分統(tǒng)計顯示GameOver顯示歷史記分表About開始敵方需要出坦克時,生成坦克初始化參數(shù)死亡時符合結束條件時圖12 本程序的主流程圖程序為需要完成獨立功能的需顯示的模塊設置了單獨的類。TankMain類是繼承自MIDlet的控制主程序啟動的首先被載入系統(tǒng)的部分。載入程序后首先啟動的是程序介紹的信息畫面。閃過后載入StartChoice類,為用戶提供可選擇的選項。在選擇開始后,將運行BattleCanvas類中的總流程控制。它決定了游戲何時該結束,何時分配敵人數(shù)量,GameOver字樣的閃現(xiàn)規(guī)則,地圖的繪制及整個游戲的調(diào)度。圖13 與主程序相關的類的UML視圖圖13是程序中類之間的UML分析圖。敵方坦克與用戶坦克的相關功能和具體行為分別定義在EnemySprite和UserSprite類中,它們都繼承自TankSprite公共類,以簡化程序的代碼、理清結構。在每關的結束或死亡后都將載入ScoreScreen類,統(tǒng)計當前的分數(shù)。如果已死亡或完成所有的關數(shù),程序?qū)⒂脩羲玫姆謹?shù)記載到RMS數(shù)據(jù)庫中,進行永久性保存。載入過程中將對所得分數(shù)與以往歷史比較,放置到合適的位置中,形成排序。 提供低級繪制的Canvas類為了能有程序開發(fā)人員控制接口的外觀和行為,需要使用大量的初級用戶接口類,尤其在游戲程序中,幾乎完全依賴的就是Canvas抽象類進行繪圖。從程序開發(fā)的觀點看,Canvas類可與高級Screen類交互,程序可在需要時在Canvas中摻入高級類的組件。Canvas提供了鍵盤事件、指點桿事件(如果設備支持),并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù)。鍵盤事件由鍵代碼指定,但這樣控制游戲會導致缺乏通用性,并不是每個設備的鍵盤布局都適合游戲的操作。應當將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開發(fā)商能定義他們自己的游戲鍵布局。本程序中,操縱用戶坦克運行的按鍵都定義為游戲控制鍵,這樣便能適應所有的機器。 Graphics類Graphics類提供了簡單的2D繪圖功能。它具有24位深度色彩的繪制能力,以三原色分別各占一個字節(jié)表示其顏色。程序只能在paint()函數(shù)中使用Graphics繪制,GameCanvas可調(diào)用getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時間請求傳輸?shù)角芭_。其對象會被傳給Canvas的paint()函數(shù),以便最終顯示。 PNG格式PNG(Portable
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1