【正文】
5 第二章 游戲開發(fā)環(huán)境概述 開發(fā)環(huán)境 操作系統(tǒng): Microsoft Windows XP 程序語言: Java 2 platform Micro Edition JAVA 平臺: J2ME 插件: 開發(fā)集成平臺: 簡體中文版 模擬器: J2ME 平臺簡介 Java2 技術是一系列產(chǎn)品的集合,目前主要包括 Java2 平臺標準版 (Java 2 platform Standard Edition,J2SE)、 Java 2 平臺企業(yè)版 (Java 2 platform Enterprise Edition,J2EE)、 Java 2 平臺微型版 (Java 2 platform MicroEdition,J2ME)和 Java 卡平臺 [5]。 第三章坦克大戰(zhàn)的設計流程和設計思路。由于其價格便宜且極易使用,經(jīng)過任天堂的改造后又煥發(fā)了全新活力。這一數(shù)字不僅讓中國成為世界上最大的手機消費國,更為重要的是,它也為手機游戲產(chǎn)業(yè)的發(fā)展帶來了廣闊的受眾基礎。前幾年 ,歐洲的運營商意識到了手機游戲市場的廣闊前景及其自身與日韓運營商之間的差距,開始急起直追,手機游戲市場日漸活躍。如果是缺少了過程的控制,開發(fā)出來的游戲可能 BUG 無數(shù),項目拖期,開發(fā)成本超出預算。目前的移動開發(fā)技術大體分為三個陣營:首當其沖的便是由 SUN 公司提出的 ,與具體操作系統(tǒng)無關的 ,已得到各種設備廣泛支持的 J2ME 技術,還有就是主要由 NOKIA公司倡導的 ,主要使用 C++語言的基于 Symbian 操作系統(tǒng) 的開放應用平臺,以及微軟力推的主要使用 C配合 .NETCF 進行開發(fā)的 Windows Mobile Smart Phone 平臺。除了文中特別加以標注引用的內容外,本論文不包含任何其他個人或集體已經(jīng)發(fā)表或撰寫的成果作品。 關鍵字 : J2ME;手機游戲; JAVA;坦克大戰(zhàn) Based on the J2ME mobile phone games design and development ABSTRACT When cell phone is getting ever more and more popular nowadays, with the implementation of Java technology on mobile equipment, increment of capital on munication service exhibits its force on people’s everyday life, providing them ever fast information just in hand. This dissertation focuses on implementation of J2ME technology and has developed a mercial game suite run on the mobile phones—Tank. This application inherits many characters of the old fashioned game Battle City which developed by Nintendo in 1980s. It transports the classical product to mobile phones, offering corresponding software for such more popular hardware platform. This paper gives brief introduction on J2ME development environment. We can understand the basic flow on the mobile phone game, and confirm the integral design thinking and basic outline. On the basis, we regard J2ME as the platform, the mobile phone game of tank war is designed, not only on applying the related technique in the design of the tank war and the logic train of thought on every part of it, but also on the critical analysis on the logical relationship of each class. Therefore, so many functions of this game are showed, such as smooth running, use of props, the intelligent running of enemy tanks and so on. Through this game designed to deepen understanding of the J2ME mobile game development. By the time it focuses on application for consumptive electronic people products, providing revolutionary solution to the intelligentization and diversification of the equipment. It improves the efficiency of the development process thanks to its “Write Once, run anywhere” nature. Key words: J2ME。本論文著眼于 J2ME 技術的應用,開發(fā)一款可商用的手機游戲程序 ——坦克大戰(zhàn)。 tank Battle City 畢業(yè)設計(論文)原創(chuàng)性聲明和使用授權說明 原創(chuàng)性聲明 本人鄭重承諾:所呈交的畢業(yè)設計(論文),是我個人在指導教師的指導下進行的研究工作及取得的成果。 作者簽名: 日期: 年 月 日 學位論文版權使用授權書 本學位論文作者完全了解學校有關保留、使用學位 論文的規(guī)定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。中國作為全球最大的移動通信市場,手機游戲產(chǎn)業(yè)一旦啟動,其能量將不亞于目前的電腦網(wǎng)絡游戲,可以預見手機游戲行業(yè)正蘊藏了無數(shù)的商機,未來擁有廣闊的 市場前景。 本文主要從游戲開發(fā)中的技術要素角度入手研究手機游戲開發(fā)技術 ,基于目前主流的 J2ME 移動開發(fā)平臺 ,研究如何在系統(tǒng)資源和處理速度相當有限的移動設備上開發(fā)出高效的游戲應用軟件 ,進而比較高效的實現(xiàn)手機游戲開發(fā)中較為常用的關鍵技術 ,在目前手機游戲市場飛速發(fā)展的趨勢下,是有著相當?shù)默F(xiàn)實意義和價值的研究課題。中國聯(lián)通也推出了基于 Java 和 BREW 平臺的手機游戲業(yè)務,手機游戲業(yè)務發(fā)展步伐不斷加快。使得手機游戲的開發(fā)前景無限光明 [3]。 論文以在校期間學習的 J2ME 平臺手機軟件開發(fā)為背景,結合自身比較感興趣的游戲開發(fā)方向,圍繞目前應用廣泛的 J2ME 的移動平臺下的游戲開發(fā)關鍵技術為主題,在對 J2ME 平臺下的手機游戲開發(fā)技術進行了全面研究的基礎上,重點深入分析研究了手機游戲通用框架,以及開發(fā)運行一款簡單的手機游戲,在J2ME 平臺上完成設計實現(xiàn) ,并獲得了比較滿意的運行效果。主要包括程序所需要解決的問題,以及在坦克大戰(zhàn)的具體實現(xiàn)過程中我們所用到的繪圖技術和程序所需要的應用技術比如:內存使用的最佳化和混淆器的使用。 J2ME 不是 一個單獨的技術規(guī)范,而是一系列技術規(guī)范的總稱, J2ME 適用于這些設備的同時也保留了 JAVA 的傳統(tǒng)特性,即在任何時間,任何地點的任何代碼具有可移植性,部署靈活性,安全的網(wǎng)絡傳輸性,以及代碼穩(wěn)定性,所以開發(fā)人員才可以編寫程序運行在其他廠商設備上,它主要以消費類產(chǎn)品和嵌入式設備為目標 ,包括各種電子產(chǎn)品,如移動電話、 PDA、電視機頂盒和其他小型設備等。 Java 虛擬機 (JVM): 針對設備本地操作系統(tǒng)定制的 Java 虛擬機的實現(xiàn),支持特定 的 J2ME 配置。本文應用開發(fā)就是基于 J2ME 平臺上的 CLDC 配置和 MIDP 簡表的 [8]。 (3)預校驗:在完成編譯后,必須要對 *.class 文件進行預校驗,這和傳統(tǒng)的Java 程序 (Applet、 Servlet)是不同的。對于如何將其部 署到到手機上,根據(jù)手機的功能不同,通常可以選擇如下方法:使用數(shù)據(jù)線、使用紅外線、使用藍牙或者使用 OTA 技術下載安裝。 MIDlet 及相關的支持類組成了 MIDP 應用程序的實際內容。用戶坦克自誕生之時起將擁有一發(fā)子彈,子彈雖然開在單獨的線程中,但運行結束后(比如撞到相關物體或敵方坦克時)并不結束子彈對象,只是將其線程終止。在選擇開始后,將運行該類中的總流程控制。如果一定發(fā)生轉向,試想,當敵方碰到玩家時,如果它立即轉向,將不會對玩家發(fā)射射向他的子彈,就不構成任何威脅,當然,也不能永遠不轉向。在其出現(xiàn)在屏幕上的運行周期中,每一步都需要循環(huán)檢測以下條件 [12] 是否與某坦克發(fā)生了碰撞,即擊中了這輛坦克。 子彈對不同障礙物將有不同的反映。涉及到藝術,文學,邏輯學,社會學,歷史等等一系列的元素。 ,以免重疊運行,造成許多物理上不可能的情況,缺乏真實感。 15 ,根據(jù) FC 版的坦克大戰(zhàn)去設計各種初始參數(shù),例如:坦克數(shù)量,坦克類型設置,游戲圖形匹配,游戲速度。 與高級 API 相比控制更加靈活,但這是以其復雜性、高成本為代價的,并犧牲了一定的可移植性。 Graphics 類 Graphics 類中提供了一套各不相同的關于圖形繪制的方法 ,一般來說,圖形繪制首先要調用相關的方法進行顏色設置、坐標變換和剪裁。 Game 包中的 TiledLayer和 Sprite 類都整合了這樣的功能。高層事件用來處理應用中的相關事件,如:命令事件、組件狀態(tài)變化事件。 Key Released 方法 可以說方法 key Released 與上面提到的 keyPressed 方法是對應的。在應用程序內,對于所建立的類、接口、方法及變量名而言,都需要賦予一個識別的名稱,所命名的名稱每多一個字符就會在類文件內多產(chǎn)生一個字節(jié),對于一個較復雜的應用程序而言就會增加為數(shù)不小的數(shù)據(jù)量。然而這樣會導致 .class 很容 易被反編譯為源代碼,從而不能保護作者的知識成果。 為了能與各種 IDE 集成,就像 Java2 SDK 一樣,混淆器采用命令行參數(shù)的形式,以便可被其調用。該類中擁有可以管理程序的創(chuàng)建、開始、暫停(手機中很可能有正在運行程序卻突然來電的情況,這時應進入暫停狀態(tài)。鍵盤事件中,可用 getCommandType()返回的 Command 類型來確定選擇的是什么按鈕 , 本程序中主要是通過 MEAU 命令按鈕來連接各個界面之間的相互轉換。它運行在獨立的線程中,以恒定的頻率刷新畫面。還需保存的變量有,游戲開始時間、結束時間(用于統(tǒng)計分數(shù))、敵人的總數(shù)、屏幕上敵人的數(shù)量、下一個敵人需要出現(xiàn)的位置(總共允許在三個不同的位置出現(xiàn),分別位于屏幕的左、中、右方)、游戲是否已成功結 束或是否已死亡。程序中建立了另外的兩個類,分別表述了敵人坦克和玩家坦克的功能。在游戲說明界面玩家可以了解到游戲的一些基本信息,以及制作者的相關情況。同時這個類還繼承了 mandListener,這樣就可以使用高級界面的 Command 按鈕。地圖元素有:空白區(qū)域、鐵墻、磚墻、草地和飛鷹標志,飛鷹標志是玩家守護的對象。混淆器將代碼中的所有變量、函數(shù)、類的名稱變?yōu)楹喍痰挠⑽淖帜复枺绻狈ο鄳暮瘮?shù)名指示和程序注釋,即使被反編譯,也將難以閱讀。將 PNG 格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了 chunks,將比合并前的總大小減少許多。 內存使用的最佳化 通常在 MIDP 應用程序的手機執(zhí)行環(huán)境中,所牽涉的內存有下列三種: 一 、應用程序存儲內存 二 、 RecordStore 存儲內存 三 、執(zhí)行時期內存 (Java Heap)。 17 Key Pressed 方法 方法 key Pressed 是用來處理鍵被按下的事件,這個方法沒有與其對應的顯示的聽眾對象 (Listener),這些聽眾對象有系統(tǒng)根據(jù)實際對象缺省提供,例如后面提到的 Canvas 對象就是默認的 key 事件 聽眾對象,它缺省地實現(xiàn)了 Key Listener接口 [14]。 這樣的技術在繪制動畫時特別有用。 圖片格式 PNG(Portable Network Graphics)格式是 MIDlet 唯一支持的圖象格式。 Canvas 提供了鍵盤事件、指點桿事件(如果設備支持), 并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù) 。制作友好的用戶界面可以更