版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)論文</b></p><p> 基于JAVA的手機(jī)游戲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 學(xué)生姓名: </b></p><p><b> 學(xué) 號(hào): </b></p><p> 年級(jí)專業(yè):二〇一二級(jí)軟件技術(shù)</p>
2、;<p><b> 指導(dǎo)老師: </b></p><p> 二級(jí)學(xué)院:電子信息學(xué)院</p><p><b> 目 錄</b></p><p> 摘要……………………………………………………………………………………………1</p><p><b> 1.緒論3<
3、;/b></p><p><b> 2.手機(jī)游戲3</b></p><p> 2.1 手機(jī)游戲現(xiàn)狀3</p><p> 2.2 手機(jī)游戲分類[1][2]3</p><p> 3.程序開發(fā)語(yǔ)言 [3]4</p><p> 3.1 Java4</p><p
4、> 3.2 Java程序開發(fā)流程4</p><p> 3.3 Java語(yǔ)言的特點(diǎn)[4]5</p><p> 4.開發(fā)環(huán)境及相關(guān)技術(shù)介紹[5]6</p><p> 4.1 開發(fā)環(huán)境6</p><p><b> 4.2 JDK6</b></p><p><b>
5、4.3 WTK7</b></p><p> 4.4 Eclipse與EclipseMe8</p><p> 5.游戲的開發(fā)與實(shí)現(xiàn)9</p><p> 5.1 游戲工程及程序的建立9</p><p> 5.2 手機(jī)中的坐標(biāo)系12</p><p> 5.3 游戲的具體實(shí)現(xiàn)環(huán)節(jié)13</
6、p><p> 5.4 具體編程的實(shí)現(xiàn)13</p><p><b> 6.結(jié)論21</b></p><p><b> 參考文獻(xiàn)22</b></p><p><b> 答 謝23</b></p><p><b> 摘 要 <
7、;/b></p><p> 從小屏按鍵手機(jī)到大屏觸控手機(jī),從非智能平臺(tái)再到智能平臺(tái),我們可以直觀的發(fā)現(xiàn)手機(jī)愈加的貼近人們的生活。可以說(shuō)今天的手機(jī)已經(jīng)從單純的通訊工具轉(zhuǎn)變?yōu)橐粋€(gè)集通訊、音樂、電影、游戲等多功能于一身的便攜終端。手機(jī)的綜合價(jià)值越來(lái)越高,這使得人們對(duì)它的依賴性越來(lái)越強(qiáng)。</p><p> 我們可以清楚的看出,現(xiàn)在的生活節(jié)奏正在變快。人們除了工作和學(xué)習(xí)之外,還要花費(fèi)不少的
8、時(shí)間在往返的路途上,當(dāng)然也就沒有太多時(shí)間呆在電視機(jī)前,這一現(xiàn)狀自然而然的激發(fā)了移動(dòng)終端(手機(jī)、掌上游戲機(jī))的飛速崛起。在掌上游戲機(jī)系列中,任天堂的NDSL、索尼的PSP已經(jīng)被我們所熟知,成為了很暢銷的游戲機(jī)。但是從近幾年來(lái)看,我們發(fā)現(xiàn)手機(jī)游戲正在潛移默化的侵蝕著掌上游戲機(jī)的市場(chǎng)份額,當(dāng)然這種“侵略”是有依據(jù)的。目前在手機(jī)上看到的已經(jīng)不再是當(dāng)年簡(jiǎn)單的貪吃蛇。各種各樣龐大、精美的手機(jī)游戲已經(jīng)走進(jìn)我們的生活。甚至一些電腦上出色的網(wǎng)游魔獸世界也
9、有了手機(jī)終端中的復(fù)刻版,這些都讓忙碌的我們感受到了不一樣的樂趣。</p><p> Java在移動(dòng)設(shè)備上的功能實(shí)現(xiàn)也越來(lái)越具影響力,為豐富人們的生活,提供服務(wù)等方面提供了諸多方便。本文主要介紹一款基于Java語(yǔ)言開發(fā)的手機(jī)游戲——貪吃蛇,該設(shè)計(jì)主要是應(yīng)用J2ME技術(shù),結(jié)合JDK 1.8.0,使用IDE Eclipse 4.4與EclipseMe1.7.9作為開發(fā)工具,以Sun J2ME Wireless Too
10、l Kit 2.5.2軟件作為模擬測(cè)試工具的綜合性的開發(fā)設(shè)計(jì)。本設(shè)計(jì)主要是對(duì)手機(jī)游戲的開發(fā)過(guò)程的各個(gè)環(huán)節(jié)做了詳細(xì)的介紹,其中包括:手機(jī)游戲開發(fā)平臺(tái)的搭建與測(cè)試、具體設(shè)計(jì)及開發(fā)步驟、軟件測(cè)試運(yùn)行與打包生成等,實(shí)現(xiàn)了經(jīng)典游戲——貪吃蛇的手機(jī)嵌入,以便滿足一些手機(jī)用戶的娛樂需求。</p><p> 關(guān)鍵字 J2ME WTK Eclipse</p><p><b> ABSTR
11、ACT</b></p><p> From mobile phones to screen touch screen buttons, from the intelligence platform to intelligence platform, we can directly find mobile phones more and more close to people's life.
12、Today's cell phone was already from the simple communication tools into a set of communication, music, movies, games and other multi-functional portable terminal.Mobile phone comprehensive value more and more high, t
13、his makes people more and more dependent on it.We can clearly see, now life rhythm is faster.In addition</p><p> Java in the function realization of the mobile device is also more and more influential for r
14、ich people's life and providing services offered many convenient. This paper mainly introduces a mobile game snake of Java language development. This design is a comprehensive development design,which mainly applied
15、1.8.0 JDK J2ME technology, combined with the Eclipse, use IDE EclipseMe1.7.9 as 4.4 development Tool, Tool Kit to 2.5.2 from J2ME Wireless software as simulation test tools. This design is ma</p><p> Key Wo
16、rds:J2ME,WTK,Eclipse</p><p><b> 1.緒論</b></p><p> 任何游戲在設(shè)計(jì)之初,所面向的目標(biāo)群體的定位都不盡相同,自然的影響游戲設(shè)計(jì)的動(dòng)機(jī)也會(huì)不同,受到游戲設(shè)計(jì)導(dǎo)向和動(dòng)機(jī)的影響,任務(wù)的設(shè)計(jì)目的大體可分為:提升游戲娛樂性、使玩家壓抑釋放、獲得心里滿足、同時(shí)也可視為一種賺錢的手段。隨著3G技術(shù)的普及和應(yīng)用,基于Java的開發(fā)
17、軟件在手機(jī)上的使用非常的廣泛,手機(jī)增值服務(wù)的內(nèi)容也是越來(lái)越多,對(duì)豐富人們的生活內(nèi)容、提供快捷的資訊起著不可忽視的作用。</p><p> 在這個(gè)信息社會(huì)中,隨著信息網(wǎng)絡(luò)化的不斷進(jìn)展,手機(jī)游戲越來(lái)越多的走進(jìn)人們的工作和生活。其中現(xiàn)在國(guó)內(nèi)從圖形化游戲開發(fā)的主流技術(shù)來(lái)看,包括:基于嵌入式游戲開發(fā)與設(shè)計(jì)、基于Java游戲開發(fā)與設(shè)計(jì)、基于Brew游戲開發(fā)與設(shè)計(jì)、基于Uni-java游戲的開發(fā)與設(shè)計(jì)、手機(jī)網(wǎng)絡(luò)游戲的開發(fā)與設(shè)
18、計(jì)等。其中隨著3G技術(shù)的飛速發(fā)展,Java手機(jī)游戲具有更大的市場(chǎng)優(yōu)勢(shì)。</p><p> 本設(shè)計(jì)通過(guò)查閱相關(guān)書籍,研究手機(jī)游戲開發(fā)與設(shè)計(jì)的整體設(shè)計(jì)流程及設(shè)計(jì)思路、學(xué)習(xí)并使用Java語(yǔ)言進(jìn)行程序的編寫及運(yùn)行調(diào)試,完成基于Java語(yǔ)言的手機(jī)游戲的開發(fā)與設(shè)計(jì)。</p><p><b> 2.手機(jī)游戲</b></p><p> 2.1 手機(jī)游戲現(xiàn)
19、狀</p><p> 在信息和網(wǎng)絡(luò)高速發(fā)展的今天,手機(jī)已經(jīng)成為不可或缺的通訊工具,它的普及速度之快,讓人瞠目,在短短的幾年間,手機(jī)及其它無(wú)線設(shè)備已經(jīng)走進(jìn)了普通百姓的工作和生活。眾所周知,手機(jī)的規(guī)模越來(lái)越壯大、功能也越來(lái)越強(qiáng)大,而游戲也已成為手機(jī)上不可缺少的功能,目前,手機(jī)游戲業(yè)正在以良好的發(fā)展前景飛快發(fā)展著,而且將進(jìn)入一個(gè)高利潤(rùn)的穩(wěn)定增長(zhǎng)期。</p><p> 2.2 手機(jī)游戲分類[1
20、][2]</p><p> 隨著信息技術(shù)的飛速發(fā)展,手機(jī)游戲的逐漸的多樣化,具體分類歸納如下表⑴所示:</p><p> 表⑴ 手機(jī)游戲分類列表</p><p> 短信游戲:玩家和游戲服務(wù)商通過(guò)短信中文字的內(nèi)容來(lái)交流,達(dá)到游戲目的的一種文字游戲。一般玩家通過(guò)回復(fù)短信的形式來(lái)進(jìn)行游戲,游戲單調(diào)、枯燥無(wú)味。</p><p> Wap瀏覽器
21、游戲:通過(guò)手機(jī)上網(wǎng),使用瀏覽器瀏覽網(wǎng)頁(yè)來(lái)進(jìn)行的一種文字游戲,玩家根據(jù)Wap瀏覽器瀏覽到的頁(yè)面上的提示,以選擇不同的選項(xiàng)的方法來(lái)進(jìn)行游戲,游戲不夠直觀、單調(diào)無(wú)趣。</p><p> 嵌入式游戲:將游戲程序預(yù)先固化到手機(jī)中的一種圖形類游戲,其中固化過(guò)程在手機(jī)出廠前就已經(jīng)完成。因此這種手機(jī)游戲不能進(jìn)行任何修改或刪除操作。</p><p> Java游戲:Java是一種Sun微系統(tǒng)公司所發(fā)展出
22、來(lái)的程序語(yǔ)言,它具有很多有利于手機(jī)游戲開發(fā)的性質(zhì),例如封裝性、安全性等,便于手機(jī)游戲的開發(fā)與設(shè)計(jì),而且目前在手機(jī)上應(yīng)用最多的就是JAVA游戲。</p><p> BREW游戲:和java類似,brew也是一種程序語(yǔ)言,BREW (Binary Runtime Environment for Wireless)即無(wú)線二進(jìn)制運(yùn)行環(huán)境,brew游戲的一主要特點(diǎn)就是可以擴(kuò)充容量。</p><p>
23、; Uni-java游戲:中國(guó)聯(lián)通剛剛為其手機(jī)準(zhǔn)備的一個(gè)新的通用開發(fā)平臺(tái)。 Uni-Java可以讓中國(guó)聯(lián)通的手機(jī)也支持并運(yùn)行Java程序,同時(shí)也支持一些Java游戲。目前已經(jīng)有相當(dāng)數(shù)量的廠商開始進(jìn)入U(xiǎn)ni-Java手機(jī)游戲開發(fā)的領(lǐng)域。</p><p> 2D手機(jī)游戲:采用圖形類的手機(jī)游戲,其中手機(jī)游戲界面為二維圖像。</p><p> 3D手機(jī)游戲:延續(xù)2D手機(jī)游戲繼續(xù)發(fā)展,手機(jī)游戲
24、界面也由二維圖像發(fā)展為三維圖像,給玩家以更好的視覺效果,使游戲更具娛樂性。</p><p> 3.程序開發(fā)語(yǔ)言 [3]</p><p><b> 3.1 Java</b></p><p> Java是由Sun Microsystems公司推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言(以下簡(jiǎn)稱Java語(yǔ)言)和Java平臺(tái)的總稱。由James Gosl
25、ing和同事們共同研發(fā),并在1995年正式推出。Java最初被稱為Oak,是1991年為消費(fèi)類電子產(chǎn)品的嵌入式芯片而設(shè)計(jì)的。1995年更名為Java,并重新設(shè)計(jì)用于開發(fā)Internet應(yīng)用程序。用Java實(shí)現(xiàn)的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺(tái)、動(dòng)態(tài)Web、Internet計(jì)算。從此,Java被廣泛接受并推動(dòng)了Web的迅速發(fā)展,常用的瀏覽器均支持Javaapplet。另一方面,Java技術(shù)也不
26、斷更新。Java自面世后就非常流行,發(fā)展迅速,對(duì)C++語(yǔ)言形成有力沖擊。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。2010年Oracle公司收購(gòu)Sun Microsystems。</p><p> Java分為三個(gè)體系Java SE(J2SE,Java2 Platform Standard Edition,標(biāo)準(zhǔn)版),JavaEE(J2EE,Java 2 Platform, Ent
27、erprise Edition,企業(yè)版),Java ME(J2ME,Java 2 Platform Micro Edition,微型版)。</p><p> 3.2 Java程序開發(fā)流程</p><p><b> 3.2.1 編譯</b></p><p> 編譯就是把所編制的*.Java文件,編譯成二進(jìn)制的*.class文件。Java.e
28、xe是由Sun公司編寫的一個(gè)編譯器,它可以把*.Java文件成為*.class文件。其中,如果一個(gè)*.Java文件中定義了多個(gè)類,它就將被編譯成多個(gè)*.class文件。</p><p> 3.2.2 混淆(可選) </p><p> 由于class文件格式透明的緣故,Java文件很容易被反編譯。因此,如果不希望別人掌握你的源代碼的話,就一定要進(jìn)行混淆(Obfuscate)。所謂混淆,就
29、是利用工具,將方法各類名改成沒有實(shí)際意義的特定的字符及代號(hào),增加閱讀的難度。這樣做的目的是為了更充分的保護(hù)了自己的知識(shí)產(chǎn)權(quán),而且混淆器還可以減少程序的大小。混淆器一般都是由第三方軟件開發(fā)商提供的,許多都是開源的,可以免費(fèi)使用。</p><p><b> 3.2.3 預(yù)審核</b></p><p> 在完成編譯后,必須對(duì)*.class文件進(jìn)行預(yù)審核,因?yàn)閏lass在
30、傳輸過(guò)程中容易損壞或是被篡改,且手機(jī)的資源有限,所以在手機(jī)上審核一般比較困難。因此為了使我們?cè)谑謾C(jī)上進(jìn)行的審核工作量減少。我們?cè)赑C機(jī)上進(jìn)行一部分預(yù)審核工作。</p><p><b> 3.2.4 打包</b></p><p> MIDP可執(zhí)行文件后綴名為jar。后綴為jad的文件是jar文件的描述文件。</p><p> 在仿真器或手機(jī)
31、上安裝運(yùn)行有了jar及jad文件后,就可以把它們放到仿真器或手機(jī)上運(yùn)行了。至于如何把它們放到手機(jī)上,根據(jù)手機(jī)的功能不同,可有如下幾種方法:使用數(shù)據(jù)線,將PC與手機(jī)相連,下載文件;使用紅外線;使用藍(lán)牙;使用OTA空中下載(利用短信/WAP)。</p><p> 3.3 Java語(yǔ)言的特點(diǎn)[4]</p><p> 3.3.1 平臺(tái)獨(dú)立性</p><p> 要使應(yīng)用
32、軟件在網(wǎng)絡(luò)中的任意一臺(tái)電腦中都能夠正常運(yùn)行,就必須使得軟件具有平臺(tái)獨(dú)立性。軟件的平臺(tái)獨(dú)立性一直以來(lái)都是軟件發(fā)展的需求及開發(fā)者所追求的首要目標(biāo),而Java正是一款具有平臺(tái)獨(dú)立性的編程語(yǔ)言,在源程序級(jí)保證了其基本數(shù)據(jù)類型與平臺(tái)的無(wú)關(guān),使得Java程序可以在世界范圍內(nèi)共享,為程序的編譯和解讀提供了很大的方便性。</p><p> 3.3.2 面向?qū)ο?lt;/p><p> 面向?qū)ο蟮能浖幊碳夹g(shù)
33、是當(dāng)今軟件開發(fā)行業(yè)中最常用的一種技術(shù),Java正是一款面向?qū)ο蟮木幊涕_發(fā)軟件。它使用一種被稱為“類(class)”的軟件對(duì)象,代碼可以重復(fù)使用和可以擴(kuò)展,使得程序開發(fā)變得容易許多。具體來(lái)說(shuō),面向?qū)ο笮园ㄒ韵氯齻€(gè)特點(diǎn):</p><p> 封裝性:Java提供了類機(jī)制,以類對(duì)象為基本組成單元,對(duì)象中封裝了狀態(tài)變量和方法。Java的封裝性很好的體現(xiàn)了模塊化和信息隱蔽等良好的程序設(shè)計(jì)思想。</p>&l
34、t;p> 繼承性:Java編程語(yǔ)言中最重要的數(shù)據(jù)類型是類,它提供了單繼承機(jī)制。為了解決多繼承的問題和克服了多繼承的復(fù)雜性,Java引進(jìn)接口(interface)的概念,進(jìn)而使得Java程序更容易被擴(kuò)展和使用。</p><p> 多態(tài)性:Java語(yǔ)言通過(guò)方法的重載和覆蓋實(shí)現(xiàn)多態(tài)性。方法重載是指一個(gè)類中可以有多個(gè)名字相同,但參數(shù)類型不同的方法。方法覆蓋是指在繼承的過(guò)程中,子類可以重新定義父類的某種方法,實(shí)現(xiàn)
35、自己需要的功能。</p><p><b> 3.3.3 安全性</b></p><p> 作為Web編程語(yǔ)言的一種,Java具有良好的安全結(jié)構(gòu)和安全策略。代碼在編譯的過(guò)程中接受多層的安全檢查。在實(shí)現(xiàn)安全性方面,主要采取的措施包括:取消指針操作、內(nèi)存管理自動(dòng)化、提供多網(wǎng)絡(luò)軟件協(xié)議的用戶接口等。</p><p><b> 3.3.4
36、 多線程</b></p><p> 通過(guò)多線程運(yùn)行機(jī)制,Java支持多任務(wù)和并行處理。也就是說(shuō),Java可以同時(shí)處理多個(gè)執(zhí)行線程。Java編程語(yǔ)言的多線程行,極大改善了CPU的吞吐量、響應(yīng)時(shí)間等性能指標(biāo)。</p><p><b> 3.3.5 分布式</b></p><p> Java中包括了一個(gè)支持HTTP和FTP協(xié)議傳送和
37、接收信息的庫(kù)函數(shù),因此可以通過(guò) URL地址在網(wǎng)絡(luò)上很方便地訪問其它對(duì)象,其訪問方式與訪問本地文件系統(tǒng)幾乎完全相同。</p><p> 4.開發(fā)環(huán)境及相關(guān)技術(shù)介紹[5]</p><p><b> 4.1 開發(fā)環(huán)境</b></p><p> 操作系統(tǒng):Microsoft Windows 7</p><p> 程序語(yǔ)言
38、:Java </p><p> 開 發(fā) 包:Java(TM) 2 Standard Edition (5.0)</p><p> Sun J2ME Wireless Tool Kit 2.5.2</p><p><b> JDK 1.8.0</b></p><p> IDE: Eclipse 4.4 Ec
39、lipseMe1.7.9</p><p><b> 4.2 JDK</b></p><p> 4.2.1 JDK簡(jiǎn)介</p><p> JDK是Java開發(fā)工具包(Java Development Kit)的縮寫,它是一切Java應(yīng)用程序的基礎(chǔ),是整個(gè)Java的核心。J2ME是Java語(yǔ)言的一種,所以在安裝J2ME開發(fā)工具之前,就必須先安
40、裝JDK。</p><p> 4.2.2 JDK的安裝</p><p> 下載JDK,使用版本為JDK 8.0,自定義安裝路徑安裝。</p><p> 4.2.3 JDK的配置</p><p> 配置環(huán)境變量,具體變量及其變量值如下表⑵所示:</p><p> 表⑵ JDK中變量配置列表</p>
41、<p> 4.2.4 JDK測(cè)試</p><p> 在DOS模擬窗口中輸入“java -version”,得到如下圖⑴所示,即安裝JDK成功。</p><p><b> 圖⑴ 測(cè)試JDK</b></p><p><b> 4.3 WTK</b></p><p> 4.3.1 W
42、TK簡(jiǎn)介</p><p> WTK 的全稱是Sun J2ME Wireless Toolkit —— Sun的無(wú)線開發(fā)工具包。這一工具包的設(shè)計(jì)目的是為了幫助開發(fā)人員簡(jiǎn)化j2me的開發(fā)過(guò)程。使用其中的工具可以開發(fā)與 Java Technology for the Wireless Industry (JTWI, JSR 185) 規(guī)范兼容的設(shè)備上運(yùn)行的j2me 應(yīng)用程序。該工具箱包含了完整的生成工具、實(shí)用程序以及
43、設(shè)備仿真器。到本文寫作時(shí)為止可以獲取有四個(gè)版本,分別是1.0.4, 2.0, 2.1和2.2。每個(gè)版本都包括英語(yǔ),日語(yǔ),簡(jiǎn)體中文,繁體中文4個(gè)語(yǔ)種包。</p><p> 4.3.2 WTK的安裝</p><p> 下載WTK,使用版本為WTK 2.5.2,自定義安裝路徑安裝。</p><p> 4.3.3 WTK測(cè)試</p><p>
44、 運(yùn)行“Sun Java(TM) Wireless Toolkit 2.5.2 for CLDC”,彈出如下圖⑵所示界面證明WTK安裝成功。</p><p><b> 圖⑵</b></p><p> 4.4 Eclipse與EclipseMe</p><p> 4.4.1 Eclipse與EclipseMe簡(jiǎn)介</p>&l
45、t;p> Eclipse是一個(gè)開發(fā)源代碼的、基于Java的可擴(kuò)展的開發(fā)平臺(tái)。Eclipse最大的一個(gè)特點(diǎn)就是它是完全免費(fèi)的,是一種可擴(kuò)展的開放源代碼IDE。在Eclipse中幾乎每樣?xùn)|西都是插件,且各種插件都為我們提供開發(fā)程序的各種功能。同時(shí)各個(gè)領(lǐng)域的開發(fā)人員通過(guò)開發(fā)插件,可以構(gòu)建與Eclipse環(huán)境無(wú)縫集成的工具。</p><p> EclipseMe為Eclipse的一個(gè)插件,致力于幫助開發(fā)者開發(fā)J
46、2ME應(yīng)用程序。EclipseMe并不為開發(fā)者提供無(wú)線設(shè)備模擬器,而將各手機(jī)廠商的實(shí)用模擬器緊密連接到Eclipse開發(fā)環(huán)境中,為開發(fā)者提供一種無(wú)縫統(tǒng)一的集成開發(fā)環(huán)境。</p><p> 4.4.2 Eclipse與EclipseMe的安裝</p><p> 下載Eclips,使用版本為Eclipse 4.4,自定義安裝路徑安裝。</p><p> 下載Ecl
47、ipseMe,使用版本為EclipseMe1.7.9,自定義安裝路徑安裝。</p><p> 4.5 WTK與EclipseMe的綁定</p><p> 將WTK綁定到EclipseMe,會(huì)大大提高開發(fā)者的工作效率。</p><p> 啟動(dòng)Eclipse,選擇“windows”菜單,再選擇“Preferernces”,在對(duì)話框中選擇“J2ME”選項(xiàng),再選擇“D
48、evice Management”選項(xiàng),單擊“Import”按鈕,在安裝了WTK 2.5.2的路徑下,選擇WTK 2.5.2文件夾,再單擊“Refresh”按鈕,這是“Devices”列表中就會(huì)列出所有模擬設(shè)備,如下圖⑶所示,即WTK與EclipseMe的綁定成功。</p><p><b> 圖⑶</b></p><p> 5.游戲的開發(fā)與實(shí)現(xiàn)</p>
49、<p> 5.1 游戲工程及程序的建立</p><p> 5.1.1 建立新的工程文件</p><p> 運(yùn)行Eclipse軟件,新建工程 “J2ME Midlet Suite”,如下圖⑷所示,其中,設(shè)置項(xiàng)目的運(yùn)行環(huán)境如下圖⑸所示,游戲的工程建立完成。</p><p><b> 圖⑷</b></p><
50、p><b> 圖⑸</b></p><p> 5.1.2 新建主程序文件</p><p> 在工程文件夾,新建主程序“J2ME Midlet”,如下圖⑹所示,游戲的主程序建立完成。</p><p><b> 圖⑹</b></p><p> 5.1.3 向主程序內(nèi)添加類</p&g
51、t;<p> 方法一:鼠標(biāo)右擊工程文件夾,依次選擇菜單項(xiàng)“New” →“Class”,將類命名為“SnakeCanvas”,單擊“Finish”按鈕,完成類的加載。</p><p> 方法二:主程序編寫完成時(shí),在主程序中調(diào)用的類名“SnakeCanvas”下有紅色下劃線,說(shuō)明該類沒有被添加到工程中。用鼠標(biāo)單擊類名“SnakeCanvas”,在出現(xiàn)的下拉菜單中點(diǎn)擊“Create class ‘Sn
52、akeCanvas’”,如下圖⑺所示,則完成類“SnakeCanvas”的加載。</p><p><b> 圖⑺</b></p><p> 5.2 手機(jī)中的坐標(biāo)系</p><p> 手機(jī)中的xy坐標(biāo)系與普通的xy坐標(biāo)系有所不同,手機(jī)中,以屏幕的左上角為原點(diǎn),水平方向?yàn)閤軸,垂直方向?yàn)閥軸,如下圖⑻所示:</p><p&
53、gt;<b> 圖⑻</b></p><p> 5.3 游戲的具體實(shí)現(xiàn)環(huán)節(jié)</p><p><b> ●數(shù)據(jù)的初始化;</b></p><p> ●變量的定義及賦值;</p><p> ●設(shè)置屏幕背景顏色為粉紅色;</p><p> ●設(shè)置畫筆顏色為紅色,并繪制貪
54、吃蛇蛇身及食物;</p><p> ●食物的產(chǎn)生及其產(chǎn)生位置的限制條件;</p><p><b> ●蛇身的移動(dòng);</b></p><p> ●手機(jī)按鍵功能實(shí)現(xiàn);</p><p> ●達(dá)到游戲結(jié)束條件時(shí),游戲結(jié)束;</p><p><b> ●游戲的運(yùn)行與調(diào)試</b>
55、;</p><p><b> ●游戲的模擬實(shí)現(xiàn);</b></p><p><b> ●游戲的打包生成;</b></p><p> ●.jad及.jar文件的生成</p><p> 5.4 具體編程的實(shí)現(xiàn)</p><p> 5.4.1 主程序的編寫及功能實(shí)現(xiàn)</
56、p><p> //系統(tǒng)導(dǎo)入相應(yīng)的包,其中有自動(dòng)加載的,也有手動(dòng)導(dǎo)入的部分。具體導(dǎo)入包的情況,要依據(jù)程序中所用到的類的種類。</p><p> import javax.microedition.lcdui.Display;</p><p> import javax.microedition.midlet.MIDlet;</p><p>
57、 // myMIDlet類的具體實(shí)現(xiàn)</p><p> public class myMIDlet extends MIDlet {</p><p> //實(shí)現(xiàn)兩個(gè)Canvas類之間的切換</p><p> SnakeCanvas displayable = new SnakeCanvas();</p><p> public myM
58、IDlet() {</p><p> // 獲得當(dāng)前MIDlet的Display對(duì)象,并設(shè)置SnakeCanvas對(duì)象為當(dāng)前的顯示對(duì)象</p><p> Display.getDisplay(this).setCurrent(displayable);</p><p><b> }</b></p><p> /
59、/系統(tǒng)自動(dòng)生成代碼,本程序中默認(rèn)其初始狀態(tài)</p><p> public void startApp() {</p><p><b> }</b></p><p> public void pauseApp() {</p><p><b> }</b></p><p&g
60、t; public void destroyApp(boolean unconditional) {</p><p><b> }</b></p><p><b> }</b></p><p> 5.4.2 變量的定義及賦值</p><p> public class SnakeCanva
61、s extends Canvas implements Runnable {}</p><p> 定義貪吃蛇節(jié)點(diǎn)坐標(biāo):其中第二維下標(biāo)為0的代表x坐標(biāo),第二維下標(biāo)是1的代表y坐標(biāo)。</p><p> int[][] snake = new int[200][2];</p><p> 定義已經(jīng)使用的節(jié)點(diǎn)數(shù)量。</p><p> int s
62、nakeNum;</p><p><b> 貪吃蛇運(yùn)動(dòng)方向。</b></p><p> 0代表向上,1代表向下,2代表向左,3代表向右 (其中方向的控制變量依據(jù)手機(jī)開發(fā)平臺(tái)的不同而不同,例如:Nokia手機(jī)開發(fā)平臺(tái)中,-1表示向上、-2表示向下、-3表示向左、-4表示向右。這里所用的為Sun Java(TM) Wireless Toolkit 2.5.2)。<
63、;/p><p> int point;</p><p><b> //向上</b></p><p> private final int KEY_UP = 0;</p><p><b> //向下</b></p><p> private final int KEY
64、_DOWN = 1;</p><p><b> //向左</b></p><p> private final int KEY_LEFT = 2;</p><p><b> //向右</b></p><p> private final int KEY_RIGHT = 3;</p>
65、;<p><b> 定義游戲區(qū)域?qū)挾取?lt;/b></p><p> int width, height;</p><p><b> 定義蛇身單元寬度。</b></p><p> private final byte snakeWidth = 10;</p><p> 利用布爾類
66、定義狀態(tài):</p><p> 是否處于暫停狀態(tài),true代表暫停;</p><p> boolean isPaused = false;</p><p> 是否處于運(yùn)行狀態(tài),true代表運(yùn)行。</p><p> boolean isRun = true;</p><p> 定義食物的X坐標(biāo)及Y坐標(biāo)。</
67、p><p> int foodX, foodY;</p><p> 5.4.3.數(shù)據(jù)的初始化</p><p><b> 初始化開始數(shù)據(jù)。</b></p><p> private void init() {};</p><p><b> 初始化屏幕大小。</b><
68、/p><p> public SnakeCanvas() {</p><p><b> init();</b></p><p> width = getWidth();//設(shè)置游戲界面,寬度為屏幕寬度height = getHeight();//高度為屏幕高度</p><p> new Thread(this).s
69、tart();</p><p><b> }</b></p><p><b> 初始化節(jié)點(diǎn)數(shù)量。</b></p><p> snakeNum = 7;</p><p><b> 初始化節(jié)點(diǎn)數(shù)據(jù)。</b></p><p> for (int i
70、 = 0; i < snakeNum; i++) {</p><p> snake[i][0] = 100 - snakeWidth * i;</p><p> snake[i][1] = 40;</p><p><b> }</b></p><p><b> 初始化移動(dòng)方向。</b>
71、</p><p> point = KEY_DOWN;</p><p><b> 初始化食物坐標(biāo)。 </b></p><p> foodX = 100;</p><p> foodY = 100;</p><p> 5.4.4 設(shè)置屏幕背景顏色為粉紅色</p><p
72、><b> 設(shè)置屏幕</b></p><p> Canvas是個(gè)畫布,graphics是只畫筆,主要用于實(shí)現(xiàn)在Canvas畫布上繪制圖畫。</p><p> protected void paint(Graphics g) {}</p><p> 清屏并設(shè)置屏幕背景為粉色</p><p> 其中,粉色的R
73、GB代碼為0xffcccc,格式為(0xRRGGBB)</p><p> g.setColor(0xffcccc);</p><p> 5.4.5 設(shè)置畫筆顏色為紅色,并繪制貪吃蛇蛇身及食物</p><p> 設(shè)置畫筆為紅色,紅色的RGB代碼為0xff0000。</p><p> g.fillRect(0, 0, width, hei
74、ght);</p><p> g.setColor(0xff0000);</p><p><b> 繪制蛇身</b></p><p> for (int i = 0; i < snakeNum; i++) {</p><p> g.fillRect(snake[i][0], snake[i][1], sn
75、akeWidth, snakeWidth);</p><p><b> }</b></p><p><b> 繪制食物</b></p><p><b> if (b) {</b></p><p> g.fillRect(foodX, foodY, snakeWidth,
76、 snakeWidth);</p><p><b> }</b></p><p> 5.4.6 食物的產(chǎn)生及其產(chǎn)生位置的限制條件</p><p> 食物的坐標(biāo)必須位于屏幕內(nèi),且不能和蛇身重合</p><p> private void getFood() {</p><p> whil
77、e (true) {</p><p> foodX = Math.abs(r.nextInt() % (width - snakeWidth + 1))</p><p> / snakeWidth * snakeWidth;</p><p> foodY = Math.abs(r.nextInt() % (height - snakeWidth + 1))&l
78、t;/p><p> / snakeWidth * snakeWidth;</p><p> boolean b = true;</p><p> for (int i = 0; i < snakeNum; i++) {</p><p> if (snake[i][0] == foodX && snake[i][1]
79、== foodY) {</p><p> b = false;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if (b) {&l
80、t;/b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> 5.4.7 蛇身的移動(dòng)</p><p> private void move(int
81、 point) {};</p><p><b> 蛇身移動(dòng)</b></p><p> for (int i = snakeNum - 1; i > 0; i--) {</p><p> snake[i][0] = snake[i - 1][0];</p><p> snake[i][1] = snake[i
82、 - 1][1];</p><p><b> }</b></p><p><b> 第一個(gè)單元格移動(dòng)</b></p><p> switch (point) {</p><p> case KEY_UP:</p><p> snake[0][1] = snake[0
83、][1] - snakeWidth;</p><p><b> break;</b></p><p> case KEY_DOWN:</p><p> snake[0][1] = snake[0][1] + snakeWidth;</p><p><b> break;</b></p&
84、gt;<p> case KEY_LEFT:</p><p> snake[0][0] = snake[0][0] - snakeWidth;</p><p><b> break;</b></p><p> case KEY_RIGHT:</p><p> snake[0][0] = snake
85、[0][0] + snakeWidth;</p><p><b> break;</b></p><p><b> }</b></p><p> 5.4.8 手機(jī)按鍵功能實(shí)現(xiàn)</p><p> 其中用手機(jī)鍵盤中的上、下、左、右鍵來(lái)控制貪吃蛇的移動(dòng),用中間鍵來(lái)控制實(shí)現(xiàn)暫停功能。程序最后增加了r
86、epaint(),即刷屏功能,用來(lái)更新游戲數(shù)據(jù)。</p><p> public void keyPressed(int keyCode) {</p><p> int action = getGameAction(keyCode);</p><p> switch (action) {</p><p><b> case
87、UP:</b></p><p> point = KEY_UP;</p><p><b> break;</b></p><p> case DOWN:</p><p> point = KEY_DOWN;</p><p><b> break;</b>
88、</p><p> case LEFT:</p><p> point = KEY_LEFT;</p><p><b> break;</b></p><p> case RIGHT:</p><p> point = KEY_RIGHT;</p><p><
89、;b> break;</b></p><p> case FIRE:</p><p> isPaused = !isPaused;</p><p><b> break;</b></p><p><b> }</b></p><p> repai
90、nt();</p><p><b> }</b></p><p> 5.4.9 游戲結(jié)束</p><p> 判斷游戲是否結(jié)束 結(jié)束條件:蛇頭超出邊界或蛇頭碰到自身</p><p> private boolean GameOver() {};</p><p><b> 邊界判別
91、</b></p><p> if (snake[0][0] < 0 || snake[0][0] > (width - snakeWidth)</p><p> || snake[0][1] < 0 || snake[0][1] > (height - snakeWidth)) {</p><p> return true;
92、</p><p><b> }</b></p><p><b> 碰到自身</b></p><p> for (int i = 4; i < snakeNum; i++) {</p><p> if (snake[0][0] == snake[i][0] && snak
93、e[0][1] == snake[i][1]) {</p><p> return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p> 5.4.10 游戲的運(yùn)行與調(diào)試
94、</p><p> 游戲程序編輯完成并保存,鼠標(biāo)右鍵點(diǎn)擊主程序,依次選擇菜單項(xiàng)“Run As”→“Run Configurations”,在彈出的運(yùn)行對(duì)話框中,雙擊“Wireless Toolkit Emulator”,再選擇“New_configuration”,并分別選擇Project“MyGame”與Midlet“myMIDlet”,如下圖⑼所示:</p><p><b>
95、; 圖⑼</b></p><p> 其中Emulation的配置如下圖⑽所示:</p><p><b> 圖⑽</b></p><p> 單擊“Run”按鈕,運(yùn)行模擬器。</p><p> 5.4.11.游戲的模擬實(shí)現(xiàn)</p><p> 運(yùn)行模擬器,實(shí)現(xiàn)游戲結(jié)果的模擬,如下
96、圖⑾所示:</p><p><b> 圖⑾</b></p><p> 5.4.12 游戲的打包生成</p><p> 首先設(shè)置CLDC與MIDP的版本,在Project“MyGame”列表中雙擊“MyGame.jad”文件,出現(xiàn)如下圖⑿所示CLDC與MIDP的版本配置窗口:</p><p><b> 圖
97、⑿</b></p><p> 鼠標(biāo)右鍵點(diǎn)擊Project“MyGame”,依次選擇菜單項(xiàng)“J2ME”→“Create Package”,打包完成。</p><p> 5.4.13..jad及.jar文件的生成</p><p> 打包完成后,在Eclipse軟件的默認(rèn)工作路徑的“workspace\MyGame \deployed”子目錄中找到“My
98、Game.jar”、“ MyGame.jad”兩個(gè)文件。在Eclipse平臺(tái)的Project“MyGame”列表中也相應(yīng)的增加了這兩個(gè)文件,如下圖⒀所示:</p><p><b> 圖⒀</b></p><p> 打包完成后,只需將“MyGame.jar”、“ MyGame.jad”這兩個(gè)文件拷貝到手機(jī)里,這款手機(jī)游戲就可以在手機(jī)里運(yùn)行了。</p>
99、<p><b> 6.結(jié)論</b></p><p> 本次畢業(yè)設(shè)計(jì)通過(guò)應(yīng)用Java技術(shù),結(jié)合JDK 1.8.0,使用IDE Eclipse 4.4與EclipseMe1.7.9作為開發(fā)工具、Sun J2ME Wireless Tool Kit 2.5.2軟件作為模擬測(cè)試工具的綜合性設(shè)計(jì),實(shí)現(xiàn)了手機(jī)游戲的開發(fā)與設(shè)計(jì)。</p><p> 開發(fā)過(guò)程較為繁瑣復(fù)
100、雜,其中包括的主要環(huán)節(jié)如下:</p><p> 各個(gè)軟件的安裝與測(cè)試:本設(shè)計(jì)中所用的軟件有四款,分別為:JDK 1.8.0、Sun J2ME Wireless Tool Kit 2.5.2、Eclipse 4.4與EclipseMe1.7.9。設(shè)計(jì)從各個(gè)軟件的安裝、配置、軟件之間的綁定開始。正確的安裝配置軟件是設(shè)計(jì)得以實(shí)現(xiàn)的必備條件。</p><p> Java程序的構(gòu)造與編寫:本設(shè)計(jì)
101、中程序的編寫也是很重要的一部分,是手機(jī)游戲開發(fā)的前提條件。通過(guò)本次設(shè)計(jì),掌握了Java語(yǔ)言基礎(chǔ)知識(shí),理解了面向?qū)ο蟮木幊趟枷耄軌蜻\(yùn)用Java編寫命令行程序。</p><p> 手機(jī)游戲的運(yùn)行與打包生成:在程序代碼編寫完成后,進(jìn)行手機(jī)游戲的運(yùn)行與調(diào)試環(huán)節(jié),該環(huán)節(jié)通過(guò)多次的重復(fù)測(cè)試,來(lái)修改程序中存在的問題,使手機(jī)游戲能夠正常運(yùn)行,并在完成模擬測(cè)試后,打包生成.jad和.jar文件。</p><
102、p> 本設(shè)計(jì)將理論與實(shí)踐緊密的結(jié)合起來(lái),在學(xué)習(xí)理論知識(shí)的同時(shí),掌握了Java程序的設(shè)計(jì)思路及手機(jī)游戲的開發(fā)方法,可謂受益匪淺。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 詹建飛《Java Me核心技術(shù)與最佳實(shí)踐》,北京:電子工業(yè)出版社,2013年;</p><p> [2] 張鵬《3D手機(jī)游戲開發(fā)實(shí)例教
103、程》,北京:電子工業(yè)出版社,2013年;</p><p> [3] 石民勇、稅彬彬《手機(jī)游戲設(shè)計(jì)與制作教程》,北京:中國(guó)傳媒大學(xué)出版社,2014年;</p><p> [4] 楊邵芳、王穎、林錦全《Java程序設(shè)計(jì)基礎(chǔ)》,北京:科學(xué)出版社,2012年;</p><p> [5] 張鵬《3D手機(jī)游戲開發(fā)實(shí)例教程》,北京:電子工業(yè)出版社,2009年;</p&
104、gt;<p> [6] 李興華《Java開發(fā)實(shí)戰(zhàn)經(jīng)典》,北京:清華大學(xué)出版社,2014年;</p><p> [7] 徐明華、邱加永、紀(jì)希禹《Java基礎(chǔ)與案例開發(fā)詳解》,北京:清華大學(xué)出版社,2014年;</p><p> [8] 王國(guó)輝《Java程序開發(fā)參考手冊(cè)》,北京:機(jī)械工業(yè)出版社,2013年。</p><p><b> 答謝
105、</b></p><p> 經(jīng)過(guò)半年的忙碌,本次畢業(yè)設(shè)計(jì)已經(jīng)接近尾聲,作為一名大學(xué)生,由于缺乏開發(fā)設(shè)計(jì)經(jīng)驗(yàn),在做畢業(yè)設(shè)計(jì)的過(guò)程中難免有許多考慮不周全的地方,如果沒有導(dǎo)師的督促指導(dǎo),以及同學(xué)們的支持,想要完成這個(gè)設(shè)計(jì)是難以想象的。</p><p> 在這里首先要感謝我的導(dǎo)師甄春成老師。甄春成老師平日里工作繁多,但在我做畢業(yè)設(shè)計(jì)的每個(gè)階段,從外出實(shí)習(xí)到查閱資料,設(shè)計(jì)草案的確定和
106、修改,中期檢查,后期詳細(xì)設(shè)計(jì)等整個(gè)過(guò)程中都給予了我悉心的指導(dǎo)。我的設(shè)計(jì)較為復(fù)雜煩瑣,但是馬凌老師仍然細(xì)心地為我糾正設(shè)計(jì)中的錯(cuò)誤。除了敬佩甄春成老師的專業(yè)水平外,他的治學(xué)嚴(yán)謹(jǐn)和科學(xué)研究的精神也是我永遠(yuǎn)學(xué)習(xí)的榜樣,并將積極影響我今后的學(xué)習(xí)和工作。</p><p> 然后還要感謝大學(xué)三年來(lái)所有的老師,為我們打下扎實(shí)的專業(yè)基礎(chǔ),同時(shí)還要感謝所有的同學(xué)們,正是因?yàn)橛辛四銈兊闹С趾凸膭?lì)。此次畢業(yè)設(shè)計(jì)才會(huì)順利完成。</
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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è)論文-- 基于java的手機(jī)游戲《中國(guó)象棋》的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的手機(jī)游戲服務(wù)端的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 基于java+me的手機(jī)游戲畢業(yè)論文
- 畢業(yè)設(shè)計(jì)(論文)+手機(jī)游戲開發(fā)-java畢業(yè)論文
- 基于java的連連看游戲的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文
- 基于java的聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文
- 畢業(yè)論文-基于java的聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文
- 基于java的銀行系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文
- 畢業(yè)論文-基于java聊天系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文 基于java即時(shí)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java酒店管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_畢業(yè)論文
- 基于java的在線購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 基于java手機(jī)游戲畢業(yè)設(shè)計(jì)
- 基于java的酒店管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于java即時(shí)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_畢業(yè)論文
- 基于java即時(shí)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_畢業(yè)論文
- 畢業(yè)論文-基于java的聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) (2)
- 畢業(yè)論文——基于java的在線購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的在線購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
評(píng)論
0/150
提交評(píng)論