版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 畢業(yè)設(shè)計(jì)(論文)中文題目: J2ME手機(jī)游戲設(shè)計(jì) 英文題目Development of Cell Phone Game Based on J2ME 學(xué) 院:計(jì)算機(jī)與信息技術(shù)專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名:學(xué) 號(hào):指導(dǎo)教師: 20xx 年 06 月 07 日目 錄目 錄1摘 要3第一章 緒論61.1手機(jī)游戲特征61.2手機(jī)游戲的類型81.3手機(jī)軟件現(xiàn)狀81.4手機(jī)游戲未來的發(fā)展方向91.5游戲業(yè)務(wù)及J2ME概述101.6小結(jié)12第二章 開發(fā)環(huán)境132.1.開發(fā)環(huán)境132.2.Java語言特點(diǎn)132.3.關(guān)于J2ME程序開發(fā)142.4.關(guān)于Netbeans IDE 4.1152.5.關(guān)于Mob
2、ility Pack 4.1162.6.關(guān)于Wireless Tool Kit162.7.Java Appication Manager172.8.小結(jié)17第三章 相關(guān)技術(shù)183.1.游戲中面臨的技術(shù)問題183.2.Canvas類193.3.碰撞檢測(cè)法193.4.雙緩沖技術(shù)203.5.Graphics類213.6.繪制背景技術(shù)223.7.PNG圖片格式243.8.子彈的運(yùn)行和控制243.9.內(nèi)存的優(yōu)化253.10.內(nèi)存檢測(cè)器253.11.關(guān)于混淆器263.12.本文工作263.13.小結(jié)27第四章 程序的設(shè)計(jì)與實(shí)現(xiàn)284.1.程序流程284.2.游戲開始界面304.3.Bullets類314.
3、4.GameWorld類344.4.1.GameWorld類所實(shí)現(xiàn)的功能354.4.2.地圖的創(chuàng)建364.4.3.GameWorld類的構(gòu)造函數(shù)374.5.關(guān)于游戲的主角Plane類394.5.1.玩家飛機(jī)的控制方式和敵方子彈的智能運(yùn)行404.5.2.reset()方法414.5.3.input()方法424.6.Clock時(shí)鐘類444.7.關(guān)于InputAction和InputManager類454.8.ImageFont和ImageUtilities類464.9.小結(jié)49第五章 測(cè)試505.1.打包測(cè)試的過程505.2.發(fā)現(xiàn)的BUG及解決情況50第六章 總結(jié)526.1.總結(jié)和展望526.2
4、.感想52致 謝54參考文獻(xiàn)55附錄一 操作說明56附錄二 英文文獻(xiàn)及其譯文58英文文獻(xiàn)58譯文72摘 要隨著手機(jī)的日益普及、Java功能在移動(dòng)設(shè)備上的實(shí)現(xiàn),Java應(yīng)用程序產(chǎn)生的手機(jī)增值服務(wù)逐漸體現(xiàn)出其影響力,對(duì)豐富人們的生活內(nèi)容、提供快捷的資訊起著不可忽視的作用。J2ME(Java 2 Micro Edition) 是近年來隨著各種不同設(shè)備,尤其是移動(dòng)通信設(shè)備的飛速發(fā)展而誕生的一項(xiàng)新的開發(fā)技術(shù)。它定位在消費(fèi)性電子產(chǎn)品的應(yīng)用上,對(duì)設(shè)備的智能化、多樣化,提供了革命性的解決方案,并因其“Write Once, run anywhere”的Java特性而提高開發(fā)的效率。 本文基于J2ME技術(shù)開發(fā)了
5、一款可商用的手機(jī)游戲程序Hold。程序的界面和運(yùn)作方式來源于PC機(jī)游戲是男人就撐過20秒,將老少皆宜的經(jīng)典作品移植到手機(jī)上來,為更流行的硬件平臺(tái)提供應(yīng)用軟件。本文以Netbeans IDE 4.1 和 Mobility Pack 4.1為開發(fā)平臺(tái),充分運(yùn)用MIDP 2.0 游戲開發(fā)包的各個(gè)類,實(shí)現(xiàn)模擬手機(jī)按鍵控制游戲主角飛機(jī)的上、下、左、右運(yùn)行、爆炸處理。程序控制敵人子彈的運(yùn)行方向、速度,位置等,判定游戲結(jié)束,并記錄游戲時(shí)間,顯示游戲評(píng)語。通過碰撞處理,雙緩沖技術(shù)使游戲主角飛機(jī)運(yùn)行、畫面顯示無閃爍。關(guān)鍵字:J2ME;手機(jī)游戲;JavaAbstractJ2ME is a kind of fast
6、 developing technology implemented on various devices especially mobile communication equipments. It focuses on application for consumptive electronic products, providing revolutionary solution to the intelligentization and diversification of the equipment. It improve the efficiency of the developme
7、nt process thanks to its “Write Once, run anywhere” nature. When cell phone is getting ever more popular nowadays, with the implementation of Java technology on mobile equipment, increment of capital on communication service exhibits its force on peoples everyday life, providing them ever fast infor
8、mation just in hand. This dissertation focuses on implementation of J2ME technology and has developed a commercial game suite run on mobile phoneshold. This application inherits many characters of the old fashioned game he who hold twenty seconds is a man.It transports the classical product to mobil
9、e phones, offering corresponding software for such more popular hardware platform. Based Netbeans IDE 4.1 and Mobility Pack 4.1 for the development platform make full use of MIDP 2.0 games development kits in all categories, analog phone keypad control game characters aircraft, the up,the bottom, th
10、e left and right running, handling explosives. Program control the operation of the enemy bullets direction, speed, location and determining the end of games and game record time show game reviews. Through collisions, double buffering technology enables game characters aircraft operation, the screen
11、 showed no flicker.Key words: J2ME; Mobile Game; Java. 第一章 緒論手機(jī)游戲成績(jī)斐然,成為IT產(chǎn)業(yè)中增長(zhǎng)最快的部分之一。縱觀IT產(chǎn)業(yè)的歷史,計(jì)算機(jī)游戲已經(jīng)成為技術(shù)創(chuàng)新背后的動(dòng)者渴望更加強(qiáng)大的硬件計(jì)算能力;渴望不受不同的軟件的限制1。無論是將圖形強(qiáng)制在人工智能(AI)上還是網(wǎng)絡(luò)安全性。游戲開發(fā)者和玩家常常是前沿計(jì)算機(jī)技術(shù)的最早的采用者。由于他們的創(chuàng)新天性,游戲不再是由大型采購(gòu)公司控制的技術(shù)產(chǎn)品。游戲領(lǐng)域總是有充足的空間給那些在這方面有天分的單個(gè)創(chuàng)新者。隨著技術(shù)對(duì)游戲經(jīng)驗(yàn)的促進(jìn),游戲市場(chǎng)持續(xù)增長(zhǎng)。商業(yè)IT革命為我們節(jié)省了時(shí)間力之一。計(jì)算機(jī)游戲和
12、金錢,從而提高了我們的工作水平,我們因此花費(fèi)更多的時(shí)間和金錢在游戲上,來改善生活的整體質(zhì)量。甚至在當(dāng)今困難的經(jīng)濟(jì)時(shí)代,游戲仍保持快速增長(zhǎng),他仍然是盈利行業(yè)的組成部分。Java開發(fā)者應(yīng)該注意到這里蘊(yùn)藏著的巨大的商機(jī)2。 1.1 手機(jī)游戲特征 手機(jī)游戲的盈利主要是由于它們的涉及面很廣。手機(jī)已經(jīng)與現(xiàn)代生活方式緊緊地結(jié)合在一起。他們是最普遍攜帶的個(gè)人用品中僅次于鑰匙和錢包的東西。傳統(tǒng)的臺(tái)式機(jī)游戲?qū)⒛繕?biāo)鎖定在低級(jí)趣味的人和青少年身上,而手機(jī)游戲則每個(gè)人都可以隨時(shí),隨地訪問的到。盡管每個(gè)手機(jī)游戲都不貴,但是巨大的使用量(如:每人每星期一個(gè)新游戲)將使得這個(gè)市場(chǎng)商機(jī)無限并且有利可圖。但是,對(duì)于開發(fā)者來說,將
13、控制臺(tái)游戲遷移到手機(jī)游戲工程很大因?yàn)樗麄兯嫦虻膶?duì)象、生活方式和分布式模型都有著極大的區(qū)別。讓我們從手機(jī)游戲的需求談起吧。 一個(gè)成功的手機(jī)游戲大多具有以下特征: 易于學(xué)習(xí): 既然手機(jī)游戲面向的是普通消費(fèi)者而不是計(jì)算機(jī)高手,那么他們不可能深入的學(xué)習(xí)游戲技巧。消費(fèi)者不會(huì)花幾個(gè)小時(shí)去研究一個(gè)3美元的手動(dòng)操作的游戲。所以游戲必須是一下載就可以玩的。保持游戲的簡(jiǎn)單是最基本的要求。 (1) 可中斷性:多任務(wù)處理是手機(jī)生活方式的基本特征。手機(jī)用戶常常在任務(wù)(如等一個(gè)電子郵件或者等車)之間有一小段時(shí)間。而游戲、日歷管理、通訊和工作數(shù)據(jù)訪問使用的是同一個(gè)設(shè)備。所以一個(gè)好的手機(jī)游戲應(yīng)該提供短時(shí)間的娛樂功能,并且允
14、許用戶在游戲和工作模式之間順利切換。 (2) 基于訂閱:手機(jī)游戲的盈利成功取決于他們巨大的使用量。一開始開發(fā)和設(shè)計(jì)每個(gè)游戲都是昂貴的。如果一個(gè)手機(jī)游戲開發(fā)者要賺錢的話,重要的是:同一個(gè)游戲引擎,多個(gè)標(biāo)題,基本的故事情節(jié)類似。基于訂閱的游戲是不斷產(chǎn)生收入的最好方法。 (3) 豐富的社會(huì)交互: 不管一個(gè)游戲設(shè)計(jì)得多好,只要玩家找到了它的根本模式或者玩完了所有的游戲路徑很快就會(huì)厭煩這個(gè)游戲。對(duì)于一個(gè)基于訂閱的游戲,重要的是與別的玩家合作以增強(qiáng)所玩游戲的智力和隨機(jī)性。在今天紛繁復(fù)雜的多玩家游戲中具有豐富社會(huì)交互的游戲證明是成功的。 (4) 利用手機(jī)技術(shù)的優(yōu)點(diǎn): 巨額的手機(jī)技術(shù)研發(fā)費(fèi)用都花在提高設(shè)備和網(wǎng)
15、絡(luò)的可用性和可靠性上面。因此,手機(jī)設(shè)備硬件和網(wǎng)絡(luò)協(xié)議與桌面/控制臺(tái)世界(如全球定位系統(tǒng)(GPS)擴(kuò)展、條形碼掃描儀、和短消息服務(wù)(SMS)/多媒體信息服務(wù)(MMS)通訊)有著非常大的差別。好的手機(jī)游戲應(yīng)該利用那些更新的設(shè)備特征和網(wǎng)絡(luò)基礎(chǔ)設(shè)備的優(yōu)點(diǎn)。 (5) 無違法內(nèi)容:既然所有年齡/性別的人群都玩手機(jī)游戲并且常常在公共工作場(chǎng)合,你應(yīng)該避免明顯的暴力或者色情內(nèi)容3。 1.2 手機(jī)游戲的類型 基于以上標(biāo)準(zhǔn),最有可能成功的手機(jī)游戲就是那些臨時(shí)小游戲,它可為廣泛的玩家在所有的社交場(chǎng)合提供娛樂。特別是,下列類型的游戲?qū)⑹敲魈熳罹哂袣Φ挠螒颍?(1) 多玩家游戲: 這些游戲可以提供手機(jī)訪問以便建立在線
16、游戲團(tuán)體?;蛘撸麄兝檬謾C(jī)專有特征如多媒體通訊和基于位置的服務(wù),從而創(chuàng)建完全不同的社會(huì)結(jié)構(gòu)。好的游戲設(shè)計(jì)和管理是這種類型游戲成功的關(guān)鍵。 (2) 基于內(nèi)容的游戲:這些游戲傳送版權(quán)的多媒體內(nèi)容,如名人的圖片、視頻片斷、音頻立體聲、和私人的體育節(jié)目,給那些音樂/電影/體育迷們。它成功的關(guān)鍵就是提供值得訂閱的高品質(zhì)的內(nèi)容流。 (3) 高沖擊的視頻游戲:PC 和臺(tái)式游戲已經(jīng)從2D 進(jìn)化到3D。手機(jī)游戲也會(huì)遵循這種趨勢(shì)。現(xiàn)在已經(jīng)出現(xiàn)手機(jī)3D工具箱和聽筒。但是,3D是非常資源集中型的。他們要求開發(fā)者和圖形設(shè)計(jì)者都是專家級(jí)的。專業(yè)的商店最有可能開發(fā)這些游戲。 在手機(jī)游戲的早期,大多數(shù)開發(fā)者都是想要玩轉(zhuǎn)設(shè)備
17、、學(xué)習(xí)技巧和快速攻關(guān)的狂熱分子。但是,隨著更多的開發(fā)者加入這個(gè)行業(yè),手機(jī)游戲已經(jīng)進(jìn)化成涉及到專業(yè)設(shè)計(jì)師、構(gòu)造師、開發(fā)者、產(chǎn)品經(jīng)銷商、律師、和藝術(shù)家在內(nèi)的主導(dǎo)產(chǎn)品。這是行業(yè)走向成熟的必然趨勢(shì)。盡管在某人的業(yè)余時(shí)間內(nèi)要開發(fā)和推銷簡(jiǎn)單的游戲更加困難,但是更多的專業(yè)商店將為許多人提供更多的就業(yè)機(jī)會(huì)。 1.3 手機(jī)軟件現(xiàn)狀 在信息社會(huì)中,手機(jī)及其他無線設(shè)備越來越多的走進(jìn)普通百姓的工作和生活,隨著信息網(wǎng)絡(luò)化的不斷進(jìn)展,手機(jī)及其他無線設(shè)備上網(wǎng)絡(luò)勢(shì)在必行。但是傳統(tǒng)手機(jī)存在以下弊端: (1) 傳統(tǒng)手機(jī)出廠時(shí)均由硬件廠商固化程序,程序不能增加、刪除,有了錯(cuò)誤也不能更新、修改,若要增加新功能必須另換一部手機(jī)。 (2
18、) 傳統(tǒng)手機(jī)訪問互聯(lián)網(wǎng)是通過WAP(Wireless Application Protocal),所有網(wǎng)絡(luò)資源必須接通網(wǎng)絡(luò)才能在線訪問,非常耗時(shí)、費(fèi)用亦很高。 而Java技術(shù)在無線應(yīng)用方面的優(yōu)勢(shì)非常明顯:(1) 應(yīng)用程序可按需下載,而不是購(gòu)買由硬件商提供的套件,可升級(jí)空間大。 (2) Java技術(shù)提供了一個(gè)類庫,它使的應(yīng)用開發(fā)商可以創(chuàng)建更為直覺、豐富的用戶界面(GUI); (3) Java技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用更為有效,因?yàn)閼?yīng)用程序可以下載到器件上,并在本地運(yùn)行,僅僅是在連接到服務(wù)器時(shí)才會(huì)占用網(wǎng)絡(luò)帶寬。 基于以上分析,Java手機(jī)將是未來手機(jī)的發(fā)展方向,是業(yè)界的熱點(diǎn)。 1.4 手機(jī)游戲未來的發(fā)展
19、方向剛起步的手機(jī)游戲或許將成為最有前途的盈利模式。市場(chǎng)研究公司易觀國(guó)際日前在報(bào)告中稱,到2008年中國(guó)手機(jī)網(wǎng)絡(luò)游戲市場(chǎng)總產(chǎn)值將達(dá)到7.14億美元,相當(dāng)于2004年的7倍以上。我們拭目以待。 信息產(chǎn)業(yè)部最新統(tǒng)計(jì)表明,截至4月底,手機(jī)用戶數(shù)為3.53711億戶。手機(jī)普及率為25.9%。數(shù)據(jù)顯示,亞洲地區(qū)移動(dòng)電話服務(wù)用戶數(shù)量(不含日本),將在印度和中國(guó)地區(qū)的蓬勃增長(zhǎng)帶動(dòng)下,以平均每年11%的速度增加,并在2009年達(dá)到9.011億4。 手機(jī),已經(jīng)成為大眾消費(fèi)品,它已經(jīng)是人們?nèi)粘I畹谋匦杵贰J謾C(jī)用戶中有相當(dāng)一部分是時(shí)尚的青年人。在大部分的時(shí)間里,人們都會(huì)攜帶著手機(jī)。在等人的時(shí)候,在無聊的時(shí)候,手機(jī)就
20、體現(xiàn)出通信以外的價(jià)值。隨著技術(shù)的改進(jìn),用大屏幕的彩屏手機(jī)玩游戲,已經(jīng)是時(shí)尚人士的共同愛好之一。 目前國(guó)內(nèi)手機(jī)游戲已走過了從最初的文字類游戲、嵌入式游戲、可下載的單機(jī)版游戲到大型手機(jī)網(wǎng)絡(luò)游戲的發(fā)展歷程,手機(jī)游戲的業(yè)務(wù)形態(tài)日益成熟。手機(jī)游戲的盈利主要是由于它們的涉及面很廣。手機(jī)已經(jīng)與現(xiàn)代生活方式緊緊地結(jié)合在一起。他們是最普遍攜帶的個(gè)人用品中僅次于鑰匙和錢包的東西。傳統(tǒng)的臺(tái)式機(jī)游戲?qū)⒛繕?biāo)鎖定在低級(jí)趣味的人和青少年身上,而手機(jī)游戲則每個(gè)人都可以訪問的到隨時(shí),隨地。盡管每個(gè)手機(jī)游戲都不貴,但是巨大的使用量(如:每人每星期一個(gè)新游戲)將使得這個(gè)市場(chǎng)商機(jī)無限。只要有好的游戲,就會(huì)有更廣的使用量。 1.5 游
21、戲業(yè)務(wù)及J2ME概述 雖然 Java 已經(jīng)被用到許多企業(yè)級(jí)軟體上,可是其實(shí)骨子里面還是非常適合用在嵌入式系統(tǒng)之中。Java平臺(tái)演進(jìn)到Java2后,Java平臺(tái)分別針對(duì)不同領(lǐng)域的需求被分成四個(gè)版本,亦即J2EE、J2SE、J2ME以及JavaCard。其中J2ME定位在消費(fèi)性電子產(chǎn)品的應(yīng)用上。這個(gè)版本針對(duì)資源有限的電子消費(fèi)產(chǎn)品的需求精簡(jiǎn)核心類庫,并提供了模塊化的架構(gòu)讓不同類型產(chǎn)品能夠隨時(shí)增加支持的能力。這個(gè)版本的應(yīng)用層面相當(dāng)廣泛,會(huì)是未來Java平臺(tái)發(fā)展的重點(diǎn)項(xiàng)目。J2ME 在設(shè)計(jì)其規(guī)格的時(shí)候,遵循著“對(duì)各種不同的裝置而造出一個(gè)單一的開發(fā)系統(tǒng)是沒有意義的事”這個(gè)基本原則。于是 J2ME 先將所有
22、的嵌入式裝置大體上區(qū)分為兩種:一種是運(yùn)算功能有限、電力供應(yīng)也有限的嵌入式裝置(比方說PDA 、手機(jī));另外一種則是運(yùn)算能力相對(duì)較佳、在電力供應(yīng)上相對(duì)比較充足的嵌入式裝置 (比方說冷氣機(jī)、電冰箱、電視機(jī)頂盒 (set-top box)。因?yàn)檫@兩種型態(tài)的嵌入式裝置,所以Java 引入了一個(gè)叫做Configuration 的概念,把上述運(yùn)算功能有限、電力有限的嵌入式裝置定義在Connected Limited Device Configuration(CLDC)規(guī)格之中;而另外一種裝置則規(guī)范為 Connected Device Configuration(CDC)規(guī)格。也就是說, J2ME 先把所有
23、的嵌入式裝置利用Configuration 的概念區(qū)隔成兩種抽象的型態(tài)。J2ME平臺(tái)被認(rèn)為是最杰出的手機(jī)游戲平臺(tái),它為開發(fā)者、設(shè)備制造商、網(wǎng)絡(luò)通信公司和消費(fèi)者廣泛接受。它有一些非常重要的特征對(duì)所有組織都有益。因?yàn)镴2ME應(yīng)用在不同設(shè)備上都是便攜式的,他們常??稍诰W(wǎng)絡(luò)上下載和執(zhí)行。如果沒有正確的防范,它則為用戶和無線通信公司冒著無數(shù)個(gè)安全的風(fēng)險(xiǎn)。幸運(yùn)的是,Java被設(shè)計(jì)成一種安全的語言。所有字節(jié)碼應(yīng)用在執(zhí)行之前都要校驗(yàn);JVM在執(zhí)行過程中監(jiān)督應(yīng)用的安全性和存儲(chǔ)違反問題。MIDP v2 運(yùn)行時(shí)間包括一個(gè)完全特征化的、基于域的安全管理員,它在應(yīng)用的數(shù)字簽名者鑒別的基礎(chǔ)上賦予應(yīng)用API級(jí)許可。 縱觀I
24、T產(chǎn)業(yè)的歷史,就像軍事的發(fā)展時(shí)常推動(dòng)計(jì)算機(jī)的演化一樣,計(jì)算機(jī)游戲已經(jīng)成為技術(shù)創(chuàng)新背后的動(dòng)力之一。計(jì)算機(jī)游戲者渴望更加強(qiáng)大的硬件計(jì)算能力;渴望不受不同的軟件的限制無論是將圖形強(qiáng)制在人工智能(AI)上 還是網(wǎng)絡(luò)安全性。游戲開發(fā)者和玩家常常是前沿計(jì)算機(jī)技術(shù)的最早的采用者。由于他們的創(chuàng)新天性,游戲不再是由大型采購(gòu)公司控制的技術(shù)產(chǎn)品游戲領(lǐng)域總是有充足的空間給那些在這方面有天分的單個(gè)創(chuàng)新者。 手機(jī)游戲的盈利主要是由于它們的涉及面很廣。手機(jī)已經(jīng)與現(xiàn)代生活方式緊緊地結(jié)合在一起。他們是最普遍攜帶的個(gè)人用品中僅次于鑰匙和錢包的東西。傳統(tǒng)的臺(tái)式機(jī)游戲?qū)⒛繕?biāo)鎖定在低級(jí)趣味的人和青少年身上,而手機(jī)游戲則每個(gè)人都可以訪問
25、的到隨時(shí),隨地。盡管每個(gè)手機(jī)游戲都不貴,但是巨大的使用量(如:每人每星期一個(gè)新游戲)將使得這個(gè)市場(chǎng)商機(jī)無限。但是,對(duì)于開發(fā)者來說,將控制臺(tái)游戲遷移到手機(jī)游戲工程很大。因?yàn)樗麄兯嫦虻膶?duì)象、生活方式和分布式模型都有著極大的區(qū)別。1.6 小結(jié)本章介紹了手機(jī)在無線應(yīng)用方面的當(dāng)今概況,J2ME的相關(guān)內(nèi)容,分析了J2ME在手機(jī)軟件開發(fā)中起的重要作用,描述了本論文的相關(guān)背景。第二章 開發(fā)環(huán)境Java手機(jī)游戲的開發(fā)工具有很多種,像eclipse 、JBuilderX 、只要JDK + WTK + 文本編輯器、netbeans+mobile包等等都是已經(jīng)比較成熟的開發(fā)工具。本章介紹本游戲的開發(fā)環(huán)境以及相關(guān)知識(shí)
26、。2.1. 開發(fā)環(huán)境操作系統(tǒng):Microsoft Windows XP程序語言:Java 2開 發(fā) 包:Java(TM) 2 Standard Edition (5.0) Sun Micro. J2ME Wireless Tool Kit 2.2開發(fā)平臺(tái):Netbeans IDE 4.1 Mobility Pack 4.12.2. Java語言特點(diǎn)(1) 平臺(tái)無關(guān)性Java引進(jìn)虛擬機(jī)原理,并運(yùn)行于虛擬機(jī),實(shí)現(xiàn)不同平臺(tái)之間的Java接口。Java的數(shù)據(jù)類型與機(jī)器無關(guān)。(2) 安全性Java的編程類似C+,但舍棄了C+的指針對(duì)存儲(chǔ)器地址的直接操作,程序運(yùn)行時(shí),內(nèi)存由操作系統(tǒng)分配,這樣可以避免病毒通
27、過指針入侵系統(tǒng)。它提供了安全管理器,防止程序的非法訪問。(3) 面向?qū)ο驤ava吸收了C+面向?qū)ο蟮母拍?,將?shù)據(jù)封裝于類中,實(shí)現(xiàn)了程序的簡(jiǎn)潔性和便于維護(hù)性,使程序代碼可以只需一次編譯就可反復(fù)利用。(4) 分布式Java建立在TCP/IP網(wǎng)絡(luò)平臺(tái)上,提供了用HTTP和FTP協(xié)議傳送和接收信息的庫函數(shù),使用其相關(guān)技術(shù)可以十分方便的構(gòu)建分布式應(yīng)用系統(tǒng)。(5) 健壯性Java致力與檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤,并自動(dòng)回收內(nèi)存,減少了內(nèi)存出錯(cuò)的可能性。Java取消了C語言的結(jié)構(gòu)、指針、#define語句、多重繼承、goto語句、操作符、重載等不易被掌握的特性,提供垃圾收集器自動(dòng)回收不用的內(nèi)存空間5。2.
28、3. 關(guān)于J2ME程序開發(fā)在Java規(guī)格之中有一組所謂的核心類函數(shù)庫(Core Class,即java.*),在核心類以外還有所謂的擴(kuò)充類函數(shù)庫(Extended Class,即javax.*)。根據(jù)對(duì)這兩種類所支持的程度,Sun Microsystems進(jìn)而區(qū)分出四種不同的Java版本,如圖2.1所示6。該圖說明了這些版本所支持的Java基本類型(primitive type,即boolean、byte、short、int、long、float、double這些類型)的范圍。越靠近同心圓的外面,所支持的核心類函數(shù)庫就越完整。反之,位于同心圓內(nèi)部的Java版本,所支持的就只是核心類函數(shù)庫的子集
29、,而且越往里面,所支持的核心類函數(shù)庫集合就越小。同理,越是同心圓的外部,所支持的Java基本類型就越完整,而越往同心圓內(nèi)部,所支持的Java基本類型就越少。J2EEJ2SEJ2MESmart Card圖2.1 Java版本示意圖2.4. 關(guān)于Netbeans IDE 4.1NetBeans 是一個(gè)成功的開發(fā)源碼計(jì)劃,擁有全球近 100 個(gè)合作伙伴的不斷發(fā)展壯大的團(tuán)體。 Sun Microsystems 于 2000 年 6 月創(chuàng)建了 NetBeans 開放源碼計(jì)劃,并繼續(xù)充當(dāng)該計(jì)劃的主贊助商。目前存在兩個(gè)產(chǎn)品: NetBeans IDE 和 NetBeans 平臺(tái)。NetBeans IDE 是
30、一個(gè)開發(fā)環(huán)境 供程序員編寫、編譯、調(diào)試和部署程序的一個(gè)工具。 它是用 Java 編寫的 但卻可以支持任何編程語言。 另外也有巨大數(shù)量的模塊來擴(kuò)展 NetBeans IDE,它是一個(gè)免費(fèi)產(chǎn)品,不限制其使用形式。 此外還可獲得 NetBeans 平臺(tái) 一個(gè)模塊化的且可擴(kuò)展的基礎(chǔ),用作創(chuàng)建大型桌面應(yīng)用程序的軟件基石。 ISV 合作伙伴提供增值的插件,它們很容易集成到 IDE 中,并且也可用以開發(fā)其本身的工具和解決方案。NetBeans 3.5.1可支持Java 2平臺(tái)標(biāo)準(zhǔn)版(J2SE)應(yīng)用的創(chuàng)建、采用JSP和Servlet的2層Web應(yīng)用的創(chuàng)建,以及用于2層Web應(yīng)用的API及軟件的核心組的創(chuàng)建。此
31、外,NetBeans 3.5.1還預(yù)裝了一個(gè)Web服務(wù)器,即TomCat,從而免除了繁瑣的配置和安裝過程。所有這些都為Java開發(fā)人員創(chuàng)造了一個(gè)可擴(kuò)展的開放源多平臺(tái)的Java IDE,以支持他們?cè)诟髯运x擇的環(huán)境中從事開發(fā)工作,如Solaris、Linux、Windows或Macintosh。NetBeans 3.5.1也?面向JDK 1.4.0、1.4.1和1.4.2的應(yīng)用開發(fā)提供支持。這兩個(gè)產(chǎn)品都可免費(fèi)用于商業(yè)和非商用目的,并且在 Common Development and Distribution License (CDDL) 的限制下可獲得供重用的源碼。2.5. 關(guān)于Mobility
32、 Pack 4.1Mobility Pack是Netbeans IDE的一個(gè)插件,用于開發(fā)J2ME應(yīng)用程序??梢蚤_發(fā),測(cè)試和調(diào)試MIDP應(yīng)用程序,Mobility Pack 4.1可以和Netbeans IDE 4.1無縫集成,支持CLDC1.1和MIDP 2.0開發(fā)環(huán)境。其功能非常強(qiáng)大,可以方便的管理項(xiàng)目、打包和簽名、混淆、部署。Mobility Pack 4.1還可以很容易的與第三方模擬器集成,為開發(fā)者提供了所需的運(yùn)行環(huán)境7。2.6. 關(guān)于Wireless Tool KitWTK 的全稱是Sun J2ME Wireless Toolkit Sun的無線開發(fā)工具包。這一工具包的設(shè)計(jì)目的是為了
33、幫助開發(fā)人員簡(jiǎn)化J2ME的開發(fā)過程。使用其中的工具可以開發(fā)與 Java Technology for the Wireless Industry (JTWI, JSR 185) 規(guī)范兼容的設(shè)備上運(yùn)行的J2ME 應(yīng)用程序。WTK(Wireless Tool Kit)是Sun公司針對(duì)J2ME推出的用于手機(jī)和Palm等移動(dòng)設(shè)備的開發(fā)包。該工具箱包含了完整的生成工具、實(shí)用程序以及設(shè)備仿真器,是除手機(jī)廠商的專用開發(fā)包外唯一的手機(jī)模擬器開發(fā)包。它通用性高,開發(fā)出的應(yīng)用程序可保證能運(yùn)行在大部分設(shè)備上,而不像專用廠商具有一定的不兼容性。雖然它沒有強(qiáng)大的功能和完善的調(diào)試手段,但它提供運(yùn)行模擬器的最基本組件,是其
34、他IDE需集成采用的必備元素6。2.7. Java Appication Manager手機(jī)中負(fù)責(zé)調(diào)配程序運(yùn)行資源的管理后臺(tái)是Java Application Manager。它所使用的傳輸媒體可以是紅外線、網(wǎng)絡(luò)、以及其他可用來傳輸?shù)拿襟w。Java Application Manager 會(huì)從網(wǎng)絡(luò)上下載代表該Application Suite 的JAR 檔,接著在手機(jī)上安裝此MIDlet Suite,然后在手機(jī)開始執(zhí)行該應(yīng)用程序。2.8. 小結(jié)本章介紹了Java語言的特點(diǎn)、本程序的開發(fā)環(huán)境及其相關(guān)工具的原理和使用。第三章 相關(guān)技術(shù)本章介紹一些游戲中遇到的問題。對(duì)于比較復(fù)雜的原理,技術(shù)做深入的介
35、紹。其中碰撞檢測(cè),雙緩沖技術(shù)應(yīng)用非常廣泛。3.1. 游戲中面臨的技術(shù)問題(1) 游戲程序是一項(xiàng)精度要求很高的程序系統(tǒng),因?yàn)槠浯a利用率很高。一個(gè)實(shí)時(shí)運(yùn)行的最終作品,每秒都會(huì)運(yù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ì)中。(2) 游戲中為了美觀,適用性強(qiáng),可能需要采用外部文件引入的圖片貼圖,有關(guān)貼圖,在MIDP2.0中提供了用于增強(qiáng)游戲功能的game包,使得解決靜態(tài)或動(dòng)態(tài)、畫面背景、屏幕刷新的雙緩沖等都有較好的解決方案。(
36、3) 游戲的地圖沒有僅僅通過繪圖來解決。否則,不僅難于控制和處理過多的元素,也會(huì)因過多的大型圖片而不能限制程序的大小,失去手機(jī)上運(yùn)行的程序的原則和Java的優(yōu)勢(shì)。(4) Java是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較C+等完全編譯后的程序低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。除開發(fā)過程中對(duì)結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還使用混淆器(Obfuscator)進(jìn)行程序打包后的優(yōu)化。(5) 游戲的結(jié)束、開始、動(dòng)態(tài)信息畫面作為構(gòu)成一個(gè)程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標(biāo),相關(guān)的美術(shù)構(gòu)圖和人性化設(shè)置也需要有一定的考慮。以上相關(guān)技術(shù)細(xì)節(jié)和整
37、體流程將分別在以下小節(jié)闡述。3.2. Canvas類為了能有效的控制接口的外觀和行為,使用了使用大量的初級(jí)用戶接口類,尤其在游戲程序中,幾乎完全依賴的就是Canvas抽象類進(jìn)行繪圖。從程序開發(fā)的觀點(diǎn)看,Canvas類可與高級(jí)Screen類交互,程序可在需要時(shí)在Canvas中摻入高級(jí)類的組件。Canvas提供了鍵盤事件、指點(diǎn)桿事件(如果設(shè)備支持),并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù)。鍵盤事件由鍵代碼指定,但這樣控制游戲會(huì)導(dǎo)致缺乏通用性,并不是每個(gè)設(shè)備的鍵盤布局都適合游戲的操作。我們?cè)谟螒蜷_發(fā)過程中將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開發(fā)商能定義他們自己的游戲鍵布局。3.3. 碰撞檢測(cè)法
38、常見碰撞檢測(cè)有以下幾種:圓檢測(cè)法、矩形檢測(cè)法、多邊形檢測(cè)法以及使用以上技術(shù)的符合檢測(cè)法(多圓檢測(cè)法、多矩形檢測(cè)法)。Sprite內(nèi)置了對(duì)矩形檢測(cè)法的支持,并且有兩種不同的模式。矩形檢測(cè)法,顧名思義就是根據(jù)矩形區(qū)域作為檢測(cè)依據(jù)。矩形檢測(cè)是最高效的檢測(cè)方法,但由于游戲精靈往往不能充滿整個(gè)矩形檢測(cè)框。所以其誤差也就大了一些。因?yàn)榛诰匦螜z測(cè)有很多的局限性,所以實(shí)際中更多的使用的是圓檢測(cè)法。圓檢測(cè)法比較容易實(shí)現(xiàn),假設(shè)有兩個(gè)物體A和B,使用一段偽碼來描述圓檢測(cè)法:Int dx = A.圓心x坐標(biāo) B圓心.x坐標(biāo);Int dy = A.圓心y坐標(biāo) B圓心.y坐標(biāo);Int distance = A.半徑 +
39、 B.半徑;If(dx*dx+dy*dy< distance*distance) / 碰撞處理實(shí)際中如果使用Sprite類,則圓心可以使用參考點(diǎn)來設(shè)定,而半徑要單獨(dú)保存7。3.4. 雙緩沖技術(shù)在渲染畫面的過程中可能會(huì)出現(xiàn)兩種讓人討厭的視覺現(xiàn)象畫面閃爍和畫面撕裂。畫面閃爍是由于用戶提前看到了渲染的過程。例如,一幅畫面由一個(gè)背景和一個(gè)精靈組成,正常情況是:先畫出背景,然后在上面畫出精靈。然而如果當(dāng)背景已經(jīng)畫出,而精靈尚未畫出的瞬間用戶就看到了畫面。緊接著精靈被渲染的時(shí)候,用戶將感到界面明顯的閃爍。閃爍是特殊情況下用做特效很不錯(cuò),但是在正常情況下出現(xiàn)閃爍就糟透了。另一種視覺現(xiàn)象是畫面撕裂。簡(jiǎn)單
40、地說就是因?yàn)榻缑娴纳习氩糠稚形串嬐辏鸵@示整個(gè)畫面。用戶看到的畫面的上半部分是更新后的,而下半部分則是舊的,形成撕裂。撕裂除了和繪制界面的方式有關(guān)外,還和部分顯示設(shè)備有關(guān)。形成這兩個(gè)問題的根源在于界面的直接操作,也稱直接寫屏。解決的本法是使用緩沖技術(shù)。緩沖的思想在生活中隨處可見:當(dāng)你想采購(gòu)些東西又不太急用的時(shí)候,通常你會(huì)把物品的明澈功能記錄在一個(gè)清單上,等到周末一起從超市買回來。這其中就有緩沖的思想。同樣的,可以通過在一個(gè)后備界面上渲染來代替直接寫評(píng)。每當(dāng)渲染結(jié)束時(shí),就可一次性的把整個(gè)后備界面繪畫到顯示界面上。因?yàn)橹贿M(jìn)行一次繪畫,所以自然就消除了閃爍和一部分撕裂現(xiàn)象。后備界面通常被稱為緩沖區(qū)
41、,是內(nèi)存或顯存中開辟的一塊和真實(shí)界面一樣大小的內(nèi)存區(qū)域。因?yàn)檫@個(gè)技術(shù)用到了兩個(gè)界面:顯示界面和緩沖界面,所以就叫做雙緩沖。與雙緩沖技術(shù)對(duì)用的一種解決界面閃爍的技術(shù)叫做翻轉(zhuǎn)。實(shí)現(xiàn)翻轉(zhuǎn)也需要兩個(gè)界面。開發(fā)者依舊在后備界面上繪畫。不同的是,不再進(jìn)行后備界面到顯示界面的復(fù)制,而是直接將后備界面切換成當(dāng)前界面,而當(dāng)前界面自然就成了后備界面。翻轉(zhuǎn)通常要比雙緩沖快些,因?yàn)楣?jié)約了內(nèi)存間復(fù)制的時(shí)間。但是翻轉(zhuǎn)需要設(shè)備的支持。盡管大多數(shù)桌面電腦的顯卡都支持翻轉(zhuǎn)技術(shù),但該技術(shù)在手持設(shè)備上可能得不到支持。雙緩沖技術(shù)原理如圖3.3所示8 圖3.3 雙緩沖技術(shù)原理圖3.5. Graphics類Graphics類提供了簡(jiǎn)單的
42、2D繪圖功能。它具有24位深度色彩的繪制能力,以三原色分別各占一個(gè)字節(jié)表示其顏色。程序只能在paint()函數(shù)中使用Graphics繪制,GameCanvas可調(diào)用getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時(shí)間請(qǐng)求傳輸?shù)角芭_(tái)。其對(duì)象會(huì)被傳給Canvas的paint()函數(shù),以便最終顯示。3.6. 繪制背景技術(shù)在沒有MIDP2.0前,進(jìn)行游戲繪圖一般需要手動(dòng)編程使用雙緩沖。需要在paint()方法內(nèi)將所想要畫的圖形畫在一張預(yù)先準(zhǔn)備好的背景上,等所有繪圖操作都完成后再將背景的數(shù)據(jù)拷貝到實(shí)際的屏幕上。Image類提供了一個(gè)建立背景的靜態(tài)方法createImage(int width
43、, int height),再利用getGraphics()方法取得屬于這個(gè)背景的Graphics對(duì)象,所進(jìn)行的繪圖操作都會(huì)作用在背景上,等到全部的繪圖操作完成后,再調(diào)用drawImage()方法將背景的數(shù)據(jù)復(fù)制到實(shí)際顯示的屏幕上。這樣的技術(shù)在繪制動(dòng)畫時(shí)特別有用。繪制動(dòng)畫時(shí)經(jīng)常需要不斷地更新畫面,而更新畫面的操作就是先將屏幕以fillRect()的方式清除,再將下一張圖片畫在屏幕上,然而反復(fù)的清除及重繪會(huì)造成屏幕的閃爍現(xiàn)象(flicker),因此使用雙重緩沖的好處就是在背景進(jìn)行這個(gè)清除及重繪的操作,再將完成的繪圖拷貝到屏幕上,由于用戶看不到清除的操作,因此就不會(huì)出現(xiàn)閃爍的現(xiàn)象了。不過在某些MI
44、DP的實(shí)現(xiàn)上已經(jīng)加上了雙重緩沖的支持,因此在處理前應(yīng)先利用Canvas類的isDoubleBuffer()方法來判斷。隨著手機(jī)的普及,手機(jī)游戲開發(fā)的發(fā)展需要。J2ME的流行促進(jìn)幾個(gè)運(yùn)營(yíng)商和制造商開發(fā)了一些支持游戲的類,但是,這卻造成了游戲缺乏可移植性的問題,例如,很難將使用Siemens的Sprite類的游戲移植到Nokia上。在MIDP2.0版本發(fā)布后,這些游戲移植性問題初步得到了解決。MIDP2.0新加入了GameCanvas、Sprite、Layer、LayerManager、TiledLayer五個(gè)與游戲開發(fā)相關(guān)的類。其中 Layer類一般不會(huì)直接用到。Game類的出現(xiàn)不僅降低了錯(cuò)誤出
45、現(xiàn)的幾率,也使游戲代碼變的更小,因?yàn)殚_發(fā)者不需要自己編寫象Sprite這種例子。下面將簡(jiǎn)要介紹Game類。GameCanvas類繼承自Canvas,所以具有Canvas所具有的功能,還額外增加了一些便于游戲設(shè)計(jì)的功能。比如: GameCanvas類直接提供了getKeyStates(),使程序員可以在同一個(gè)線程自己偵測(cè)按鍵的狀態(tài)。GameCanvas類提供了flushGraphics()的功能,實(shí)現(xiàn)了雙緩沖技術(shù)(參見3.5節(jié))。所謂的Sprite,就是畫面上獨(dú)立移動(dòng)的圖形。Sprite類是繼承自Layer的用于存儲(chǔ)多楨的基本可視元素。不同的frame可交相顯示,構(gòu)成動(dòng)態(tài)的效果。圖片可翻轉(zhuǎn)、顛倒
46、、由一個(gè)主角圖片就可以方便的得到所有方向的顯示狀態(tài),相比原先只能使用Canvas繪圖,需要將所有方向的主角圖象都繪制在png圖象中簡(jiǎn)化了許多。Sprite也可以從整合的圖象中讀圖,讀圖時(shí)將把大圖分解為若干等寬等高的小圖。每個(gè)小圖按照其排列順序有相應(yīng)的序號(hào),在程序中調(diào)用其序號(hào),就可以繪制出相應(yīng)的圖片。本程序中的飛機(jī)都由Sprite繼承得到。LayerManager提供控制整體畫面層的控制。它包括了一系列自動(dòng)獲取了代號(hào)和位置的層,簡(jiǎn)化了各層加入游戲畫面的過程,提供了自動(dòng)排序和繪制的能力。LayerManager存儲(chǔ)了一個(gè)層的列表,新的層可以用函數(shù)附加、刪除和插入。層的序號(hào)相當(dāng)于坐標(biāo)的Z軸,0層表示
47、最接近用戶視覺,層數(shù)越高,離用戶越遠(yuǎn)。層號(hào)總是連續(xù)的,即使有中間的層被移除,其他層的序號(hào)會(huì)作相應(yīng)的調(diào)整以保持整體的完整性。LM中的View Window控制著與LM相對(duì)坐標(biāo)的可視區(qū)域。改變View Window的位置可以制造出滾動(dòng)屏幕的效果。TiledLayer是有一組圖象格元素組成的整塊虛擬圖象。該類使不需要高分辨率的圖象就能創(chuàng)建大幅圖面成為可能。這項(xiàng)技術(shù)通常應(yīng)用在2D游戲平臺(tái)的滾動(dòng)背景的繪圖。一塊整圖可被分割成等大小的圖象格,每塊格有其對(duì)應(yīng)的序號(hào),按照行列遞增。多塊小格可由大塊同時(shí)替換組合而模擬動(dòng)態(tài)的背景,這不需要逐塊替換所有的靜態(tài)圖象格而顯得非常方便。3.7. PNG圖片格式PNG(Po
48、rtable Network Graphics)格式是MIDlet唯一支持的圖象格式,PNG具體格式由PNG Specification,Version 1.0定義的。PNG格式提供透明背景的圖象,這對(duì)繪制游戲畫面和被操縱主角極有幫助。飛機(jī)之間或與白云碰撞時(shí)就不會(huì)因?yàn)楸尘坝刑囟ǖ念伾@示出的效果像貼上的圖片而缺乏真實(shí)感,物體之間輕微重疊時(shí)最上層圖片也不會(huì)覆蓋超過其有效象素外的部分。PNG格式圖片中包含許多定義其圖片特性的冗余部分(Chunks)。這些代碼包含在每一個(gè)單獨(dú)的png格式圖象中,然而如果將多個(gè)png圖象合并在一張幅面稍大一些的整圖中,多個(gè)chunks就可以得到精簡(jiǎn),圖片的大小可以得
49、到控制。使用Image類中的createImage函數(shù)可從整圖中分割出所需要的元素。在Game包中的TiledLayer和Sprite類都整合了這樣的功能。3.8. 子彈的運(yùn)行和控制在游戲中,子彈數(shù)量很多而且充斥者整個(gè)界面,不可能每增加一個(gè)子彈都使用一個(gè)新的Sprite。對(duì)于這些大量的具有相同行為的對(duì)象,采用了為群體建立類,由群體類保存整個(gè)群體的狀態(tài)信息,群體類持有單一的Sprite,并將一系列針對(duì)群體中某一元素的操作抽象出來,形成對(duì)整個(gè)群體的操作。因此,我們使用了一個(gè)二維數(shù)組(數(shù)組的數(shù)組)來記錄子彈群的狀態(tài),每行代表一個(gè)元素,每列代表一個(gè)屬性。在游戲開始后,子彈是隨機(jī)從界面的四個(gè)方向涌出來的
50、。 3.9. 內(nèi)存的優(yōu)化手機(jī)內(nèi)存空間小,所以在程序設(shè)計(jì)時(shí)應(yīng)該注意以下幾點(diǎn),以盡量減少內(nèi)存的使用:(1) 盡量縮短命名的長(zhǎng)度。在應(yīng)用程序內(nèi),對(duì)于所建立的類、接口、方法及變量名而言,都需要賦予一個(gè)識(shí)別的名稱,所命名的名稱每多一個(gè)字符就會(huì)在類文件內(nèi)多產(chǎn)生一個(gè)字節(jié),對(duì)于一個(gè)較復(fù)雜的應(yīng)用程序而言就會(huì)增加為數(shù)不小的數(shù)據(jù)量。所有這些可以借助混淆器來幫助實(shí)現(xiàn)(2) 所有代碼寫為一個(gè)類。(3) 只使用一個(gè)線程。(4) 盡量不使用靜態(tài)變量。(5) 將PNG圖片合并成一張,減少圖形數(shù)據(jù)的大小。將PNG格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了頭文件的大小,將比合并前的總大小減少許多。3.10. 內(nèi)存
51、檢測(cè)器Wireless Tool Kit提供了許多在運(yùn)行時(shí)監(jiān)視運(yùn)行狀態(tài)的工具。 包括內(nèi)存狀況的檢測(cè)(手機(jī)上的內(nèi)存空間十分有限,必須時(shí)刻關(guān)注機(jī)載內(nèi)存是否大于程序所能使用到的最大可能的內(nèi)存空間),網(wǎng)絡(luò)狀況的檢測(cè),運(yùn)行函數(shù)的跟蹤等。內(nèi)存檢測(cè)器是內(nèi)存跟蹤測(cè)試隨時(shí)間變化的調(diào)試器。其中,允許強(qiáng)制垃圾回收(Garbage Collection)。由于Java語言中,不像許多其他的如C+語言,不需要指定回收函數(shù)中特定不使用的資源,資源回收機(jī)制將自動(dòng)清空無效變量占用的空間。在程序運(yùn)行中也可以調(diào)用System類的gc()函數(shù)手動(dòng)收回廢棄的內(nèi)存。3.11. 關(guān)于混淆器Java 語言并沒有完全編譯成二進(jìn)制可執(zhí)行文件,
52、編譯出的.class文件是一種介于源程序和二進(jìn)制之間的一中基于半解釋的字節(jié)碼,需要虛擬機(jī)來執(zhí)行。它包括了所有的信息。然而這樣會(huì)導(dǎo)致.class很容易被反編譯為源代碼,從而不能保護(hù)作者的知識(shí)成果。目前流行的如decode,JAD等反編譯工具可以以很快的速度生成源文件。如果不加以施行有效的措施,將造成嚴(yán)重的后果。由此引入混淆器的概念。混淆器將代碼中的所有變量、函數(shù)、類的名稱變?yōu)楹?jiǎn)短的英文字母代號(hào),如果缺乏相應(yīng)的函數(shù)名指示和程序注釋,即使被反編譯,也將難以閱讀?;煜鞯淖饔貌粌H僅是保護(hù)代碼,它也有精簡(jiǎn)編譯后程序大小的作用。由于以上介紹的減少變量、函數(shù)的命名長(zhǎng)度的關(guān)系,編譯后也會(huì)從.class文件中減
53、少這些冗余的信息?;煜螅w積大約能減少25%,這對(duì)當(dāng)前費(fèi)用較貴的無線網(wǎng)絡(luò)傳輸是有一定意義的。3.12. 本文工作游戲主角是一架飛機(jī),用戶可以操縱它沿著上、下、左、右四個(gè)方向移動(dòng)。如有可能,可以增加支持左上、左下、右上、右下四個(gè)候補(bǔ)方向。敵人是一群子彈,他們從界面的四個(gè)邊緣源源不斷的涌入界面,每個(gè)子彈都有自己的速度很方向,它們沿著自己的直線軌跡做運(yùn)動(dòng)。碰到界面的四周后消失。游戲啟動(dòng)后開始記時(shí),當(dāng)主角和敵人碰撞時(shí)發(fā)生爆炸,記時(shí)停止。主角攜帶有3個(gè)保險(xiǎn),按下開火按鍵啟動(dòng)保險(xiǎn)。殺死附近一定范圍的敵人 ,保險(xiǎn)減1:保險(xiǎn)為0后按下開火鍵無效。3.13. 小結(jié)本章介紹了程序的流程、相關(guān)技術(shù)和思想及其在本程
54、序中的應(yīng)用。對(duì)游戲基本算法等做了詳細(xì)敘述。具體算法的代碼實(shí)現(xiàn)和詳細(xì)流程將在下章介紹。第四章 程序的設(shè)計(jì)與實(shí)現(xiàn)本章將按游戲設(shè)計(jì)中的Java 類來分別介紹。本游戲程序設(shè)計(jì)中,主要有Bullets類、GameWorld類、Plane類、Clock時(shí)鐘類、InputAction和InputManager類、ImageFont和ImageUtilities類。4.1. 程序流程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í)
55、行里面的MIDlet。MIDlet及相關(guān)的支持類組成了MIDP應(yīng)用程序的實(shí)際內(nèi)容。而每個(gè)MIDlet都必須繼承javax.microedition.midlet.MIDlet這個(gè)抽象類。在MIDP規(guī)范中定義了MIDlet的生命周期,以及可以存在的三種狀態(tài),包括Paused、Active以及Destroyed,每一個(gè)MIDlet在任何時(shí)刻只可能處于其中的一個(gè)狀態(tài)。這三種狀態(tài)的轉(zhuǎn)換關(guān)系如圖3.1所示:MIDlet有三個(gè)狀態(tài),分別是pause、active和destroyed。在啟動(dòng)一個(gè)MIDlet的時(shí)候,應(yīng)用管理軟件會(huì)首先創(chuàng)建一個(gè)MIDlet實(shí)例并使得他處于pause狀態(tài),當(dāng)startApp()方
56、法被調(diào)用的時(shí)候MIDlet進(jìn)入active狀態(tài),也就是所說的運(yùn)行狀態(tài)。在active狀態(tài)調(diào)用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet進(jìn)入destroyed或者pause狀態(tài)。值得一提的是destroyApp(boolean unconditional)方法,事實(shí)上,當(dāng)destroyApp()方法被調(diào)用的時(shí)候,AMS通知MIDlet進(jìn)入destroyed狀態(tài)。在destroyed狀態(tài)的MIDlet必須釋放了所有的資源,并且保存了數(shù)據(jù)。如果unconditional為false的時(shí)候,MIDlet可以在接到通知后拋出MIDl
57、etStateChangeException而保持在當(dāng)前狀態(tài),如果設(shè)置為true的話,則必須立即進(jìn)入destroyed狀態(tài)。銷毀狀態(tài)暫停狀態(tài)活動(dòng)狀態(tài)startApp()默認(rèn)構(gòu)造器pauseApp()destroyApp(boolean)destroyApp(boolean)圖4.1 MIDlet的狀態(tài)轉(zhuǎn)換本程序采用面向?qū)ο蟮脑O(shè)計(jì)模式,對(duì)游戲中的所有物體賦予對(duì)象的概念和屬性。在開始游戲后將先從外部文件載入背景文件,對(duì)背景的所有物體進(jìn)行繪圖。在主程序運(yùn)行的線程中,畫面刷新將以一定的頻率采用雙緩沖技術(shù)對(duì)屏幕重繪,實(shí)時(shí)反映整個(gè)游戲的進(jìn)行狀態(tài)。游戲開始后先繪制地圖,并將各個(gè)對(duì)象實(shí)例化。在主程序運(yùn)行的線程中,游戲中所有的對(duì)象都應(yīng)該運(yùn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)短信應(yīng)用服務(wù)協(xié)議書模板
- 公寓開發(fā)商租賃合同
- 店面租賃合同協(xié)議書范例
- 醫(yī)療技術(shù)合作合同范例
- 勞動(dòng)續(xù)簽合同的注意事項(xiàng)
- 域名及主機(jī)協(xié)議書范本
- 房屋買賣委托代理合同
- 企業(yè)間還款協(xié)議書樣本
- 協(xié)議供貨招標(biāo)文件2024年
- 用人單位設(shè)置霸王條款的法律風(fēng)險(xiǎn)
- 消防設(shè)施設(shè)備及器材
- 二年級(jí)上冊(cè)數(shù)學(xué)試題判斷題專項(xiàng)訓(xùn)練蘇教版
- 《月歷中的數(shù)學(xué)問題》教學(xué)設(shè)計(jì)
- 小學(xué)語文語段修改專項(xiàng)訓(xùn)練(含答案)
- 滬教版七年級(jí)上英語練習(xí)題
- 騰訊公司績(jī)效管理制度-騰訊公司績(jī)效管理制度
- 課堂紀(jì)律不好的原因
- 課題初中數(shù)學(xué)作業(yè)優(yōu)化設(shè)計(jì)的研究研究報(bào)告
- 5s推進(jìn)計(jì)劃(絕對(duì)經(jīng)典)
- 小學(xué)數(shù)學(xué)答題卡模板(共3頁)
- 簡(jiǎn)易呼吸氣囊操作評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論