![基于J2ME的Java游戲--撲克豪斯的開發(fā)畢業(yè)設(shè)計(jì)論文_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/584e32f1-10b0-4a86-b1e9-68d52ba6033f/584e32f1-10b0-4a86-b1e9-68d52ba6033f1.gif)
![基于J2ME的Java游戲--撲克豪斯的開發(fā)畢業(yè)設(shè)計(jì)論文_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/584e32f1-10b0-4a86-b1e9-68d52ba6033f/584e32f1-10b0-4a86-b1e9-68d52ba6033f2.gif)
![基于J2ME的Java游戲--撲克豪斯的開發(fā)畢業(yè)設(shè)計(jì)論文_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/584e32f1-10b0-4a86-b1e9-68d52ba6033f/584e32f1-10b0-4a86-b1e9-68d52ba6033f3.gif)
![基于J2ME的Java游戲--撲克豪斯的開發(fā)畢業(yè)設(shè)計(jì)論文_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/584e32f1-10b0-4a86-b1e9-68d52ba6033f/584e32f1-10b0-4a86-b1e9-68d52ba6033f4.gif)
![基于J2ME的Java游戲--撲克豪斯的開發(fā)畢業(yè)設(shè)計(jì)論文_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/584e32f1-10b0-4a86-b1e9-68d52ba6033f/584e32f1-10b0-4a86-b1e9-68d52ba6033f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、編號(hào)(學(xué)號(hào)):B0785020海 南 大 學(xué)畢 業(yè) 論 文 (2007屆本科)題 目:基于嵌入式系統(tǒng)的java游戲的設(shè)計(jì)與實(shí)現(xiàn) 學(xué) 院: 應(yīng)用科技學(xué)院 專 業(yè): 網(wǎng) 絡(luò) 工 程 姓 名: 安 鈞 指導(dǎo)教師: 胡竹華 老師 完成日期: 2011年 06月 15 日畢業(yè)論文(設(shè)計(jì))任務(wù)書論文(設(shè)計(jì))題目基于嵌入式系統(tǒng)的java 游戲的設(shè)計(jì)與實(shí)現(xiàn)下發(fā)任務(wù)日期2010.06.26學(xué)生姓名安 鈞指導(dǎo)教師胡祝華 老師一. 論文(設(shè)計(jì))主要內(nèi)容本論文著眼于J2ME技術(shù)的應(yīng)用,開發(fā)一款可商用的手機(jī)游戲程序撲克豪斯。本程序的界面和運(yùn)作方式于臺(tái)式游戲豪斯,將老少皆宜的經(jīng)典作品移植到手機(jī)上來,為更流行的硬件平臺(tái)提供
2、應(yīng)用軟件。 本論文介紹了手機(jī)的軟硬件特性、J2ME的相關(guān)技術(shù)及本程序的結(jié)構(gòu)分析和具體功能的實(shí)現(xiàn)。二.論文(設(shè)計(jì))的基本要求1.有關(guān)資料的收集:要求盡量收集第一手資料,資料要真實(shí)、可靠、有代表性。2 資料的整理與分析:要求條理清晰,數(shù)據(jù)分析詳盡。3 查閱相關(guān)文獻(xiàn):要求貼近主題,有參考價(jià)值。4 認(rèn)真撰寫論文,字?jǐn)?shù)在10000字以上。三.論文(設(shè)計(jì))工作進(jìn)度安排階段論文(設(shè)計(jì))各階段名稱日期1與老師交流指導(dǎo)2010.6.262010.10.312數(shù)據(jù)的分析與處理2010.11.12011. 3. 13查閱相關(guān)文獻(xiàn)2011. 3. 22011. 4.104撰寫論文初稿2011.4.112011. 5.
3、315論文修改2011. 6. 12011. 6.106論文完成2011. 6.15備注:四.應(yīng)收集的資料及主要參考文獻(xiàn)(指導(dǎo)教師指定)1、Java設(shè)計(jì)與實(shí)現(xiàn)文獻(xiàn)2、嵌入式游戲的研究文獻(xiàn)3、基于J2ME的研究資料說明:此任務(wù)由指導(dǎo)教師填寫一式兩份,一份發(fā)給學(xué)生,一份發(fā)給指導(dǎo)教師留存。海南大學(xué)畢業(yè)論文(設(shè)計(jì))選題審批表選題名稱題目來源學(xué)號(hào)姓名專業(yè)指導(dǎo)教師職稱研 究?jī)?nèi) 容研 究計(jì) 劃特 色指 導(dǎo) 教 師 意 見教 研 室 意 見學(xué) 院 意 見畢業(yè)論文(設(shè)計(jì))指導(dǎo)記錄學(xué)生姓名專業(yè)指導(dǎo)教師姓名職稱本年度指導(dǎo)畢業(yè)生人數(shù)論文(設(shè)計(jì))題目時(shí)間地點(diǎn)指導(dǎo)內(nèi)容學(xué)生簽字:年 月 日 指導(dǎo)教師簽字:年 月 日教研室主
4、任簽字:年 月 日目 錄摘 要7Abstract7一 前 言71.2引 言81.3手機(jī)游戲特征81.4手機(jī)游戲的類型91.5 手機(jī)軟件現(xiàn)狀91.6 本游戲的未來91.7 手機(jī)未來的發(fā)展方向101.8 游戲業(yè)務(wù)及J2ME概述10二 開發(fā)環(huán)境及相關(guān)技術(shù)的介紹112.1 Java語言的特點(diǎn)112.2 J2ME 是什么?112.3 J2ME智能客戶端122.4 J2ME 總體架構(gòu)122.5 簡(jiǎn)單環(huán)境的搭建:132.6 MIDP應(yīng)用程序:14三 J2ME 手機(jī)游戲需求分析143.1
5、160; 本程序需解決的有關(guān)技術(shù)問題143.2 程序流程圖153.3 繪圖與MIDP2.0新增的GameCanvas包163.3.1 提供低級(jí)繪制的Canvas類163.3.2 Graphics類163.3.3 PNG格式163.4 有關(guān)繪圖的一些技術(shù)163.5 內(nèi)存使用的最佳化173.6 混淆器(Obfuscator)的使用173.7 模擬器的相關(guān)調(diào)試18四 程序分析和編寫手機(jī)代碼184.1 游戲進(jìn)入前的選擇184.2 主游戲邏輯及其涉及到的若干類184.2.2 游戲的設(shè)定204.2.
6、3 游戲中的幫助和程序控制器204.2.4 游戲版權(quán)聲明234.2.5 游戲的主要程序244.2.6 游戲的主程序33五 常見錯(cuò)誤分析345.1 畫圖錯(cuò)誤345.2 變量沒有定義或沒有初始化345.3 在 GameScreen 類中不能用線程345.4 在玩游戲時(shí)出會(huì)發(fā)出兩張同樣的牌35六 用戶手冊(cè)36參考資料36致 謝36摘 要J2ME(Java 2 Micro Edition) 是近年來隨著各種不同設(shè)備,尤其是移動(dòng)通信設(shè)備的飛速發(fā)展而誕生的一項(xiàng)新的開發(fā)技術(shù)。它定位在消費(fèi)性電子產(chǎn)品的應(yīng)用上,對(duì)設(shè)備的智能化、多樣化,提供了革命性的解決方案,并因其
7、“Write Once, run anywhere”的Java特性而提高開發(fā)的效率。 隨著手機(jī)的日益普及、Java功能在移動(dòng)設(shè)備上的實(shí)現(xiàn),Java應(yīng)用程序產(chǎn)生的手機(jī)增值服務(wù)逐漸體現(xiàn)出其影響力,對(duì)豐富人們的生活內(nèi)容、提供快捷的資訊起著不可忽視的作用。本論文著眼于J2ME技術(shù)的應(yīng)用,開發(fā)一款可商用的手機(jī)游戲程序撲克豪斯。本程序的界面和運(yùn)作方式于臺(tái)式游戲豪斯,將老少皆宜的經(jīng)典作品移植到手機(jī)上來,為更流行的硬件平臺(tái)提供應(yīng)用軟件。 本論文介紹了手機(jī)的軟硬件特性、J2ME的相關(guān)技術(shù)及本程序的結(jié)構(gòu)分析和具體功能的實(shí)現(xiàn)。 關(guān)鍵詞:J2ME,手機(jī)游戲, Java,撲克豪斯 AbstractJ2ME is a k
8、ind of fast 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 th
9、e development 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
10、 fast information just in hand. This dissertation focuses on implementation of J2ME technology and has developed a commercial game suite run on mobile phonesPokerMachine. This application inherits many characters of the old fashioned game Battle City which developed by Nintendo in 1980s. It transpor
11、ts the classical product to mobile phones, offering corresponding software for such more popular hardware platform. This dissertation introduces the characteristic of Nintendo FC machine and its software, J2ME and its relative technology as well as this programs structure and analysis of implementat
12、ion in details. Key words: J2ME, mobile game, Java, tank, Battle City. 一 前 言 1.2引 言 手機(jī)游戲成績(jī)斐然,成為IT產(chǎn)業(yè)中增長(zhǎng)最快的部分之一.縱觀IT產(chǎn)業(yè)的歷史,計(jì)算機(jī)游戲已經(jīng)成為技術(shù)創(chuàng)新背后的動(dòng)者渴望更加強(qiáng)大的硬件計(jì)算能力;渴望不受不同的軟件的限制?無論是將圖形強(qiáng)制在人工智能(AI)上 還是網(wǎng)絡(luò)安全性。游戲開發(fā)者和玩家常常是前沿計(jì)算機(jī)技術(shù)的最早的采用者。由于他們的創(chuàng)新天性,游戲不再是由大型采購公司控制的技術(shù)產(chǎn)品?游戲領(lǐng)域總是有充足的空間給那此 在這方面有天分的單個(gè)創(chuàng)新
13、者。隨著技術(shù)對(duì)游戲經(jīng)驗(yàn)的促進(jìn),游戲市場(chǎng)持續(xù)增長(zhǎng)。商業(yè)IT革命為我們節(jié)省了時(shí)間力之一。計(jì)算機(jī)游戲和金錢,從而提高了我們的工作水平,我們因此花費(fèi)更多的時(shí)間和金錢在游戲上,來改善生活的整體質(zhì)量。甚至在當(dāng)今困難的經(jīng)濟(jì)時(shí)代,游戲仍保持快速增長(zhǎng),他仍然是盈利行業(yè)的組成部分。Java開發(fā)者應(yīng)該注意到這里蘊(yùn)藏著的巨大的商機(jī)。1.3手機(jī)游戲特征手機(jī)游戲的盈利主要是由于它們的涉及面很廣。手機(jī)已經(jīng)與現(xiàn)代生活方式緊緊地結(jié)合在一起。他們是最普遍攜帶的個(gè)人用品中僅次于鑰匙和錢包的東西。傳統(tǒng)的臺(tái)式機(jī)游戲?qū)⒛繕?biāo)鎖定在低級(jí)趣味的人和青少年身上,而手機(jī)游戲則每個(gè)人都可以訪問的到?隨時(shí),隨地。盡管每個(gè)手機(jī)游戲都不貴,但是巨大的使用
14、量(如:每人每星期一個(gè)新游戲)將使得這個(gè)市場(chǎng)商機(jī)無限并且有利可圖。但是,對(duì)于開發(fā)者來說,將控制臺(tái)游戲遷移到手機(jī)游戲工程很大因?yàn)樗麄兯嫦虻膶?duì)象、生活方式和分布式模型都有著極大的區(qū)別。讓我們從手機(jī)游戲的需求談起吧。 一個(gè)成功的手機(jī)游戲大多具有以下特征: 1:易于學(xué)習(xí): 既然手機(jī)游戲面向的是普通消費(fèi)者而不是計(jì)算機(jī)高手,那么他們不可能深入的學(xué)習(xí)游戲技巧。消費(fèi)者不會(huì)花幾個(gè)小時(shí)去研究一個(gè)3美元的手動(dòng)操作的游戲。所以游戲必須是一下載就可以玩的。保持游戲的簡(jiǎn)單是最基本的要求。 2:可中斷性: 多任務(wù)處理是手機(jī)生活方式的基本特征。手機(jī)用戶常常在任務(wù)(如等一個(gè)電子郵件或者等車)之間有一小
15、段時(shí)間。而游戲、日歷管理、通訊和工作數(shù)據(jù)訪問使用的是同一個(gè)設(shè)備。所以一個(gè)好的手機(jī)游戲應(yīng)該提供短時(shí)間的娛樂功能,并且允許用戶在游戲和工作模式之間順利切換。3:基于訂閱:手機(jī)游戲的盈利成功取決于他們巨大的使用量。一開始開發(fā)和設(shè)計(jì)每個(gè)游戲都是昂貴的。如果一個(gè)手機(jī)游戲開發(fā)者要賺錢的話,重要的是:同一個(gè)游戲引擎,多個(gè)標(biāo)題,基本的故事情節(jié)類似?;谟嗛喌挠螒蚴遣粩喈a(chǎn)生收入的最好方法。 4:豐富的社會(huì)交互: 不管一個(gè)游戲設(shè)計(jì)得多好,只要玩家找到了它的根本模式或者玩完了所有的游戲路徑很快就會(huì)厭煩這個(gè)游戲。對(duì)于一個(gè)基于訂閱的游戲,重要的是與別的玩家合作以增強(qiáng)所玩游戲的智力和隨機(jī)性。在今天紛繁復(fù)雜的多玩家游戲中具
16、有豐富社會(huì)交互的游戲證明是成功的。 5:利用手機(jī)技術(shù)的優(yōu)點(diǎn): 巨額的手機(jī)技術(shù)研發(fā)費(fèi)用都花在提高設(shè)備和網(wǎng)絡(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)。 6:無違法內(nèi)容:既然所有年齡/性別的人群都玩手機(jī)游戲并且常常在公共/工作場(chǎng)合,你應(yīng)該避免明顯的暴力或者色情內(nèi)容。 1.4手機(jī)游戲的類型 基于以上標(biāo)準(zhǔn),最有可能成功的手機(jī)游戲就是那些臨時(shí)小游戲,它可為廣
17、泛的玩家在所有的社交場(chǎng)合提供娛樂。特別是,下列類型的游戲?qū)⑹敲魈熳罹哂袣Φ挠螒颍?#160; 1:多玩家游戲: 這些游戲可以提供手機(jī)訪問以便建立在線游戲團(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ì)?,F(xiàn)在已經(jīng)出現(xiàn)手機(jī)
18、3D工具箱和聽筒。但是,3D是非常資源集中型的。他們要求開發(fā)者和圖形設(shè)計(jì)者都是專家級(jí)的。專業(yè)的商店最有可能開發(fā)這些游戲。 在手機(jī)游戲的早期,大多數(shù)開發(fā)者都是想要玩轉(zhuǎn)設(shè)備、學(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.5 手機(jī)軟件現(xiàn)狀 在信息社會(huì)中,手機(jī)及其他無線設(shè)備越來越多的走進(jìn)普通百姓的工作和生活,隨著信息網(wǎng)絡(luò)化的不斷進(jìn)展,手機(jī)及其他
19、無線設(shè)備上網(wǎng)絡(luò)勢(shì)在必行。但是傳統(tǒng)手機(jī)存在以下弊端: 1. 傳統(tǒng)手機(jī)出廠時(shí)均由硬件廠商固化程序,程序不能增加、刪除,有了錯(cuò)誤也不能更新、修改,若要增加新功能必須另換一部手機(jī)。 2. 傳統(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)用程序可按需下載,而不是購買由硬件商提供的套件,可升級(jí)空間大。 2. Java技術(shù)提供了一個(gè)類庫,它使的應(yīng)用開發(fā)商可以創(chuàng)建更為直覺、豐富的用戶界面(GUI); &
20、#160;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.6 本游戲的未來 看過周潤(rùn)發(fā)主演的賭神都知道里的豪斯是很好玩的,也很有發(fā)展前途。一,這個(gè)游戲?qū)κ謾C(jī)的要求不高;二,這個(gè)游戲簡(jiǎn)單;三,當(dāng)這個(gè)游戲做成網(wǎng)絡(luò)游戲時(shí),可以是各個(gè)玩家斗智的平臺(tái);要實(shí)現(xiàn)這點(diǎn)技術(shù)要求并不難。在本設(shè)計(jì)的基礎(chǔ)上再加上某些技術(shù)就可以了:a) 網(wǎng)絡(luò)的連接 b) 能讀能存網(wǎng)絡(luò)數(shù)據(jù)庫 c) 牌不再是用隨機(jī)產(chǎn)生這么簡(jiǎn),它應(yīng)該根據(jù)玩家的積分來產(chǎn)生,這樣會(huì)更好。 1.7 手機(jī)
21、未來的發(fā)展方向 手機(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.8 游戲業(yè)務(wù)及J2ME概述 雖然 Java 已經(jīng)被用到許多企業(yè)級(jí)軟體上,可是其實(shí)骨子里面還是非常適合用在嵌入式系統(tǒng)之中。Java平臺(tái)演進(jìn)到Java2后,Java平臺(tái)分別針對(duì)不同領(lǐng)域的需求被分成四
22、個(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 先將所有的嵌入式裝置大體上區(qū)分為兩種:一種是運(yùn)算功能有限、電力供應(yīng)也有限的嵌入式裝置(比方說PDA 、手機(jī));另外一種則是運(yùn)算能力相對(duì)較佳、在電力供應(yīng)上相對(duì)比較充足的嵌入式裝置 (比方說冷氣機(jī)、電
23、冰箱、電視機(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 先把所有的嵌入式裝置利用Configuration 的概念區(qū)隔成兩種抽象的型態(tài)。J2ME平臺(tái)被認(rèn)為是最杰出的手機(jī)游戲平臺(tái),它為開發(fā)者、設(shè)備制造商、網(wǎng)絡(luò)通信公司和消費(fèi)者廣泛接受。它有一些非常重要的特
24、征對(duì)所有組織都有益。因?yàn)镴2ME應(yīng)用在不同設(shè)備上都是便攜式的,他們常常可在網(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í)許可。 縱觀IT產(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)制在人工智能(
25、AI)上 還是網(wǎng)絡(luò)安全性。游戲開發(fā)者和玩家常常是前沿計(jì)算機(jī)技術(shù)的最早的采用者。由于他們的創(chuàng)新天性,游戲不再是由大型采購公司控制的技術(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è)人都可以訪問的到隨時(shí),隨地。盡管每個(gè)手機(jī)游戲都不貴,但是巨大的使用量(如:每人每星期一個(gè)新游戲)將使得這個(gè)市場(chǎng)商機(jī)無限。但是,對(duì)于開發(fā)者來說,將控制臺(tái)游戲遷移到手機(jī)游戲工程很大。因?yàn)樗麄兯嫦虻膶?duì)象、
26、生活方式和分布式模型都有著極大的區(qū)別。 二 開發(fā)環(huán)境及相關(guān)技術(shù)的介紹 2.1 Java語言的特點(diǎn) 1. 平臺(tái)無關(guān)性 Java引進(jìn)虛擬機(jī)原理,并運(yùn)行于虛擬機(jī),實(shí)現(xiàn)不同平臺(tái)之間的Java接口。使用Java編寫的程序能在世界范圍內(nèi)共享。Java的數(shù)據(jù)類型與機(jī)器無關(guān)。 2. 安全性 Java的編程類似C+,但舍棄了C+的指針對(duì)存儲(chǔ)器地址的直接操作,程序運(yùn)行時(shí),內(nèi)存由操作系統(tǒng)分配,這樣可以避免病毒通過指針入侵系統(tǒng)。它提供 了安全管理器,防止程序的非法訪問。 3. 面向?qū)ο?Java吸收了C+面向?qū)ο蟮母拍睿瑢?shù)據(jù)封裝于類中,實(shí)現(xiàn)了程序的簡(jiǎn)潔性和 便于維護(hù)性,使程序代碼可以只需一次編譯就可反復(fù)
27、利用。 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)存空間。 2.2 J2ME 是什么? 據(jù)J2ME應(yīng)用程序調(diào)用的API,J2ME應(yīng)用程序分為標(biāo)準(zhǔn)應(yīng)用程序和不易移植的應(yīng)用程序兩種。 據(jù)J2ME應(yīng)用程序調(diào)用的API,J2ME應(yīng)用程序分為標(biāo)準(zhǔn)應(yīng)用程序和不易
28、移植的應(yīng)用程序兩種。 術(shù)語: CDC:連接設(shè)備配置 CLDC:連接限制設(shè)備配置 JRE:Java運(yùn)行環(huán)境 MIDP:Mobile Information Device Profile規(guī)范 OTA:Over The Air 非OTA:數(shù)據(jù)線、藍(lán)牙(Bluetooth)、紅外線(IrDA)、多媒體信息服務(wù)(MMS)、Email附件 2.3 J2ME智能客戶端 J2ME平臺(tái)被認(rèn)為是最杰出的手機(jī)游戲平臺(tái),它為開發(fā)者、設(shè)備制造商、網(wǎng)絡(luò)通信公司和消費(fèi)者廣泛接受。它有一些非常重要的特征對(duì)所有組織都有益 2.4 J2ME 總體架構(gòu) J2ME 使用配置和簡(jiǎn)表定制 Java 運(yùn)行時(shí)環(huán)境 (
29、JRE)。作為一個(gè)完整的 JRE,J2ME 由配置和簡(jiǎn)表組成,配置決定了使用的 JVM,而簡(jiǎn)表通過添加特定于域的類來定義應(yīng)用程序。 配置將基本運(yùn)行時(shí)環(huán)境定義為一組核心類和一個(gè)運(yùn)行在特定類型設(shè)備上的特定 JVM。我們將在 J2ME 配置一章中詳細(xì)討論配置。 簡(jiǎn)表定義應(yīng)用程序;特別地,它向 J2ME 配置中添加特定于域的類,定義設(shè)備的某種作用。我們將在 J2ME 簡(jiǎn)表一章中深入介紹簡(jiǎn)表。 下面的圖表描述了不同的虛擬機(jī)、配置和簡(jiǎn)表之間的關(guān)系。它同時(shí)把 J2SE API 和它的 Java 虛擬機(jī)進(jìn)行了比較。雖然 J2SE 虛擬機(jī)通常被稱為一種 JVM,但是 J2ME 虛擬機(jī)、KVM 和 C
30、VM 都是 JVM 的子集。KVM 和 CVM 均可被看作是一種 Java 虛擬機(jī) - 它們是J2SE JVM 的壓縮版,并特定于 J2ME。 移動(dòng)通信的時(shí)代即將來臨,通信相關(guān)待業(yè)變得前景可期,而除了移動(dòng)通信的主要通信工具手機(jī),其功能越來越強(qiáng)大之外,有更多的廠商相繼投入移動(dòng)通信設(shè)備的生產(chǎn)與開發(fā),其平臺(tái)和操作系統(tǒng)的復(fù)雜度比目前混亂的PDA有過之而不及,除了Symbian 針對(duì)手機(jī)推出操作系統(tǒng) Symbian OS(過去稱做EPOC,)操作系統(tǒng)之外,微軟也針對(duì)手機(jī)推出操作系統(tǒng) Smartphone 2002 (Stinger),但是日前市面上的手機(jī)仍以使用廠商自行開發(fā)的操作系統(tǒng)者居多。 平臺(tái)的復(fù)雜
31、紛亂對(duì)一般用戶當(dāng)然沒什么影響,但是對(duì)于程序開發(fā)人員來說,這么多不同的程序發(fā)展平臺(tái),光看完頭就昏了。如果每個(gè)平臺(tái)都有自己的程序?qū)懛ㄒ约俺绦驇欤敲垂馐强瓷厦孢@些平臺(tái)至少就要學(xué)習(xí)五種以上程序的寫法。當(dāng)然,只專精一種平臺(tái)當(dāng)然是很好的事情??墒浅绦騿T不禁要說:“如果我們寫出來的軟件可以在不經(jīng)過修改源代碼的情況下就能夠在這些平臺(tái)上執(zhí)行,那不是更完美嗎?“對(duì)程序開發(fā)人員來說,這樣的投資報(bào)酬率當(dāng)然是最大的。 要在那么多平臺(tái)上開發(fā)程序,對(duì)程序員來說的確是很大的挑戰(zhàn),如果要把所有的時(shí)間和精力放在軟件的可用性上,那么相對(duì)而言很多時(shí)候我們根本沒有那么多時(shí)間撰寫各種平臺(tái)的程序。要解決這個(gè)問題,一般來說程序員會(huì)選用一個(gè)
32、可以跨平臺(tái)的Framework來達(dá)成至少source code level的跨平臺(tái)。利用Java的“Write once,run anywhere”特性,我們可以真正達(dá)到程序只要寫一次,拿到任何平臺(tái)上都可以執(zhí)行。 利用Java撰寫手機(jī)上的程序當(dāng)然有其缺點(diǎn),最廣為人知的可能就是執(zhí)行效率的問題,Java在執(zhí)行速度這個(gè)議題上一直讓人詬病。不過筆者認(rèn)為,隨著技術(shù)的發(fā)達(dá),將會(huì)有更快更省電的嵌入系統(tǒng)專用CPU出現(xiàn),Java One中也傳出將針對(duì)J2ME開發(fā)專用芯片,讓Java在 手機(jī)上的程序可以跑得更快,因此效率上的總是其實(shí)是可以忽略的。更何況,當(dāng)Sun在設(shè)計(jì)J2ME的時(shí)候,也用了很多方式企圖加快Java
33、 在手機(jī)上的執(zhí)行速度。 因此,目前的移動(dòng)通信設(shè)備大廠幾乎采用J2ME平臺(tái)。搭建J2ME 環(huán)境: 2.5 簡(jiǎn)單環(huán)境的搭建: 1、 下載JDK和J2ME無線工具包() 安裝SUN JDK:j2sdk-1_4_0_03-windows=i386 安裝SUN J2ME SDK:j2me_wireless_toolkit-1_0_3-win 2 關(guān)于Wireless Tool Kit WTK(Wireless Tool Kit)是Sun公司針對(duì)J2ME推出的用于手機(jī)和Palm等 移動(dòng)設(shè)備的開發(fā)包,是除手機(jī)廠商的專用開發(fā)包外唯一的手機(jī)
34、模擬器開發(fā)包。 它通用性高,開發(fā)出的應(yīng)用程序可保證能運(yùn)行在大部分設(shè)備上,而不像專用 廠商具有一定的不兼容性。雖然它沒有強(qiáng)大的功能和完善的調(diào)試手段,但它 提供運(yùn)行模擬器的最基本組件,是其他IDE需集成采用的必備元素。 3, 用于手機(jī)游戲開發(fā)的環(huán)境不是只建立一個(gè) java sdk 就可以了,它還需要了一個(gè)一個(gè)庫類,叫 java toolkit。首先安裝 java sdk 再在原來的目錄下安裝java toolkit這個(gè)新的環(huán)境就可以滿足我們的需要了。然后我們編寫一個(gè)最簡(jiǎn)單的程序用來驗(yàn)證這個(gè)環(huán)境是否可以用來編寫我們的手機(jī)程序。 編寫以下代碼: 保存成 Hello.java 文件。 import ja
35、vax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Hello extends MIDlet private Display display; public Hello() display = Display.getDisplay(this); public void startApp() TextBox t = new TextBox("Hello MIDlet", "
36、Hello MIDP!", 256, 0); display.setCurrent(t); public void pauseApp() public void destroyApp(boolean unconditional) 啟動(dòng)Ktoolbar 新建一個(gè)工程,取名 Hello 。把以上文件拷到 Hello 文件的目錄編譯。能通過編譯并能運(yùn)行,說明這個(gè)開發(fā)環(huán)境就能滿足我們的需要了。 2.6 MIDP應(yīng)用程序: MIDP應(yīng)用程序是指
37、遵循由應(yīng)用程序主體(Jar文件)和應(yīng)用程序描述文件(Jad文件)組成。按部署方式可分OTA和非OTA兩種。 MIDlet:是Jave一個(gè)類,擴(kuò)展了javax.microediton.midlet.MIDlet抽象類。MIDlet生命周期分3種狀態(tài):運(yùn)行狀態(tài),暫停狀態(tài),銷毀狀態(tài)等。 2.6.1 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
38、的JAR 檔,接著在手機(jī)上安裝此MIDlet Suite, 然后在手機(jī)開始執(zhí)行該應(yīng)用程序。整個(gè)詳細(xì)的運(yùn)作流程如圖2-1所示。 2.7 預(yù)先審核: 審核動(dòng)作一般在PC上執(zhí)行,速度可以接受。為了是對(duì)安全的考慮,任何來自本地或者遠(yuǎn)程機(jī)器,都必須經(jīng)過Byte Code審核器的驗(yàn)證,以防止程序在傳輸途中遭到惡意更改。如圖 2.8 J2ME、J2SE 與 J2EE 之間的比較: 下面的圖表描述了支持 J2ME 應(yīng)用程序的設(shè)備,同時(shí)說明了 J2ME 適合 Java 平臺(tái)之處: 三 J2ME 手機(jī)游戲需求分析 3.1 本程序需解決的有關(guān)技
39、術(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)、畫面背景、屏幕刷新的雙緩沖等都有較好的解決方案。 3. 一開始就把牌全部
40、分配好,這樣就可以簡(jiǎn)單而有效地避免了牌的重復(fù),也可以大大地簡(jiǎn)化了程序代碼的編寫。 4. 牌的轉(zhuǎn)化可以用一個(gè)函數(shù)來實(shí)現(xiàn),這樣就可以使代碼更模塊化,利用也就可以更高5牌慢慢移動(dòng)的實(shí)現(xiàn)。牌的移動(dòng)是用線程來實(shí)現(xiàn)的,用Thread.sleep() 這個(gè)函數(shù)來作時(shí)間延遲,讓坐標(biāo)變量緩慢地變化。然后通過刷新畫圖,就會(huì)使人覺得牌是在緩慢地移動(dòng)。 6是否是要牌還是放棄(認(rèn)輸),它通過向右鍵(要牌)和向左鍵(放棄)來操作的。當(dāng)點(diǎn)擊向右鍵時(shí),發(fā)生點(diǎn)擊事伯,變量發(fā)生相應(yīng)的變化,然后觸發(fā)畫圖事件。 7當(dāng)玩家都跟到5張牌時(shí),就要判斷牌的大小了,它通過多次循環(huán),來確定其大小。 8. Java是基于虛
41、擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較C+等完全編譯后的程序會(huì)低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。除開發(fā)過程中對(duì)結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(Obfuscator)進(jìn)行程序打包后的優(yōu)化。 以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。 3.2 程序流程圖 MIDlet suite是MIDP應(yīng)用程序的最小單位,JAM負(fù)責(zé)將手機(jī)內(nèi)的MIDlet suite以圖形 v 化的方式呈現(xiàn),讓用戶能夠選取欲執(zhí)行的MIDlet suite,一旦選取了某個(gè)MIDlet suite,操作系統(tǒng)就會(huì)激活KVM執(zhí)行里面的MIDlet。MIDlet及相關(guān)
42、的支持類組成了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)這 v 三種狀態(tài)的轉(zhuǎn)換關(guān)系如圖所示: 本程序采用面向?qū)ο蟮脑O(shè)計(jì)模式,對(duì)游戲中的所有物體賦予對(duì)象的概念和屬性。運(yùn)行程序后允許用戶選擇執(zhí)行選項(xiàng)菜單,在開始游戲后將先從外部文件載入牌的圖文件,對(duì)背景的所有物體進(jìn)行繪圖。在主程序運(yùn)行的線程中,畫面刷新將以一定的頻率采用雙緩沖技
43、術(shù)對(duì)屏幕重繪,實(shí)時(shí)反映整個(gè)游戲的進(jìn)行狀態(tài)。用戶控制的牌運(yùn)行在主線程中,隨屏幕刷新的頻率而移動(dòng)。牌將在游戲開始時(shí)逐漸新增線程,每增加一個(gè)牌對(duì)象就新增加一條線程,一旦線程數(shù)滿到最大值(本程序暫設(shè)置最大值為幾千多個(gè)),就不允許線程的再增加。這個(gè)線程問題就是本設(shè)計(jì)的一個(gè) bug。 本程序主要的流程如圖32所示: 流程簡(jiǎn)略解釋: 程序一開始執(zhí)行是先從主類 test.java 來開始。這個(gè)類從 MIDlet 類繼承過 來,在程序的開始函數(shù) startApp() 中我用 Navigator.current = Navigator.MAIN_SCREEN; 這個(gè)等式把程序的執(zhí)行轉(zhuǎn)到 MainScr
44、een.java 文件(程序的畫面)來。而這個(gè)類繼承 List ,這個(gè) List 類可以更方便地控制程序的選擇。在這個(gè)文件中列出一個(gè)菜單供用戶去選擇,如下: 開始 設(shè)定 版權(quán)聲明 離開 當(dāng)點(diǎn)擊開始時(shí),程序轉(zhuǎn)到 GameScreen 這個(gè)類去。GameScreen 這個(gè)類繼承 Canvas,Canvas 專門是用來控制游戲的。里面包括屏幕的繪圖,一些變量的初始化。 當(dāng)點(diǎn)擊設(shè)定時(shí),程序轉(zhuǎn)到SetScreen 這個(gè)類。這個(gè)類用于登錄幫助網(wǎng)站的,當(dāng)然這個(gè)是需要網(wǎng)絡(luò)支持的。 當(dāng)點(diǎn)擊版權(quán)聲明時(shí),程序轉(zhuǎn)到 CopyScreen 這個(gè)類,這個(gè)類繼承 Alert,它用于描述版權(quán)的一些信息。 當(dāng)點(diǎn)擊離開時(shí),程序退
45、出 test 類。 3.3 繪圖與MIDP2.0新增的GameCanvas包 3.3.1 提供低級(jí)繪制的Canvas類 為了能有程序開發(fā)人員控制接口的外觀和行為,需要使用大量的初級(jí)用戶接口類,尤其在游戲程序中,幾乎完全依賴的就是Canvas抽象類進(jìn)行繪圖。從程序開發(fā)的觀點(diǎn)看,Canvas類可與高級(jí)Screen類交互,程序可在需要時(shí)在Canvas中摻入高級(jí)類的組件。Canvas提供了鍵盤事件、指點(diǎn)桿事件(如果設(shè)備支持),并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù)。鍵盤事件由鍵代碼指定,但這樣控制游戲會(huì)導(dǎo)致缺乏通用性,并不是每個(gè)設(shè)備的鍵盤布局都適合游戲的操作。應(yīng)當(dāng)將鍵代碼轉(zhuǎn)換為游戲鍵
46、的代碼,以便硬件開發(fā)商能定義他們自己的游戲鍵布局。本程序中,操縱用戶坦克運(yùn)行的按鍵都定義為游戲控制鍵,這樣便能適應(yīng)所有的機(jī)器。 3.3.2 Graphics類 Graphics類提供了簡(jiǎn)單的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.3.3 PNG格式 PNG(Portable Network Graphics)格式是MIDle
47、t唯一支持的圖象格式,PNG具體格式由PNG Specification,Version 1.0定義的。PNG格式提供透明背景的圖象,這對(duì)繪制游戲畫面和被操縱主角極有幫助。坦克之間或與障礙物碰撞時(shí)就不會(huì)因?yàn)楸尘坝刑囟ǖ念伾?,顯示出的效果像貼上的圖片而缺乏真實(shí)感,物體之間輕微重疊時(shí)最上層圖片也不會(huì)覆蓋超過其有效象素外的部分。 PNG格式圖片中包含許多定義其圖片特性的冗余部分(Chunks)。這些代碼包含在每一個(gè)單獨(dú)的png格式圖象中,然而如果將多個(gè)png圖象合并在一張幅面稍大一些的整圖中,多個(gè)chunks就可以得到精簡(jiǎn),圖片的大小可以得到控制。使用Image 類中的createImage函數(shù)可從
48、整圖中分割出所需要的元素。在Game包中的TiledLayer和Sprite類都整合了這樣的 功能。本程序中的地圖元素都集成在一張tile.png圖片中,實(shí)現(xiàn)了方便的管理和程序體積的精簡(jiǎn)。 3.4 有關(guān)繪圖的一些技術(shù) 在沒有MIDP2.0前,進(jìn)行游戲繪圖一般需要手動(dòng)編程使用雙緩沖。需要在paint()方法內(nèi)所想要畫的圖形畫在一張預(yù)先準(zhǔn)備好的背景,等所有繪圖操作都完成后再將背景的數(shù)據(jù)拷貝到實(shí)際的屏幕上。Image類提供了一個(gè)建立背景的靜態(tài)方法createImage(int width, int height),再利用getGraphics()方法取得屬于這個(gè)背景的Graphics對(duì)象,所進(jìn)行的繪
49、圖操作都會(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)象了。不過在某些MIDP的實(shí)現(xiàn)上已經(jīng)加上了雙重緩沖的支持,因此在處理前應(yīng)先利用Canvas類的isDoubleBuffer()方法來
50、判斷。 3.5 內(nèi)存使用的最佳化 通常在MIDP應(yīng)用程序的手機(jī)執(zhí)行環(huán)境中,所牽涉的內(nèi)存有下列三種: 應(yīng)用程序存儲(chǔ)內(nèi)存 RecordStore存儲(chǔ)內(nèi)存 執(zhí)行時(shí)期內(nèi)存(Java Heap) 其中前兩種是持久性的內(nèi)存,關(guān)閉電源后還能保持?jǐn)?shù)據(jù)的正確性,通常這兩種內(nèi)存所能存儲(chǔ)的容量是合并計(jì)算的,這個(gè)上限對(duì)每種手機(jī)都不一樣,大部分在一兩百KB內(nèi)。在這樣的情況下需要在不影響原有功能的情況下適當(dāng)?shù)目s減JAR文件的大小,除了可以克服內(nèi)存空間的限制外,也能大幅度縮短下載的時(shí)間(費(fèi)用也降低了),勢(shì)必會(huì)有更多的人愿意下載所開發(fā)的程序。其方法有第一就是盡量縮短命名的長(zhǎng)度。在應(yīng)用程序內(nèi),對(duì)于所建立的類、接口、方法及變量名
51、而言,都需要賦予一個(gè)識(shí)別的名稱,所命名的名稱每多一個(gè)字符就會(huì)在類文件內(nèi)多產(chǎn)生一個(gè)字節(jié),對(duì)于一個(gè)較復(fù)雜的應(yīng)用程序而言就會(huì)增加為數(shù)不小的數(shù)據(jù)量。所有這些可以借助混淆器來幫助實(shí)現(xiàn)。 第二是減少復(fù)雜的程序結(jié)構(gòu),為一些共同的行為建立一個(gè)抽象類(Abstract Class) 來表示繼承的子類的共通性。 第三是減少圖形數(shù)據(jù)的大小。將PNG格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了chunks,將比合并前的總大小減少許多。 3.6 混淆器(Obfuscator)的使用 Java 語言并沒有完全編譯成二進(jìn)制可執(zhí)行文件,編譯出的.class文件是一種介于源程序和二進(jìn)制之間的一中基于半
52、解釋的字節(jié)碼,需要虛擬機(jī)來執(zhí)行。它包括了所有的信息。然而這樣會(huì)導(dǎo)致.class很容易被反編譯為源代碼,從而不能保護(hù)作者的知識(shí)成果。目前流行的如decode,JAD等反編譯工具可以以很快的速度生成源文件。如果不加以施行有效的措施,將造成嚴(yán)重的后果。 由此引入混淆器的概念。混淆器將代碼中的所有變量、函數(shù)、類的名稱變?yōu)楹?jiǎn)短的英文字母代號(hào),如果缺乏相應(yīng)的函數(shù)名指示和程序注釋,即使被反編譯,也將難以閱讀。 混淆器的作用不僅僅是保護(hù)代碼,它也有精簡(jiǎn)編譯后程序大小的作用。由于以上介紹的減少變量、函數(shù)的命名長(zhǎng)度的關(guān)系,編譯后也會(huì)從.class文件中減少這些冗余的信息?;煜?,體積大約能減少25%,這對(duì)當(dāng)前費(fèi)用
53、較貴的無線網(wǎng)絡(luò)傳輸是有一定意義的。 為了能與各種IDE集成,就像Java2 SDK一樣,混淆器采用命令行參數(shù)的形式,以便可被其調(diào)用。目前流行的Obfuscator有RetroGuard等。 3.7 模擬器的相關(guān)調(diào)試 IDE整合的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ù)的跟蹤等。如圖3-4,是內(nèi)存跟蹤測(cè)試隨時(shí)間變化的調(diào)試器。其中,允許強(qiáng)制垃圾回收(Garbage Collection)。由于Java語言中
54、,不像許多其他的如C+語言,不需要指定回收函數(shù)中特定不使用的資源,資源回收機(jī)制將自動(dòng)清空無效變量占用的空間。在程序運(yùn)行中也可以調(diào)用System類的gc()函數(shù)手動(dòng)收回廢棄的內(nèi)存。 四 程序分析和編寫手機(jī)代碼 4.1 游戲進(jìn)入前的選擇 每個(gè)MIDlet程序都必須有一個(gè)主類,該類必須繼承自MIDlet。它控制著整個(gè)程序的運(yùn)行,并且可以通過相應(yīng)函數(shù)從程序描述文件中獲取相關(guān)的信息。該類中擁有可以管理程序的創(chuàng)建、開始、暫停(手機(jī)中很可能有正在運(yùn)行程序卻突然來電的情況,這時(shí)應(yīng)進(jìn)入暫停狀態(tài)。)、結(jié)束的函數(shù)。 本設(shè)計(jì)程序進(jìn)入時(shí),首先載入畫面的不是游戲運(yùn)行狀態(tài),而是提供選項(xiàng),
55、當(dāng)選擇 開始 時(shí)正式運(yùn)行。因此,在 MainScreen的構(gòu)造函數(shù)中分配了List類,即選項(xiàng)畫面的內(nèi)存空間。在startApp()函數(shù)中,隨即調(diào)用了Displable的setCurrent()函數(shù)將當(dāng)前屏幕設(shè)置為Navigator.MAIN_SCREEN。在 版權(quán)聲明 界面前,建造了一個(gè)Alert類。Alert對(duì)象用于顯示提示、警告,還有版權(quán)信息等告之用戶信息的臨時(shí)閃現(xiàn)的屏幕,它可作為setCurrent的參數(shù),提前顯示在最終需要顯示的屏幕前。當(dāng)程序轉(zhuǎn)到 GameScreen 時(shí),畫面將永久顯示游戲本身,直到用戶點(diǎn)擊相應(yīng)按鈕手動(dòng)結(jié)束。但是當(dāng)顯示的畫面元素超過一屏大小時(shí),將自動(dòng)轉(zhuǎn)換為永久狀態(tài)。
56、GameScreen 繼承了接口commandListener,這樣,就可以使用高級(jí)界面的Command按鈕。繼承了commandListener的類必須擁有commandAction(),以決定對(duì)按鍵采取什么樣的行為。即按鈕事件觸發(fā)后需執(zhí)行的函數(shù)。在設(shè)置好commandlistener后,需要調(diào)用setCommandListener()以將按鈕事件激活。鍵盤事件中,可用getCommandType()返回的Command類型來確定選擇的是什么按鈕。MainScreen繼承了List類,用于顯示列表選項(xiàng),使用其append()函數(shù)可將選項(xiàng)加入到列表中。getSelectIndex()可檢測(cè)到選
57、擇的項(xiàng)目的序號(hào),序號(hào)從0開始遞增。其中,當(dāng)選擇第一項(xiàng)時(shí)將載入正式游戲畫面GameScreen類,第二項(xiàng)將顯示轉(zhuǎn)到設(shè)定畫面,第三項(xiàng)用來顯示用戶信息,版權(quán)聲明等。第四項(xiàng)是離開游戲選項(xiàng)。 4.2 主游戲邏輯及其涉及到的若干類 4.2.1 程序的菜單選項(xiàng) 這個(gè)寫在 MainScreen.java 文件中,這個(gè)類繼承 List 。同時(shí)也繼承了接口commandListener,這樣,就可以使用高級(jí)界面的Command按鈕。繼承了commandListener的類必須擁有commandAction(),以決定對(duì)按鍵采取什么樣的行為。即按鈕事件觸發(fā)后需執(zhí)行的函數(shù)。在設(shè)置好commandlistener后,需要調(diào)用setCommandListener()以將按鈕事件激活。用append 方法來加入菜單: append("開始",null); append("設(shè)定",null); append("版權(quán)聲明",null); append("離開",null); set
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)福利協(xié)議范本
- 2025年藥用空心膠囊項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模稿
- 2025年區(qū)域一體化發(fā)展戰(zhàn)略規(guī)劃協(xié)議
- 2025年農(nóng)業(yè)產(chǎn)品買賣合同規(guī)范
- 2025年產(chǎn)品分銷權(quán)合同
- 2025年公共區(qū)域綠化苗木合同
- 2025年中介企業(yè)勞務(wù)合作合同樣本
- 2025年離婚協(xié)議書財(cái)產(chǎn)分割及子女撫養(yǎng)策劃大綱
- 2025年港口業(yè)投資項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 2025年聚醚多元醇項(xiàng)目提案報(bào)告模稿
- GB 4706.20-2004家用和類似用途電器的安全滾筒式干衣機(jī)的特殊要求
- 無紙化會(huì)議系統(tǒng)解決方案
- 佛教空性與緣起課件
- 上海鐵路局勞動(dòng)安全“八防”考試題庫(含答案)
- 《愿望的實(shí)現(xiàn)》教學(xué)設(shè)計(jì)
- 效率提升和品質(zhì)改善方案
- 中山大學(xué)抬頭信紙中山大學(xué)橫式便箋紙推薦信模板a
- 義務(wù)教育學(xué)科作業(yè)設(shè)計(jì)與管理指南
- 《汽車發(fā)展史》PPT課件(PPT 75頁)
- 常暗之廂(7規(guī)則-簡(jiǎn)體修正)
- 反詐騙防詐騙主題教育宣傳圖文PPT教學(xué)課件
評(píng)論
0/150
提交評(píng)論