版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)論文</b></p><p> 基于JAVA的手機游戲系統(tǒng)的設(shè)計與實現(xiàn)</p><p><b> 學生姓名: </b></p><p><b> 學 號: </b></p><p> 年級專業(yè):二〇一二級軟件技術(shù)</p>
2、;<p><b> 指導老師: </b></p><p> 二級學院:電子信息學院</p><p><b> 目 錄</b></p><p> 摘要……………………………………………………………………………………………1</p><p><b> 1.緒論3<
3、;/b></p><p><b> 2.手機游戲3</b></p><p> 2.1 手機游戲現(xiàn)狀3</p><p> 2.2 手機游戲分類[1][2]3</p><p> 3.程序開發(fā)語言 [3]4</p><p> 3.1 Java4</p><p
4、> 3.2 Java程序開發(fā)流程4</p><p> 3.3 Java語言的特點[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ā)與實現(xiàn)9</p><p> 5.1 游戲工程及程序的建立9</p><p> 5.2 手機中的坐標系12</p><p> 5.3 游戲的具體實現(xiàn)環(huán)節(jié)13</
6、p><p> 5.4 具體編程的實現(xiàn)13</p><p><b> 6.結(jié)論21</b></p><p><b> 參考文獻22</b></p><p><b> 答 謝23</b></p><p><b> 摘 要 <
7、;/b></p><p> 從小屏按鍵手機到大屏觸控手機,從非智能平臺再到智能平臺,我們可以直觀的發(fā)現(xiàn)手機愈加的貼近人們的生活??梢哉f今天的手機已經(jīng)從單純的通訊工具轉(zhuǎn)變?yōu)橐粋€集通訊、音樂、電影、游戲等多功能于一身的便攜終端。手機的綜合價值越來越高,這使得人們對它的依賴性越來越強。</p><p> 我們可以清楚的看出,現(xiàn)在的生活節(jié)奏正在變快。人們除了工作和學習之外,還要花費不少的
8、時間在往返的路途上,當然也就沒有太多時間呆在電視機前,這一現(xiàn)狀自然而然的激發(fā)了移動終端(手機、掌上游戲機)的飛速崛起。在掌上游戲機系列中,任天堂的NDSL、索尼的PSP已經(jīng)被我們所熟知,成為了很暢銷的游戲機。但是從近幾年來看,我們發(fā)現(xiàn)手機游戲正在潛移默化的侵蝕著掌上游戲機的市場份額,當然這種“侵略”是有依據(jù)的。目前在手機上看到的已經(jīng)不再是當年簡單的貪吃蛇。各種各樣龐大、精美的手機游戲已經(jīng)走進我們的生活。甚至一些電腦上出色的網(wǎng)游魔獸世界也
9、有了手機終端中的復刻版,這些都讓忙碌的我們感受到了不一樣的樂趣。</p><p> Java在移動設(shè)備上的功能實現(xiàn)也越來越具影響力,為豐富人們的生活,提供服務(wù)等方面提供了諸多方便。本文主要介紹一款基于Java語言開發(fā)的手機游戲——貪吃蛇,該設(shè)計主要是應(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軟件作為模擬測試工具的綜合性的開發(fā)設(shè)計。本設(shè)計主要是對手機游戲的開發(fā)過程的各個環(huán)節(jié)做了詳細的介紹,其中包括:手機游戲開發(fā)平臺的搭建與測試、具體設(shè)計及開發(fā)步驟、軟件測試運行與打包生成等,實現(xiàn)了經(jīng)典游戲——貪吃蛇的手機嵌入,以便滿足一些手機用戶的娛樂需求。</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è)計之初,所面向的目標群體的定位都不盡相同,自然的影響游戲設(shè)計的動機也會不同,受到游戲設(shè)計導向和動機的影響,任務(wù)的設(shè)計目的大體可分為:提升游戲娛樂性、使玩家壓抑釋放、獲得心里滿足、同時也可視為一種賺錢的手段。隨著3G技術(shù)的普及和應(yīng)用,基于Java的開發(fā)
17、軟件在手機上的使用非常的廣泛,手機增值服務(wù)的內(nèi)容也是越來越多,對豐富人們的生活內(nèi)容、提供快捷的資訊起著不可忽視的作用。</p><p> 在這個信息社會中,隨著信息網(wǎng)絡(luò)化的不斷進展,手機游戲越來越多的走進人們的工作和生活。其中現(xiàn)在國內(nèi)從圖形化游戲開發(fā)的主流技術(shù)來看,包括:基于嵌入式游戲開發(fā)與設(shè)計、基于Java游戲開發(fā)與設(shè)計、基于Brew游戲開發(fā)與設(shè)計、基于Uni-java游戲的開發(fā)與設(shè)計、手機網(wǎng)絡(luò)游戲的開發(fā)與設(shè)
18、計等。其中隨著3G技術(shù)的飛速發(fā)展,Java手機游戲具有更大的市場優(yōu)勢。</p><p> 本設(shè)計通過查閱相關(guān)書籍,研究手機游戲開發(fā)與設(shè)計的整體設(shè)計流程及設(shè)計思路、學習并使用Java語言進行程序的編寫及運行調(diào)試,完成基于Java語言的手機游戲的開發(fā)與設(shè)計。</p><p><b> 2.手機游戲</b></p><p> 2.1 手機游戲現(xiàn)
19、狀</p><p> 在信息和網(wǎng)絡(luò)高速發(fā)展的今天,手機已經(jīng)成為不可或缺的通訊工具,它的普及速度之快,讓人瞠目,在短短的幾年間,手機及其它無線設(shè)備已經(jīng)走進了普通百姓的工作和生活。眾所周知,手機的規(guī)模越來越壯大、功能也越來越強大,而游戲也已成為手機上不可缺少的功能,目前,手機游戲業(yè)正在以良好的發(fā)展前景飛快發(fā)展著,而且將進入一個高利潤的穩(wěn)定增長期。</p><p> 2.2 手機游戲分類[1
20、][2]</p><p> 隨著信息技術(shù)的飛速發(fā)展,手機游戲的逐漸的多樣化,具體分類歸納如下表⑴所示:</p><p> 表⑴ 手機游戲分類列表</p><p> 短信游戲:玩家和游戲服務(wù)商通過短信中文字的內(nèi)容來交流,達到游戲目的的一種文字游戲。一般玩家通過回復短信的形式來進行游戲,游戲單調(diào)、枯燥無味。</p><p> Wap瀏覽器
21、游戲:通過手機上網(wǎng),使用瀏覽器瀏覽網(wǎng)頁來進行的一種文字游戲,玩家根據(jù)Wap瀏覽器瀏覽到的頁面上的提示,以選擇不同的選項的方法來進行游戲,游戲不夠直觀、單調(diào)無趣。</p><p> 嵌入式游戲:將游戲程序預(yù)先固化到手機中的一種圖形類游戲,其中固化過程在手機出廠前就已經(jīng)完成。因此這種手機游戲不能進行任何修改或刪除操作。</p><p> Java游戲:Java是一種Sun微系統(tǒng)公司所發(fā)展出
22、來的程序語言,它具有很多有利于手機游戲開發(fā)的性質(zhì),例如封裝性、安全性等,便于手機游戲的開發(fā)與設(shè)計,而且目前在手機上應(yīng)用最多的就是JAVA游戲。</p><p> BREW游戲:和java類似,brew也是一種程序語言,BREW (Binary Runtime Environment for Wireless)即無線二進制運行環(huán)境,brew游戲的一主要特點就是可以擴充容量。</p><p>
23、; Uni-java游戲:中國聯(lián)通剛剛為其手機準備的一個新的通用開發(fā)平臺。 Uni-Java可以讓中國聯(lián)通的手機也支持并運行Java程序,同時也支持一些Java游戲。目前已經(jīng)有相當數(shù)量的廠商開始進入Uni-Java手機游戲開發(fā)的領(lǐng)域。</p><p> 2D手機游戲:采用圖形類的手機游戲,其中手機游戲界面為二維圖像。</p><p> 3D手機游戲:延續(xù)2D手機游戲繼續(xù)發(fā)展,手機游戲
24、界面也由二維圖像發(fā)展為三維圖像,給玩家以更好的視覺效果,使游戲更具娛樂性。</p><p> 3.程序開發(fā)語言 [3]</p><p><b> 3.1 Java</b></p><p> Java是由Sun Microsystems公司推出的Java面向?qū)ο蟪绦蛟O(shè)計語言(以下簡稱Java語言)和Java平臺的總稱。由James Gosl
25、ing和同事們共同研發(fā),并在1995年正式推出。Java最初被稱為Oak,是1991年為消費類電子產(chǎn)品的嵌入式芯片而設(shè)計的。1995年更名為Java,并重新設(shè)計用于開發(fā)Internet應(yīng)用程序。用Java實現(xiàn)的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺、動態(tài)Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器均支持Javaapplet。另一方面,Java技術(shù)也不
26、斷更新。Java自面世后就非常流行,發(fā)展迅速,對C++語言形成有力沖擊。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。2010年Oracle公司收購Sun Microsystems。</p><p> Java分為三個體系Java SE(J2SE,Java2 Platform Standard Edition,標準版),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文件,編譯成二進制的*.class文件。Java.e
28、xe是由Sun公司編寫的一個編譯器,它可以把*.Java文件成為*.class文件。其中,如果一個*.Java文件中定義了多個類,它就將被編譯成多個*.class文件。</p><p> 3.2.2 混淆(可選) </p><p> 由于class文件格式透明的緣故,Java文件很容易被反編譯。因此,如果不希望別人掌握你的源代碼的話,就一定要進行混淆(Obfuscate)。所謂混淆,就
29、是利用工具,將方法各類名改成沒有實際意義的特定的字符及代號,增加閱讀的難度。這樣做的目的是為了更充分的保護了自己的知識產(chǎn)權(quán),而且混淆器還可以減少程序的大小?;煜饕话愣际怯傻谌杰浖_發(fā)商提供的,許多都是開源的,可以免費使用。</p><p><b> 3.2.3 預(yù)審核</b></p><p> 在完成編譯后,必須對*.class文件進行預(yù)審核,因為class在
30、傳輸過程中容易損壞或是被篡改,且手機的資源有限,所以在手機上審核一般比較困難。因此為了使我們在手機上進行的審核工作量減少。我們在PC機上進行一部分預(yù)審核工作。</p><p><b> 3.2.4 打包</b></p><p> MIDP可執(zhí)行文件后綴名為jar。后綴為jad的文件是jar文件的描述文件。</p><p> 在仿真器或手機
31、上安裝運行有了jar及jad文件后,就可以把它們放到仿真器或手機上運行了。至于如何把它們放到手機上,根據(jù)手機的功能不同,可有如下幾種方法:使用數(shù)據(jù)線,將PC與手機相連,下載文件;使用紅外線;使用藍牙;使用OTA空中下載(利用短信/WAP)。</p><p> 3.3 Java語言的特點[4]</p><p> 3.3.1 平臺獨立性</p><p> 要使應(yīng)用
32、軟件在網(wǎng)絡(luò)中的任意一臺電腦中都能夠正常運行,就必須使得軟件具有平臺獨立性。軟件的平臺獨立性一直以來都是軟件發(fā)展的需求及開發(fā)者所追求的首要目標,而Java正是一款具有平臺獨立性的編程語言,在源程序級保證了其基本數(shù)據(jù)類型與平臺的無關(guān),使得Java程序可以在世界范圍內(nèi)共享,為程序的編譯和解讀提供了很大的方便性。</p><p> 3.3.2 面向?qū)ο?lt;/p><p> 面向?qū)ο蟮能浖幊碳夹g(shù)
33、是當今軟件開發(fā)行業(yè)中最常用的一種技術(shù),Java正是一款面向?qū)ο蟮木幊涕_發(fā)軟件。它使用一種被稱為“類(class)”的軟件對象,代碼可以重復使用和可以擴展,使得程序開發(fā)變得容易許多。具體來說,面向?qū)ο笮园ㄒ韵氯齻€特點:</p><p> 封裝性:Java提供了類機制,以類對象為基本組成單元,對象中封裝了狀態(tài)變量和方法。Java的封裝性很好的體現(xiàn)了模塊化和信息隱蔽等良好的程序設(shè)計思想。</p>&l
34、t;p> 繼承性:Java編程語言中最重要的數(shù)據(jù)類型是類,它提供了單繼承機制。為了解決多繼承的問題和克服了多繼承的復雜性,Java引進接口(interface)的概念,進而使得Java程序更容易被擴展和使用。</p><p> 多態(tài)性:Java語言通過方法的重載和覆蓋實現(xiàn)多態(tài)性。方法重載是指一個類中可以有多個名字相同,但參數(shù)類型不同的方法。方法覆蓋是指在繼承的過程中,子類可以重新定義父類的某種方法,實現(xiàn)
35、自己需要的功能。</p><p><b> 3.3.3 安全性</b></p><p> 作為Web編程語言的一種,Java具有良好的安全結(jié)構(gòu)和安全策略。代碼在編譯的過程中接受多層的安全檢查。在實現(xiàn)安全性方面,主要采取的措施包括:取消指針操作、內(nèi)存管理自動化、提供多網(wǎng)絡(luò)軟件協(xié)議的用戶接口等。</p><p><b> 3.3.4
36、 多線程</b></p><p> 通過多線程運行機制,Java支持多任務(wù)和并行處理。也就是說,Java可以同時處理多個執(zhí)行線程。Java編程語言的多線程行,極大改善了CPU的吞吐量、響應(yīng)時間等性能指標。</p><p><b> 3.3.5 分布式</b></p><p> Java中包括了一個支持HTTP和FTP協(xié)議傳送和
37、接收信息的庫函數(shù),因此可以通過 URL地址在網(wǎng)絡(luò)上很方便地訪問其它對象,其訪問方式與訪問本地文件系統(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> 程序語言
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簡介</p><p> JDK是Java開發(fā)工具包(Java Development Kit)的縮寫,它是一切Java應(yīng)用程序的基礎(chǔ),是整個Java的核心。J2ME是Java語言的一種,所以在安裝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測試</p><p> 在DOS模擬窗口中輸入“java -version”,得到如下圖⑴所示,即安裝JDK成功。</p><p><b> 圖⑴ 測試JDK</b></p><p><b> 4.3 WTK</b></p><p> 4.3.1 W
42、TK簡介</p><p> WTK 的全稱是Sun J2ME Wireless Toolkit —— Sun的無線開發(fā)工具包。這一工具包的設(shè)計目的是為了幫助開發(fā)人員簡化j2me的開發(fā)過程。使用其中的工具可以開發(fā)與 Java Technology for the Wireless Industry (JTWI, JSR 185) 規(guī)范兼容的設(shè)備上運行的j2me 應(yīng)用程序。該工具箱包含了完整的生成工具、實用程序以及
43、設(shè)備仿真器。到本文寫作時為止可以獲取有四個版本,分別是1.0.4, 2.0, 2.1和2.2。每個版本都包括英語,日語,簡體中文,繁體中文4個語種包。</p><p> 4.3.2 WTK的安裝</p><p> 下載WTK,使用版本為WTK 2.5.2,自定義安裝路徑安裝。</p><p> 4.3.3 WTK測試</p><p>
44、 運行“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簡介</p>&l
45、t;p> Eclipse是一個開發(fā)源代碼的、基于Java的可擴展的開發(fā)平臺。Eclipse最大的一個特點就是它是完全免費的,是一種可擴展的開放源代碼IDE。在Eclipse中幾乎每樣東西都是插件,且各種插件都為我們提供開發(fā)程序的各種功能。同時各個領(lǐng)域的開發(fā)人員通過開發(fā)插件,可以構(gòu)建與Eclipse環(huán)境無縫集成的工具。</p><p> EclipseMe為Eclipse的一個插件,致力于幫助開發(fā)者開發(fā)J
46、2ME應(yīng)用程序。EclipseMe并不為開發(fā)者提供無線設(shè)備模擬器,而將各手機廠商的實用模擬器緊密連接到Eclipse開發(fā)環(huán)境中,為開發(fā)者提供一種無縫統(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,會大大提高開發(fā)者的工作效率。</p><p> 啟動Eclipse,選擇“windows”菜單,再選擇“Preferernces”,在對話框中選擇“J2ME”選項,再選擇“D
48、evice Management”選項,單擊“Import”按鈕,在安裝了WTK 2.5.2的路徑下,選擇WTK 2.5.2文件夾,再單擊“Refresh”按鈕,這是“Devices”列表中就會列出所有模擬設(shè)備,如下圖⑶所示,即WTK與EclipseMe的綁定成功。</p><p><b> 圖⑶</b></p><p> 5.游戲的開發(fā)與實現(xiàn)</p>
49、<p> 5.1 游戲工程及程序的建立</p><p> 5.1.1 建立新的工程文件</p><p> 運行Eclipse軟件,新建工程 “J2ME Midlet Suite”,如下圖⑷所示,其中,設(shè)置項目的運行環(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> 方法一:鼠標右擊工程文件夾,依次選擇菜單項“New” →“Class”,將類命名為“SnakeCanvas”,單擊“Finish”按鈕,完成類的加載。</p><p> 方法二:主程序編寫完成時,在主程序中調(diào)用的類名“SnakeCanvas”下有紅色下劃線,說明該類沒有被添加到工程中。用鼠標單擊類名“SnakeCanvas”,在出現(xiàn)的下拉菜單中點擊“Create class ‘Sn
52、akeCanvas’”,如下圖⑺所示,則完成類“SnakeCanvas”的加載。</p><p><b> 圖⑺</b></p><p> 5.2 手機中的坐標系</p><p> 手機中的xy坐標系與普通的xy坐標系有所不同,手機中,以屏幕的左上角為原點,水平方向為x軸,垂直方向為y軸,如下圖⑻所示:</p><p&
53、gt;<b> 圖⑻</b></p><p> 5.3 游戲的具體實現(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> ●蛇身的移動;</b></p><p> ●手機按鍵功能實現(xiàn);</p><p> ●達到游戲結(jié)束條件時,游戲結(jié)束;</p><p><b> ●游戲的運行與調(diào)試</b>
55、;</p><p><b> ●游戲的模擬實現(xiàn);</b></p><p><b> ●游戲的打包生成;</b></p><p> ●.jad及.jar文件的生成</p><p> 5.4 具體編程的實現(xiàn)</p><p> 5.4.1 主程序的編寫及功能實現(xiàn)</
56、p><p> //系統(tǒng)導入相應(yīng)的包,其中有自動加載的,也有手動導入的部分。具體導入包的情況,要依據(jù)程序中所用到的類的種類。</p><p> import javax.microedition.lcdui.Display;</p><p> import javax.microedition.midlet.MIDlet;</p><p>
57、 // myMIDlet類的具體實現(xiàn)</p><p> public class myMIDlet extends MIDlet {</p><p> //實現(xiàn)兩個Canvas類之間的切換</p><p> SnakeCanvas displayable = new SnakeCanvas();</p><p> public myM
58、IDlet() {</p><p> // 獲得當前MIDlet的Display對象,并設(shè)置SnakeCanvas對象為當前的顯示對象</p><p> Display.getDisplay(this).setCurrent(displayable);</p><p><b> }</b></p><p> /
59、/系統(tǒng)自動生成代碼,本程序中默認其初始狀態(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é)點坐標:其中第二維下標為0的代表x坐標,第二維下標是1的代表y坐標。</p><p> int[][] snake = new int[200][2];</p><p> 定義已經(jīng)使用的節(jié)點數(shù)量。</p><p> int s
62、nakeNum;</p><p><b> 貪吃蛇運動方向。</b></p><p> 0代表向上,1代表向下,2代表向左,3代表向右 (其中方向的控制變量依據(jù)手機開發(fā)平臺的不同而不同,例如:Nokia手機開發(fā)平臺中,-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> 是否處于運行狀態(tài),true代表運行。</p><p> boolean isRun = true;</p><p> 定義食物的X坐標及Y坐標。</
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é)點數(shù)量。</b></p><p> snakeNum = 7;</p><p><b> 初始化節(jié)點數(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> 初始化移動方向。</b>
71、</p><p> point = KEY_DOWN;</p><p><b> 初始化食物坐標。 </b></p><p> foodX = 100;</p><p> foodY = 100;</p><p> 5.4.4 設(shè)置屏幕背景顏色為粉紅色</p><p
72、><b> 設(shè)置屏幕</b></p><p> Canvas是個畫布,graphics是只畫筆,主要用于實現(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> 食物的坐標必須位于屏幕內(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 蛇身的移動</p><p> private void move(int
81、 point) {};</p><p><b> 蛇身移動</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> 第一個單元格移動</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 手機按鍵功能實現(xiàn)</p><p> 其中用手機鍵盤中的上、下、左、右鍵來控制貪吃蛇的移動,用中間鍵來控制實現(xiàn)暫停功能。程序最后增加了r
86、epaint(),即刷屏功能,用來更新游戲數(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 游戲的運行與調(diào)試
94、</p><p> 游戲程序編輯完成并保存,鼠標右鍵點擊主程序,依次選擇菜單項“Run As”→“Run Configurations”,在彈出的運行對話框中,雙擊“Wireless Toolkit Emulator”,再選擇“New_configuration”,并分別選擇Project“MyGame”與Midlet“myMIDlet”,如下圖⑼所示:</p><p><b>
95、; 圖⑼</b></p><p> 其中Emulation的配置如下圖⑽所示:</p><p><b> 圖⑽</b></p><p> 單擊“Run”按鈕,運行模擬器。</p><p> 5.4.11.游戲的模擬實現(xiàn)</p><p> 運行模擬器,實現(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> 鼠標右鍵點擊Project“MyGame”,依次選擇菜單項“J2ME”→“Create Package”,打包完成。</p><p> 5.4.13..jad及.jar文件的生成</p><p> 打包完成后,在Eclipse軟件的默認工作路徑的“workspace\MyGame \deployed”子目錄中找到“My
98、Game.jar”、“ MyGame.jad”兩個文件。在Eclipse平臺的Project“MyGame”列表中也相應(yīng)的增加了這兩個文件,如下圖⒀所示:</p><p><b> 圖⒀</b></p><p> 打包完成后,只需將“MyGame.jar”、“ MyGame.jad”這兩個文件拷貝到手機里,這款手機游戲就可以在手機里運行了。</p>
99、<p><b> 6.結(jié)論</b></p><p> 本次畢業(yè)設(shè)計通過應(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軟件作為模擬測試工具的綜合性設(shè)計,實現(xiàn)了手機游戲的開發(fā)與設(shè)計。</p><p> 開發(fā)過程較為繁瑣復
100、雜,其中包括的主要環(huán)節(jié)如下:</p><p> 各個軟件的安裝與測試:本設(shè)計中所用的軟件有四款,分別為:JDK 1.8.0、Sun J2ME Wireless Tool Kit 2.5.2、Eclipse 4.4與EclipseMe1.7.9。設(shè)計從各個軟件的安裝、配置、軟件之間的綁定開始。正確的安裝配置軟件是設(shè)計得以實現(xiàn)的必備條件。</p><p> Java程序的構(gòu)造與編寫:本設(shè)計
101、中程序的編寫也是很重要的一部分,是手機游戲開發(fā)的前提條件。通過本次設(shè)計,掌握了Java語言基礎(chǔ)知識,理解了面向?qū)ο蟮木幊趟枷?,能夠運用Java編寫命令行程序。</p><p> 手機游戲的運行與打包生成:在程序代碼編寫完成后,進行手機游戲的運行與調(diào)試環(huán)節(jié),該環(huán)節(jié)通過多次的重復測試,來修改程序中存在的問題,使手機游戲能夠正常運行,并在完成模擬測試后,打包生成.jad和.jar文件。</p><
102、p> 本設(shè)計將理論與實踐緊密的結(jié)合起來,在學習理論知識的同時,掌握了Java程序的設(shè)計思路及手機游戲的開發(fā)方法,可謂受益匪淺。</p><p><b> 參考文獻</b></p><p> [1] 詹建飛《Java Me核心技術(shù)與最佳實踐》,北京:電子工業(yè)出版社,2013年;</p><p> [2] 張鵬《3D手機游戲開發(fā)實例教
103、程》,北京:電子工業(yè)出版社,2013年;</p><p> [3] 石民勇、稅彬彬《手機游戲設(shè)計與制作教程》,北京:中國傳媒大學出版社,2014年;</p><p> [4] 楊邵芳、王穎、林錦全《Java程序設(shè)計基礎(chǔ)》,北京:科學出版社,2012年;</p><p> [5] 張鵬《3D手機游戲開發(fā)實例教程》,北京:電子工業(yè)出版社,2009年;</p&
104、gt;<p> [6] 李興華《Java開發(fā)實戰(zhàn)經(jīng)典》,北京:清華大學出版社,2014年;</p><p> [7] 徐明華、邱加永、紀希禹《Java基礎(chǔ)與案例開發(fā)詳解》,北京:清華大學出版社,2014年;</p><p> [8] 王國輝《Java程序開發(fā)參考手冊》,北京:機械工業(yè)出版社,2013年。</p><p><b> 答謝
105、</b></p><p> 經(jīng)過半年的忙碌,本次畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一名大學生,由于缺乏開發(fā)設(shè)計經(jīng)驗,在做畢業(yè)設(shè)計的過程中難免有許多考慮不周全的地方,如果沒有導師的督促指導,以及同學們的支持,想要完成這個設(shè)計是難以想象的。</p><p> 在這里首先要感謝我的導師甄春成老師。甄春成老師平日里工作繁多,但在我做畢業(yè)設(shè)計的每個階段,從外出實習到查閱資料,設(shè)計草案的確定和
106、修改,中期檢查,后期詳細設(shè)計等整個過程中都給予了我悉心的指導。我的設(shè)計較為復雜煩瑣,但是馬凌老師仍然細心地為我糾正設(shè)計中的錯誤。除了敬佩甄春成老師的專業(yè)水平外,他的治學嚴謹和科學研究的精神也是我永遠學習的榜樣,并將積極影響我今后的學習和工作。</p><p> 然后還要感謝大學三年來所有的老師,為我們打下扎實的專業(yè)基礎(chǔ),同時還要感謝所有的同學們,正是因為有了你們的支持和鼓勵。此次畢業(yè)設(shè)計才會順利完成。</
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-- 基于java的手機游戲《中國象棋》的設(shè)計與實現(xiàn)
- 基于java的手機游戲服務(wù)端的設(shè)計與實現(xiàn)【畢業(yè)論文】
- 基于java+me的手機游戲畢業(yè)論文
- 畢業(yè)設(shè)計(論文)+手機游戲開發(fā)-java畢業(yè)論文
- 基于java的連連看游戲的設(shè)計與實現(xiàn)-畢業(yè)論文
- 基于java的聊天系統(tǒng)的設(shè)計與實現(xiàn)---畢業(yè)論文
- 畢業(yè)論文-基于java的聊天系統(tǒng)的設(shè)計與實現(xiàn)
- 基于java的聊天系統(tǒng)的設(shè)計與實現(xiàn)---畢業(yè)論文
- 基于java的銀行系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)論文
- 畢業(yè)論文-基于java聊天系統(tǒng)設(shè)計與實現(xiàn)
- 畢業(yè)論文 基于java即時聊天系統(tǒng)的設(shè)計與實現(xiàn)
- 基于java酒店管理系統(tǒng)的設(shè)計與實現(xiàn)_畢業(yè)論文
- 基于java的在線購物系統(tǒng)的設(shè)計與實現(xiàn)——畢業(yè)論文
- 基于java手機游戲畢業(yè)設(shè)計
- 基于java的酒店管理系統(tǒng)設(shè)計與實現(xiàn)畢業(yè)論文
- 基于java即時聊天系統(tǒng)的設(shè)計與實現(xiàn)_畢業(yè)論文
- 基于java即時聊天系統(tǒng)的設(shè)計與實現(xiàn)_畢業(yè)論文
- 畢業(yè)論文-基于java的聊天系統(tǒng)的設(shè)計與實現(xiàn) (2)
- 畢業(yè)論文——基于java的在線購物系統(tǒng)的設(shè)計與實現(xiàn)
- 基于java的在線購物系統(tǒng)的設(shè)計與實現(xiàn)——畢業(yè)論文
評論
0/150
提交評論