版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢畢業(yè)業(yè)設(shè)設(shè)計(jì)計(jì)說說明明書書基于基于J2MEJ2ME的手機(jī)五子棋游戲的的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)與實(shí)現(xiàn)專業(yè)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名學(xué)生姓名楊婷婷班級(jí)班級(jí)B 計(jì)算機(jī) 064學(xué)號(hào)學(xué)號(hào)指導(dǎo)教師指導(dǎo)教師王 榕完成日期完成日期2010 年 5 月 25 日鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)基于基于J2MEJ2ME的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)摘 要:J2ME(Java 2 Micro Edition)是近年來隨著各種不同設(shè)備,尤其是移動(dòng)通信設(shè)備的飛速發(fā)展而誕生的一項(xiàng)開發(fā)技術(shù)。它因其“write once,run anywhere”的 Java 特性而提高了開發(fā)
2、的效率。隨著手機(jī)性能的不斷提高,手機(jī)休閑娛樂應(yīng)用將成為 PC 休閑娛樂應(yīng)用之后又一重要業(yè)務(wù)增長(zhǎng)點(diǎn)。棋類游戲規(guī)則單一,比較適合在手機(jī)等便攜終端推廣。 由于具有跨平臺(tái)、易于移植、占用空間小的優(yōu)勢(shì),J2ME 成為移動(dòng)應(yīng)用開發(fā)平臺(tái)的主流,并提供了很多用以支持移動(dòng)應(yīng)用軟件的開發(fā)的 API?,F(xiàn)將該技術(shù)用于這次的手機(jī)游戲開發(fā),可以實(shí)現(xiàn)游戲的快速開發(fā),不但便于查看游戲運(yùn)行過程中內(nèi)存的占用量和程序的每一部分代碼消耗了多少處理器時(shí)間,而且可以不斷地優(yōu)化代碼,使代碼具有高度的復(fù)用性、可擴(kuò)展性、可維護(hù)性。游戲的開發(fā)以 J2ME 為平臺(tái),利用 Java 技術(shù),結(jié)合 J2ME 的 MIDP 技術(shù),并對(duì)于程序設(shè)計(jì)思想,重要
3、類、方法等展開討論。在對(duì)弈部分,分析設(shè)計(jì)走棋算法,選擇合適的方式組織成代碼,實(shí)現(xiàn)基本的人工智能。過程中使用了 J2ME 中的 CLDC/MIDP軟件體系,主要運(yùn)用了 MID Profile 的特定類的支持,來完成游戲的開發(fā)。關(guān)鍵詞:J2ME;CLDC;MIDP鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)Design and Implementation of Gobang Cell-phone Game Based on J2MEAbstract: J2ME is a kind of fast developing technology implemented on various device
4、s especially mobile communication equipments. It improves the efficiency of the development process because of its write once, run anywhere nature. The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly. The ente
5、rtainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market. As the rules of a single chess game, it is more suitable for mobile phones and other portable terminal extension. J2ME has been the preferred platform for development becau
6、se of its platform independent and compatibility, and provides a lot of APIs to support the development of mobile application software. The technology for mobile game development, can achieve the rapid development of the game. It is not only easy to observe the memory consumption and processor consu
7、med time during the operation of the game, but also can optimize the code, so that the code has a high degree of reusability, scalability, maintainability. The game has designed by J2ME, the Java technology and the MIDP technology. I studied the procedure thought, the important class and the method.
8、 In the playing chess part, I have analyzed the algorithm, choosed the appropriate way to organize the code and realized the basic artificial intelligence. On the other hand, I learned software system of CLDC/MIDP and the specific class of the MID Profile to complete the game development. Key words:
9、 J2ME;CLDC;MIDP基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)目目 錄錄1 概述 .11.1 課題研究背景 .11.2 課題研究意義 .22 開發(fā)技術(shù)背景 .22.1 JAVA 語言概述.22.2 J2ME 簡(jiǎn)介.32.3 J2ME 的體系結(jié)構(gòu).42.4 移動(dòng)信息設(shè)備簡(jiǎn)表 .72.5 開發(fā)平臺(tái) .83 系統(tǒng)分析及總體設(shè)計(jì) .93.1 可行性分析 .93.2 需求分析 .93.3 系統(tǒng)概要設(shè)計(jì) .104 系統(tǒng)詳細(xì)設(shè)計(jì) .134.1 界面設(shè)計(jì) .134.2 走棋算法 .274.3 勝負(fù)判斷 .295 系統(tǒng)測(cè)試 .305.1 測(cè)試方案 .305.2 測(cè)試結(jié)果 .306 結(jié) 束 語 .35
10、參考文獻(xiàn) .36致 謝 .37附 錄 .38附錄 1 程序清單.38附錄 1.1 StartGame.java 程序清單 .38附錄 1.2 Chesses.java 程序清單 .39附錄 1.3 Chessboard.java 程序清單 .44附錄 1.4 其它程序清單.49鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)1基于基于J2MEJ2ME的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)1 概述 1.1 課題研究背景手機(jī)游戲的實(shí)現(xiàn)方式主要包括嵌入式游戲、瀏覽器游戲、短消息服務(wù)游戲、J2ME 和其它的解釋語言。Java 2 Micro Edition 是一種針對(duì)移動(dòng)電話和 PDA 這
11、樣的小型設(shè)備的 Java 語言。J2ME 與臺(tái)式機(jī)中的 Java 相比還是有一定的限制,但是它已經(jīng)極大的提高了移動(dòng)電話支持游戲的能力。并且具備一定的優(yōu)勢(shì):龐大的潛在用戶群、便攜性、開發(fā)門檻較低。手機(jī)是現(xiàn)代生活方式的產(chǎn)物,如同因特網(wǎng)的普及導(dǎo)致網(wǎng)絡(luò)游戲的高速發(fā)展一樣,手機(jī)的普及,對(duì)滿足不同功能的手機(jī)軟件的需求也就越來越迫切,這就需要比較好的手機(jī)軟件開發(fā)平臺(tái),此時(shí)具有平臺(tái)無關(guān)性優(yōu)點(diǎn)的 J2ME 開發(fā)平臺(tái)也就應(yīng)運(yùn)而生。J2ME 是 Sun 公司為消費(fèi)電子和嵌入式設(shè)備軟件的需要而開發(fā)的應(yīng)用程序接口和技術(shù)規(guī)范,J2ME 提供了由多家大型的移動(dòng)設(shè)備廠商一起設(shè)計(jì)和提出的工業(yè)標(biāo)準(zhǔn)簡(jiǎn)表(簡(jiǎn)稱 MIDP)的開發(fā)接口
12、,由于這個(gè) MIDP 簡(jiǎn)表不是某個(gè)特定的商家所擁有的,所以具有一定的通用性,因此由 J2ME 開發(fā)的軟件對(duì)多家大型移動(dòng)設(shè)備廠商生產(chǎn)的支持MIDP 簡(jiǎn)表的手機(jī)都適用,比如 Nokia、Motorola 和三星等多家手機(jī)廠商推出的多款支持 J2ME 的手機(jī)。與傳統(tǒng)的主流的 PC 游戲相比,手機(jī)游戲的價(jià)值在于打發(fā)一些無聊的時(shí)間,作為一個(gè)移動(dòng)的娛樂終端,手機(jī)游戲施展身手的機(jī)會(huì)永遠(yuǎn)可能是在地鐵站、公交車或者是洗手間這些地方,也許在龐大的游戲行業(yè)里,手機(jī)游戲?qū)⒂肋h(yuǎn)扮演著一個(gè)邊緣者的角色,因?yàn)檎l也不能指望一個(gè)人在家的時(shí)候用手機(jī)玩游戲或者看電影。但是手機(jī)游戲的市場(chǎng)是巨大的,即便是只有十分之一的用戶來購(gòu)買游戲,
13、那也將是不可忽視的商業(yè)機(jī)遇。隨著移動(dòng)開發(fā)技術(shù)的不斷升級(jí)和終端設(shè)備成本的下降,近年來,手機(jī)在普通消費(fèi)人群中得到了極大的普及。憑借其便于攜帶、溝通迅捷、功能多樣、私密性強(qiáng)等獨(dú)有優(yōu)勢(shì),手機(jī)已經(jīng)成為普通民眾不可替代的隨身工具。其益智、趣味和休閑的特點(diǎn)迎合了消費(fèi)者的娛樂需要,手機(jī)游戲的開發(fā)推廣已經(jīng)成為手機(jī)生產(chǎn)商和運(yùn)營(yíng)商重要的業(yè)務(wù)增長(zhǎng)點(diǎn),游戲軟件產(chǎn)業(yè)價(jià)值不斷提升。手機(jī)游戲是手機(jī)的一種高附加值操作軟件,游戲編程是手機(jī)軟件編程的重要組成,同時(shí)也持續(xù)推動(dòng)手機(jī)軟件技術(shù)升級(jí)進(jìn)步。手機(jī)游戲按手機(jī)平臺(tái)分類,主要有 J2ME、Brew、UniJa 等。其中 J2ME 手機(jī)開發(fā)平臺(tái)使用最為廣泛。作為 SUN 公司針對(duì)微型嵌
14、入式消費(fèi)電子產(chǎn)品開發(fā)的編程系統(tǒng),J2ME 技術(shù)是當(dāng)前手機(jī)軟件開發(fā)的主流平臺(tái),各大手機(jī)生產(chǎn)廠商目前的主流產(chǎn)品絕大都使用 J2ME 技術(shù)。基于 J2ME 技術(shù)開發(fā)手機(jī)軟件可以實(shí)現(xiàn)手機(jī)功能的多樣化與專業(yè)化,極大的滿足了人們對(duì)手機(jī)要求更高的需求。基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)21.2 課題研究意義本設(shè)計(jì)基于 J2ME 技術(shù),開發(fā)一款五子棋游戲軟件,可以供人們閑暇時(shí)間隨時(shí)隨地娛樂,提高棋藝。同時(shí)五子棋游戲程序的開發(fā)實(shí)現(xiàn)這個(gè)課題,正好提供給我這樣一個(gè)研究的機(jī)會(huì),通過對(duì)人工智能中博弈方面的研究,實(shí)現(xiàn)簡(jiǎn)單的人機(jī)對(duì)弈設(shè)計(jì)。 通過對(duì)該課題的研究與實(shí)踐,首先,進(jìn)一步熟悉面向?qū)ο笳Z言,加深對(duì) J2ME層
15、次結(jié)構(gòu)的了解。通過 NetBeans 集成開發(fā)環(huán)境創(chuàng)建軟件,最終形成一個(gè)具備基本功能的手機(jī)五子棋游戲,可應(yīng)用于便攜式設(shè)備,適合于棋類愛好者。其次,了解手機(jī)游戲開發(fā)的特點(diǎn)和現(xiàn)狀。并且對(duì)人工智能中比較容易實(shí)現(xiàn)的人機(jī)博弈進(jìn)行學(xué)習(xí),更深刻地理解人工智能這門邊緣學(xué)科的實(shí)用性。2 開發(fā)技術(shù)背景2.1 JAVA 語言概述Java 的出現(xiàn)是源于對(duì)獨(dú)立于平臺(tái)語言的需要,希望這種編程語言能編寫出嵌入各種家用電器等設(shè)備的芯片上、且易于維護(hù)的程序。人們發(fā)現(xiàn)當(dāng)時(shí)的編程語言都有一個(gè)共同的缺點(diǎn),就是針對(duì) CPU 芯片進(jìn)行編譯。這樣,一旦電器設(shè)備更換了芯片就不能保證程序正確運(yùn)行。九零年 Sun 公司成立了開發(fā)小組,開始致力于
16、開發(fā)一種可移植的、跨平臺(tái)的編程語言,該語言能生成正確運(yùn)行于各種操作系統(tǒng)、各種芯片上的代碼。Java 的出現(xiàn)標(biāo)志著真正的分布式系統(tǒng)的到來。Java 是一種跨平臺(tái)的、面向?qū)ο蟮摹⒎植际降?、解釋的、安全的、結(jié)構(gòu)的、可移植的、性能很優(yōu)異的多線程的動(dòng)態(tài)語言。Java 的特點(diǎn): 平臺(tái)無關(guān)性:平臺(tái)無關(guān)性是指 Java 能運(yùn)行于不同的平臺(tái)。Java 引進(jìn)虛擬機(jī)原理,并運(yùn)行于虛擬機(jī),實(shí)現(xiàn)不同平臺(tái)的 Java 接口之間。使用 Java 編寫的程序能在世界范圍內(nèi)共享。Java 的數(shù)據(jù)類型與機(jī)器無關(guān),Java 虛擬機(jī)(Java Virtual Machine)是建立在硬件和操作系統(tǒng)之上,實(shí)現(xiàn) Java 二進(jìn)制代碼的解
17、釋執(zhí)行功能,提供不同平臺(tái)的接口的。 安全性:Java 的編程類似 C+,學(xué)習(xí)過 C+的讀者將很快掌握 Java 的精髓。Java 舍棄了 C+的指針對(duì)存儲(chǔ)器地址的直接操作,程序運(yùn)行時(shí),內(nèi)存由操作系統(tǒng)分配,這樣可以避免病毒通過指針侵入系統(tǒng)。Java 對(duì)程序提供了安全管理器,防止程序的非法訪問。面向?qū)ο螅篔ava 吸取了 C+面向?qū)ο蟮母拍睿瑢?shù)據(jù)封裝于類中,利用類的優(yōu)點(diǎn),實(shí)現(xiàn)了程序的簡(jiǎn)潔性和便于維護(hù)性。類的封裝性、繼承性等有關(guān)對(duì)象的特性,使程序代碼只需一次編譯,然后通過上述特性反復(fù)利用。程序員只需把主要精力用在類和接口的設(shè)計(jì)和應(yīng)用上。Java 提供了眾多的一般對(duì)象的類,通過繼承即可使用父類的方法
18、。在 Java 中,類的繼承關(guān)系是單一的非多重的,一個(gè)子類只有一個(gè)父類,子類的父類又有一個(gè)父類。Java 提供的 Object 類及其子類的繼承關(guān)系如同一鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)3棵倒立的樹形,根類為 Object 類,Object 類功能強(qiáng)大,經(jīng)常會(huì)使用到它及其它派生的子類。分布式:Java 建立在擴(kuò)展 TCP/IP 網(wǎng)絡(luò)平臺(tái)上。庫(kù)函數(shù)提供了用 HTTP 和 FTP 協(xié)議傳送和接受信息的方法。這使得程序員使用網(wǎng)絡(luò)上的文件和使用本機(jī)文件一樣容易。 健壯性:Java 致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤。類型檢查幫助檢查出許多開發(fā)早期出現(xiàn)的錯(cuò)誤。Java 自己操縱內(nèi)存減少了內(nèi)存出
19、錯(cuò)的可能性。Java 還實(shí)現(xiàn)了真數(shù)組,避免了覆蓋數(shù)據(jù)的可能,這些功能特征大大提高了開發(fā) Java 應(yīng)用程序的周期。并且 Java 還提供了 Null 指針檢測(cè)、數(shù)組邊界檢測(cè)、異常出口、Byte code 校驗(yàn)等功能。2.2 J2ME 簡(jiǎn)介J2ME是SUN公司針對(duì)嵌入式、消費(fèi)類電子產(chǎn)品推出的開發(fā)平臺(tái),與J2SE和J2EE共同組成Java技術(shù)的三個(gè)重要的分支。J2ME實(shí)際上是一系列規(guī)范的集合,由JCP組織制定相關(guān)的Java Specification Request(JSR)并發(fā)布,各個(gè)廠商會(huì)按照規(guī)范在自己的產(chǎn)品上進(jìn)行實(shí)現(xiàn),但是必須要通過TCK測(cè)試,這樣確保兼容性。J2ME是JAVA的三大分支之一
20、,專門用于開發(fā)基于消費(fèi)性電子產(chǎn)品的應(yīng)用。J2ME支持個(gè)人手持移動(dòng)設(shè)備,如手機(jī)、PDA等。手機(jī)用戶可以通過支持JAVA功能的終端,使用多種全新圖形化、動(dòng)態(tài)化和個(gè)性化的移動(dòng)增值服務(wù)。J2ME提高了移動(dòng)電話支持游戲的能力,比SMS或WAP更容易控制和交互的界面,并且可以通過無線網(wǎng)絡(luò)連接到遠(yuǎn)程的服務(wù)器。隨著JAVA手機(jī)的普及,J2ME成為目前最流行的移動(dòng)游戲開發(fā)環(huán)境。目前手機(jī)訪問Internet只能訪問WML網(wǎng)頁(yè),而不是主流的HTML網(wǎng)頁(yè),也不能顯示復(fù)雜的圖形格式,能提供的功能很有限,并且,因?yàn)楝F(xiàn)有的解決方案不夠智能化,又不能訪問本地存儲(chǔ)區(qū),如果進(jìn)行在線交易會(huì)增加服務(wù)器負(fù)荷,使服務(wù)器的反應(yīng)速度變慢,使
21、無線Internet的應(yīng)用受到了很大限制。J2ME的出現(xiàn)則使上述問題迎刃而解。因?yàn)镴2ME是基于Java語言的,所以它天生就具有以下優(yōu)點(diǎn):A.動(dòng)態(tài)內(nèi)容傳輸新的應(yīng)用、服務(wù)和內(nèi)容可以通過不同類型的網(wǎng)絡(luò)動(dòng)態(tài)下載。B.安全類文件校驗(yàn)、明確定義的應(yīng)用程序編程接口和安全組件確保了第三方應(yīng)用程序的行為是可靠的,不會(huì)對(duì)設(shè)備或者網(wǎng)絡(luò)造成損害。C.交叉平臺(tái)的兼容性標(biāo)準(zhǔn)化語言組件和庫(kù)意味著由于支持配置和描述所帶來的約束使應(yīng)用和內(nèi)容可以在不同設(shè)備之間靈活地傳輸。D.離線獲取不用激活網(wǎng)絡(luò)連接,應(yīng)用就可以被使用。這種特點(diǎn)降低了傳輸費(fèi)用,減輕了可能的網(wǎng)絡(luò)故障帶來的影響。E.一種功能強(qiáng)大的現(xiàn)代面向?qū)ο蟮木幊陶Z言基于 J2ME
22、 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)4Java 相對(duì)于當(dāng)前用于無線軟件開發(fā)的編程語言和工具來說具有更加完善的抽象機(jī)制和更高級(jí)的程序構(gòu)造,這使得應(yīng)用開發(fā)更加有效。這些特性使第三方軟件開發(fā)商可以很容易地介入應(yīng)用程序的開發(fā),并且可以很方便地將應(yīng)用程序安裝到手機(jī)上,開發(fā)周期也大大縮短,而且還能支持應(yīng)用程序的動(dòng)態(tài)下載和升級(jí)。J2ME 應(yīng)用程序除了能夠更好地完善手機(jī)上已有的應(yīng)用外,還進(jìn)一步增加了字典、 圖書、游戲、定時(shí)提醒等新的應(yīng)用,并能訪問電子郵件、即時(shí)消息、股票和電子地圖等信息。J2ME 程序設(shè)計(jì)的幾個(gè)原則:第一,使用面向?qū)ο缶幊?。雖然使用面向過程編程可以減小文件的尺寸,但是為了以后維護(hù)的方便和利于擴(kuò)展,還
23、是要使用面向?qū)ο缶幊?。第二,使?MVC 模式。將模型、界面和控制分離。第三,自動(dòng)存儲(chǔ)用戶設(shè)定使用 RMS 來存儲(chǔ)用戶的信息,這樣不僅可以減少用戶的輸入,而且對(duì)用戶友好。很多程序做了自動(dòng)登陸等。第四,一些系統(tǒng)設(shè)置允許用戶關(guān)閉。如背景音樂、背景燈顯示等。第五,將低級(jí)用戶界面的繪制動(dòng)作放在一個(gè)獨(dú)立的線程里面去。第六,在需要大量時(shí)間才能完成的工作時(shí),給用戶一個(gè)等待界面。2.3 J2ME 的體系結(jié)構(gòu)Java 2 技術(shù)是一系列產(chǎn)品的集合,Java 2 技術(shù)體系結(jié)構(gòu)如圖 2-1 所示。圖 2-1 Java 2 技術(shù)體系結(jié)構(gòu) 其中,J2ME為運(yùn)行在嵌入式消費(fèi)類電子產(chǎn)品的設(shè)備,如移動(dòng)電話、PDA、游戲終端之上
24、的應(yīng)用程序提供了一個(gè)健壯的、靈活的環(huán)境。與J2SE、J2EE和JavaCard一樣,J2ME同樣包含了一個(gè)小型的虛擬機(jī)和一系列的Java API。除此之外,J2ME還提供了靈活的圖形用戶界面、健壯的安全模型、廣泛的聯(lián)網(wǎng)協(xié)議支持。鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)5J2ME 是一種通過許多部件和規(guī)范的技術(shù),這眾多的部件和規(guī)范幫助 J2ME 來滿足這眾多的消費(fèi)產(chǎn)品的不同的需要。和所有的爪哇程式語言技術(shù)一樣,在它的核心屬于一種虛擬機(jī)。就像使用所有 Java 技術(shù)一樣,J2ME 的核心也在一種虛擬機(jī)中。最初,用于 J2ME 應(yīng)用程序虛擬機(jī)的被稱作 Kilobyte virtual machin
25、e 或簡(jiǎn)稱KVM。就像它名稱的含義,KVM 比較小,通常只有 128K 或更少。這比起通常了解和使用的 Java 2 標(biāo)準(zhǔn)版 Java 虛擬機(jī)(JVM)的 32MB 來說就小得多了。為了使 J2ME 程序廣泛適用于各類嵌入式平臺(tái),J2ME 采用了模塊化的結(jié)構(gòu),底層是宿主機(jī)的操作系統(tǒng),內(nèi)部則分為三層:Java Virtual Machine(虛擬機(jī)層);Configuration(配置層);Profile (簡(jiǎn)表層)。J2ME 中有兩類虛擬機(jī):CVM(C 虛擬機(jī))與 KVM(K 虛擬機(jī)),CVM 的功能比 KVM 更為強(qiáng)大。其體系結(jié)構(gòu)如圖 2-2 所示。圖 2-2 體系結(jié)構(gòu)框圖Java 虛擬機(jī)(
26、JVM)層:這一層是針對(duì)設(shè)備本地操作系統(tǒng)定制的 Java 虛擬機(jī)的實(shí)現(xiàn),支持特定的 J2ME 配置,就像使用所有 Java 技術(shù)一樣,J2ME 的核心也在一種虛擬機(jī)中。配置(Configuration)層:面對(duì)的是大量各種不同的小型嵌入式設(shè)備,它們?cè)谕庥^和功能上均各不相同。J2ME 將這些設(shè)備進(jìn)行分類,將一些共性提取出來形成適合于某個(gè)范疇中設(shè)備可用的規(guī)范,稱為“配置” 。讀者也可以將配置理解成為對(duì)硬件的描述,所以通過定義配置的方法就能夠清楚地描述硬件功能。 對(duì)大量軟硬件特性不同的嵌入式設(shè)備,根據(jù)其外觀和性能特點(diǎn)進(jìn)行分類,提取其中共性形成的一套規(guī)范稱之為配置。配置在 J2ME 的體系結(jié)構(gòu)中起著承
27、上啟下的作用,定義了針對(duì)存儲(chǔ)空間、電源配置、網(wǎng)絡(luò)連接等硬件功能和特性包括:規(guī)定了所支持的 Java 編程語言特性;規(guī)定了所支持的 Java 虛擬機(jī)特性;規(guī)定了所支持的基本 Java 類庫(kù)及其 API 函數(shù)。 到目前為止,通過 Java 規(guī)范定義的只有兩種配置:連接設(shè)備配置(CDC)和連接受限設(shè)備配置(CLDC) 。CLDC 和 CDC 的大部分功能都來源于 J2SE。因?yàn)?CDC 與CLDC 針對(duì)設(shè)備的 CPU 處理能力和內(nèi)存大小不同,所以它們使用的虛擬機(jī)和核心類庫(kù)也不相同,CDC 的核心類庫(kù)比 CLDC 的要大,提供的功能也更強(qiáng)。CLDC、CDC 和 J2SE之間的關(guān)系如圖 2-3 所示。O
28、ptional PackagesProfilesConfigurationHost Operating SysteJava Virtual Machines基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)6圖 2-3 CLDC、CDC 和 J2SE 的關(guān)系圖 連接設(shè)備配置(Connected Device Configuration,CDC):為處理能力較強(qiáng)、內(nèi)存空間更大、聯(lián)網(wǎng)能力更出色且電源穩(wěn)定的設(shè)備設(shè)計(jì)。CDC 的目標(biāo)設(shè)備包括主要包括電視機(jī)頂盒、車載娛樂系統(tǒng)、高端 PDA 等,它們通常具備 32 位或 64 位的CPU,2MB 以上可以用于 Java 平臺(tái)實(shí)現(xiàn)和運(yùn)行相關(guān)應(yīng)用程序的內(nèi)存空間。連接
29、受限設(shè)備配置(Connected Limited Device Configuration,CLDC):為具有間斷性聯(lián)網(wǎng)能力、較慢的處理器、有限內(nèi)存、沒有穩(wěn)定的電源供應(yīng)的設(shè)備設(shè)計(jì)。CLDC 的目標(biāo)設(shè)備主要包括移動(dòng)電話,雙向呼叫器和入門級(jí)的 PDA 等,它們通常具有 16 位或 32位的 CPU,配置 128KB512KB 的內(nèi)存可用于 Java 平臺(tái)實(shí)現(xiàn)和運(yùn)行相關(guān)應(yīng)用程序。CLCD 主要面向 J2ME 開發(fā)平臺(tái),由兩個(gè)部分組成:為應(yīng)用程序提供的最小 Java 語言類庫(kù)以及適合在資源受限設(shè)備上運(yùn)行的 Java 虛擬機(jī)(KVM) 。簡(jiǎn)表(Profiles)層:簡(jiǎn)表層定義了特定系列設(shè)備上可用的應(yīng)用程
30、序編程接口(API)的最小集。簡(jiǎn)表在一個(gè)特定的配置上面實(shí)現(xiàn)。應(yīng)用程序是針對(duì)特定的簡(jiǎn)表編寫的,因此可以移植到支持該簡(jiǎn)表的任何設(shè)備上。另外,一個(gè)設(shè)備可以同時(shí)支持多個(gè)簡(jiǎn)表。用戶和開發(fā)人員看到最多的就是這一層。Java 虛擬機(jī)是 J2ME 技術(shù)的核心,但是配置和簡(jiǎn)表提供特殊環(huán)境的類應(yīng)用程序接口。配置是用于一組通用設(shè)備的最小的 Java 平臺(tái),而簡(jiǎn)表則為具體的設(shè)備家族或特別的應(yīng)用程序提供更具體的功能。每個(gè)配置和簡(jiǎn)表處理一般或具體的消費(fèi)產(chǎn)品。配置和簡(jiǎn)表規(guī)范是由多種多樣的設(shè)備生產(chǎn)商和用戶共同開發(fā)并建立的。簡(jiǎn)化地舉例概括說明,假設(shè)如果想為小型信息家電編寫 Java 應(yīng)用程序的話,需要兩個(gè)前提:一個(gè)配置和至少一
31、個(gè)簡(jiǎn)表?,F(xiàn)在,一般是配置捆綁了虛擬機(jī)和一套鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)7針對(duì)各自的平臺(tái)所能夠用的橫向分組設(shè)備的 Java 類庫(kù);另外至少需要一個(gè)簡(jiǎn)表來為平臺(tái)提供附加的 Java 類,這個(gè)簡(jiǎn)表通常會(huì)為各自的相應(yīng)設(shè)備提供用戶界面、輸入和數(shù)據(jù)庫(kù)類。有了這兩個(gè)前提,就有了可以使用 Java 為不同的設(shè)備編寫應(yīng)用程序的基本的 J2ME 環(huán)境。2.4 移動(dòng)信息設(shè)備簡(jiǎn)表 移動(dòng)信息設(shè)備簡(jiǎn)表(MIDP)為移動(dòng)電話和入門級(jí)PDA設(shè)計(jì),為移動(dòng)應(yīng)用程序提供了所需的全部核心功能,包括應(yīng)用程序模型、用戶界面、持久性數(shù)據(jù)存儲(chǔ)、聯(lián)網(wǎng)能力及應(yīng)用程序管理功能。目前應(yīng)用非常廣泛的MIDlet就是在MIDP中定義的。C
32、LDC與MIDP組成了完備的Java運(yùn)行環(huán)境大大提升了手持移動(dòng)智能設(shè)備的功能,并且最小化了設(shè)備內(nèi)存和電源消耗。MIDP 框架如圖 2-4 所示。圖 2-4 MIDP 框架圖MIDP提供核心應(yīng)用程序功能,包括用戶界面、網(wǎng)絡(luò)連接、本地?cái)?shù)據(jù)存儲(chǔ)和應(yīng)用程序生命周期管理。MIDlet生命周期流程圖如圖2-5所示。MIDP中含有下列API包:A. javax.microedition.lcdui: 用戶界面(UI)API,它為MIDP應(yīng)用提供了一整套實(shí)現(xiàn)用戶界面的功能特性。B. javax.microediton.rms: 移動(dòng)信息設(shè)備描述提供了一種讓MIDlets持久性儲(chǔ)存并在以后可以取回?cái)?shù)據(jù)的機(jī)制。C
33、. javax.microedition.midlet: 這個(gè)MIDlet包明確定義了MIDP應(yīng)用,也定義了和應(yīng)用環(huán)境之間的交互。D. javax.microedition.io: 移動(dòng)信息設(shè)備還描述包括基于有限連接設(shè)備配置基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)8GenericConnection框架的網(wǎng)絡(luò)支持。圖 2-5 MIDlet 生命周期流程圖2.5 開發(fā)平臺(tái)隨著手機(jī)軟件開發(fā)的發(fā)展,市場(chǎng)上同時(shí)并存許多手機(jī)游戲開發(fā)平臺(tái)。目前的手機(jī)訪問Internet只能通過WAP(Wireless Application Protocol)方式,而且只能訪問WML(Wireless Markup
34、Language)網(wǎng)頁(yè),而不是主流的HTML網(wǎng)頁(yè),也不能顯示復(fù)雜的圖形格式。此外,WAP采用的Brower/Serve方式訪問Internet,能提供的功能很有限,并且因?yàn)楝F(xiàn)有的WAP解決方案不夠智能化,又不能訪問本地存儲(chǔ)區(qū),如果進(jìn)行在線交易會(huì)增加服務(wù)器負(fù)荷,使服務(wù)器的反應(yīng)速度變慢,使無線Internet的應(yīng)用受到了很大限制。J2ME的出現(xiàn)恰好有效的解決了以上問題。其Java語言的特性,使其具有以下優(yōu)點(diǎn):a.動(dòng)態(tài)內(nèi)容傳輸。新的應(yīng)用、服務(wù)和內(nèi)容可以通過不同類型的網(wǎng)絡(luò)動(dòng)態(tài)下載。b.安全。類文件校驗(yàn)、明確定義的應(yīng)用程序編程接口和安全組件確保了第二方應(yīng)用程序的行為是可靠的,不會(huì)對(duì)設(shè)備或者網(wǎng)絡(luò)造成損害。
35、c.交叉平臺(tái)的兼容性。標(biāo)準(zhǔn)化語言組件和庫(kù)意味著由于支持J2ME配置和描述所帶來的約束使應(yīng)用和內(nèi)容可以在不同設(shè)備之間靈活地傳輸。d.離線獲取。不用激活網(wǎng)絡(luò)連接,應(yīng)用就可以被使用。這種特點(diǎn)降低了傳輸費(fèi)用,減輕了可能的網(wǎng)絡(luò)故障帶來的影響。e.現(xiàn)代的面向?qū)ο笏枷?。Java相對(duì)當(dāng)前用于無線軟件開發(fā)的編程語言和工具來說具有更加完善的抽象機(jī)制和更高級(jí)的程序構(gòu)造,這使得應(yīng)用開發(fā)更加有效。f.巨大的開發(fā)者團(tuán)隊(duì)。這些特性使第二方軟件開發(fā)商可以很容易地介入應(yīng)用程序的開發(fā),并且可以很方便地將應(yīng)用程序安裝到手機(jī)上,開發(fā)周期大大縮短,而且還能支持應(yīng)用程序的動(dòng)鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)9態(tài)下載和升級(jí)。J2M
36、E定義和標(biāo)準(zhǔn)化了一種可移植的無線應(yīng)用開發(fā)環(huán)境,主要是針對(duì)第二方應(yīng)用開發(fā)商,將設(shè)備軟件開發(fā)向第二方開放,這個(gè)環(huán)境可以靈活地附加到設(shè)備制造商開發(fā)的已經(jīng)存在的軟件和硬件之上,并且不會(huì)對(duì)已經(jīng)存在的系統(tǒng)軟件造成影響。這種嵌入式思想也極大地推動(dòng)了J2ME的發(fā)展壯大。本設(shè)計(jì)主要是在 Netbeans IDE 開發(fā)環(huán)境下進(jìn)行開發(fā)、測(cè)試與調(diào)試。基于 J2ME平臺(tái),它將 Java 語言的與平臺(tái)無關(guān)的特性移植到小型電子設(shè)備上,允許移動(dòng)無線設(shè)備之間共享應(yīng)用程序。NetBeans 是一套完全以 Java 撰寫而成、并且開放原始碼的開發(fā)工具。Java Studio Micro Edition 大致上是把 NetBeans
37、 IDE 和 J2ME Wireless Toolkit 結(jié)合在一起的產(chǎn)品。可以方便 J2ME 應(yīng)用程序的開發(fā)者更容易追蹤問題與除錯(cuò)。四種模擬器種類,如表 2-1 所示。表 2-1 模擬器版本模擬器名稱 說 明DefaultColorPhone 普通彩屏電話 DefaultGrayPhone 普通灰屏電話 MediaControlSkin 有音頻和視頻控制的普通電話QwertyDevice 有 Qwerty 樣式鍵盤的掌上設(shè)備3 系統(tǒng)分析及總體設(shè)計(jì)3.1 可行性分析.1 技術(shù)可行性技術(shù)可行性五子棋是傳統(tǒng)的對(duì)弈游戲,歷史悠久、規(guī)則單一。手機(jī)游戲的實(shí)現(xiàn)方式主要包括嵌入式游戲、瀏覽器
38、游戲、短消息服務(wù)游戲、J2ME 和其它的解釋語言。Java 2 Micro Edition 是一種針對(duì)移動(dòng)電話和 PDA 這樣的小型設(shè)備的 Java 語言,雖然它與臺(tái)式機(jī)中的 Java 相比還是有一定的限制,但是已經(jīng)極大的提高了移動(dòng)電話支持游戲的能力。在 NetBeans 環(huán)境中編寫并在模擬器中運(yùn)行簡(jiǎn)單明了。.2 操作可行性操作可行性本游戲開發(fā)后可導(dǎo)入手機(jī)操作,供個(gè)人平常娛樂所用,完全使用手機(jī)鍵盤操作,操作簡(jiǎn)單,所以在這方面是完全可行的。3.2 需求分析.1 系統(tǒng)的性能需求系統(tǒng)的性能需求首先,手機(jī)游戲最大的問題在于每一款手機(jī)擁有自己的屏幕大小和特定的 API及性
39、能。游戲開發(fā)過程中,要考慮到游戲程序的設(shè)計(jì)要能合乎大多數(shù)手機(jī)的應(yīng)用。J2ME 提出的一系列標(biāo)準(zhǔn)使得使用 J2ME 開發(fā)的游戲可以在配備 J2ME 的任何廠家的移基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)10動(dòng)設(shè)備上運(yùn)行。軟件最好操作簡(jiǎn)單容易。受手機(jī)屏幕大小和顯示的影響。手機(jī)鍵盤的不方便,游戲需要設(shè)計(jì)得容易操作。其次,軟件具有人工智能算法原理要簡(jiǎn)單,并且運(yùn)行快速。對(duì)于人機(jī)游戲,不需要網(wǎng)絡(luò)連接,游戲處理不會(huì)有太長(zhǎng)的等待時(shí)間。游戲是需要快速反應(yīng)的。手機(jī)處理器的頻率直接要求我們需要使用簡(jiǎn)單實(shí)用的智能算法。另外,所制作的軟件在結(jié)構(gòu)上應(yīng)具有很好的可擴(kuò)展性,便于以后的功能擴(kuò)展。.2 系統(tǒng)的
40、功能需求系統(tǒng)的功能需求A.游戲內(nèi)容此款游戲主題是五子棋對(duì)弈。無“禁手”的規(guī)則基本是人人皆知。相同顏色的棋子,五子一線為勝。B.游戲方式區(qū)別于一般的生活中的人與人的對(duì)弈,用在手機(jī)上為人機(jī)對(duì)弈,在手機(jī)屏幕上構(gòu)造一個(gè)游戲棋盤,并且設(shè)計(jì)黑、白棋子。利用人工智能的相關(guān)知識(shí)實(shí)現(xiàn)對(duì)弈。C.游戲?qū)ο笪遄悠迨謾C(jī)游戲是大眾游戲,游戲者只要具備一般的操作知識(shí)就可以進(jìn)入游戲。對(duì)玩游戲者并沒有什么特殊要求。D.游戲目標(biāo)此款手機(jī)游戲?yàn)槠孱愑螒?,就是為了讓人們閑暇時(shí)間休閑、鍛煉棋藝,游戲設(shè)計(jì)盡可能地模擬現(xiàn)實(shí)生活中的場(chǎng)景。a) 游戲開始界面:玩家可使用“開始”軟鍵進(jìn)入游戲。 b) 棋子選擇功能:玩家可選擇走棋先后順序,黑先白
41、后。c) 棋盤界面:對(duì)弈界面,使用上、下、左、右鍵來移動(dòng)落子點(diǎn)位,使用確定按鈕來落子,相應(yīng)條件下可實(shí)現(xiàn)悔棋、暫停、重新開始游戲功能。d) 勝負(fù)判斷:涉及人工智能,用以判斷人與機(jī)器的輸贏狀況,游戲無“禁手” ,五子首先連成一線則為勝。3.3 系統(tǒng)概要設(shè)計(jì).1 模塊劃分模塊劃分在完成了需求分析后,需要對(duì)此游戲進(jìn)行總體的規(guī)劃,模塊的劃分,基本的流程設(shè)計(jì)。在總體規(guī)劃期間相對(duì)要考慮到游戲的擴(kuò)展性,因?yàn)樵谧畛踉O(shè)計(jì)游戲的時(shí)候不可能面面俱到,而且隨著技術(shù)的發(fā)展,也需要游戲具有很好的擴(kuò)充性。此次系統(tǒng)設(shè)計(jì)的主要模塊分為:歡迎模塊、規(guī)則說明模塊、對(duì)弈模塊、勝負(fù)判斷模塊。各主要模塊的功能描述如下:歡迎
42、模塊:這部分是游戲出現(xiàn)的第一個(gè)界面,主要是為了說明已經(jīng)進(jìn)入五子棋游戲系統(tǒng)。規(guī)則說明模塊:此模塊主要是游戲者的選擇界面。提供的選擇項(xiàng)有游戲說明,開始游戲和退出游戲。對(duì)弈模塊:該部分主要是進(jìn)行人機(jī)對(duì)弈的棋盤界面。該模塊中包含悔棋、暫停鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)11游戲、放棄本局這些功能。勝負(fù)判斷模塊:這部分即是對(duì)每次棋局結(jié)果的判斷,是人贏了或者是機(jī)器獲勝。系統(tǒng)主要功能模塊如圖 3-1 所示。圖 3-1 系統(tǒng)功能模塊圖.2 系統(tǒng)流程系統(tǒng)流程明確了主要模塊功能后,就需要對(duì)此游戲軟件基本流程有一個(gè)總體規(guī)劃,本款手機(jī)游戲軟件基本流程圖如圖3-2所示。游戲規(guī)則界面棋子類型選擇
43、選擇黑子 玩家先行選擇白子 機(jī)器先行棋盤對(duì)弈界面結(jié)果判斷界面開始游戲退出游戲落子走棋實(shí)現(xiàn)悔棋暫停/恢復(fù)游戲放棄本局基于 J2ME 的手機(jī)五子棋游戲歡迎模塊勝負(fù)判斷模塊規(guī)則說明模塊對(duì)弈模塊基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)12圖 3-2 系統(tǒng)基本流程圖 .3 系統(tǒng)用例圖系統(tǒng)用例圖 游戲設(shè)計(jì)用例圖如圖 3-3 所示。 圖 3-3 系統(tǒng)用例圖.4 主要類的介紹主要類的介紹 J2ME 是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,類是其設(shè)計(jì)的核心。程序總體設(shè)計(jì)階段首要任務(wù)就是設(shè)計(jì)好相應(yīng)的類,只要類設(shè)計(jì)好了可以讓程序一目了然。在這款游戲中,總共是分為了八個(gè)類,其實(shí)很多類都是相對(duì)類似
44、的。首要的類是 MIDlet 類的子類Wuziqi,它是整個(gè)程序的框架,程序的運(yùn)行必須從它開始。其次根據(jù)前面設(shè)計(jì)的功能模塊的劃分,相應(yīng)的要設(shè)計(jì)各個(gè)子類,如游戲歡迎界面、游戲說明界面、棋盤設(shè)計(jì)界面、棋子設(shè)計(jì)、對(duì)弈界面、人工智能的實(shí)現(xiàn)界面等,另外的 J2ME 技術(shù)主要就是在屏幕繪制的基礎(chǔ)上利用命令監(jiān)聽實(shí)現(xiàn)各個(gè)功能。主要類的作用說明:a) Wuziqi1.java該 java 文件是設(shè)計(jì) MIDlet 程序的基本框架,該生命周期繼承了javax.microedition.midlet.MIdlet 抽象類。程序從該類開始執(zhí)行。b) StartGame.java該文件生成的類顯示開始游戲入口以及游戲說
45、明。c) Chessboard.java該文件生成的類用來創(chuàng)建棋盤對(duì)象,在畫布上繪制棋盤,另外,獲得棋盤上棋子信息。將手機(jī)上的軟鍵轉(zhuǎn)化為游戲鍵進(jìn)行走棋控制。棋盤可進(jìn)行悔棋、暫停、放棄游戲。d) Chesses.java該文件生成的類負(fù)責(zé)創(chuàng)建棋子對(duì)象,棋子對(duì)象可以獲取本身的顏色外觀。選擇棋子人機(jī)對(duì)弈落子走棋悔棋暫停游戲放棄本局玩家鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)13e) Point.java該文件生成的類用來創(chuàng)建棋盤的棋點(diǎn)對(duì)象??梢耘袛嘣擖c(diǎn)上是否有棋子、指定當(dāng)前點(diǎn)上的棋子、獲取當(dāng)前點(diǎn)上的棋子、移動(dòng)當(dāng)前點(diǎn)上的棋子。 f) AI.java該文件類主要是實(shí)現(xiàn)走棋算法以及結(jié)局判斷。4 系統(tǒng)詳細(xì)
46、設(shè)計(jì)4.1 界面設(shè)計(jì)該部分主要說明手機(jī)游戲畫面顯示,包括一開始項(xiàng)目的創(chuàng)建、畫面的低級(jí)繪制、圖像的獲取、UI 組件的顯示及如何進(jìn)行游戲按鍵處理。本程序的設(shè)計(jì)主要使用了 MIDP 所提供的 javax.microedition.lcdui 包中的類來實(shí)現(xiàn)手機(jī)的用戶界面。各個(gè)類如表 4-1 所示。表4-1 javax.microedition.lcdui包類描 述接口Choice提供一個(gè)常規(guī)的接口來管理選中的項(xiàng)目CommandListener允許創(chuàng)建一個(gè)高級(jí)的UI命令消息的監(jiān)聽器UI系統(tǒng)以及工具類Display代表系統(tǒng)顯示設(shè)備和輸入設(shè)備的管理器Font獲得字體對(duì)象和它們的尺寸Image提供一個(gè)類來保
47、存圖像對(duì)象(以PNG格式)AlertType提供一個(gè)幫助類來定義可以創(chuàng)建的Alert的類型Displayable提供一個(gè)可以顯示對(duì)象的抽象基類高級(jí)UICommand抽象用戶的交互動(dòng)作Screen類Screen提供高級(jí)UI組件的基類Alert提供一個(gè)Screen來警告一些事情L(zhǎng)ist提供一個(gè)Screen對(duì)象包括一列被選項(xiàng)Forms & ItemsChoiceGroup提供一個(gè)UI組件代表一列選項(xiàng)ImageItem提供一個(gè)圖像ItemTicker提供一個(gè)Item在display上面顯示一條滾動(dòng)的文字基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)14低級(jí)UIGraphics提供二維圖像工具Ca
48、nvas提供一個(gè)創(chuàng)建低級(jí)UI圖像的基類.1 項(xiàng)目創(chuàng)建項(xiàng)目創(chuàng)建 首先是在 NetBeans IDE 環(huán)境中創(chuàng)建項(xiàng)目,如圖 4-1 所示。然后設(shè)置項(xiàng)目名稱,如圖 4-2 所示。再選擇相應(yīng)的平臺(tái),如圖 4-3 所示。圖 4-1 新建項(xiàng)目鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)15圖 4-2 設(shè)置項(xiàng)目名稱和位置圖 4-3 選擇平臺(tái).2 手機(jī)游戲外觀設(shè)計(jì)手機(jī)游戲外觀設(shè)計(jì) 首先,MIDlet 應(yīng)用程序的核心即為 MIDlet 類。MIDlet 事件處理分為高級(jí)與低基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)16級(jí)事件處理,則可實(shí)現(xiàn)設(shè)備內(nèi)的應(yīng)用程序與用戶之間的交互機(jī)制。該類
49、是設(shè)計(jì)MIDlet 程序的基本框架,生命周期繼承了 javax.microedition.midlet.MIdlet 抽象類。在active狀態(tài)調(diào)用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet進(jìn)入destroyed或者pause狀態(tài)。所使用的方法闡述如表4-2所示。表4-2 javax.microedition.MIDlet類方 法描 述abstract void destroyApp(boolean unconditional)應(yīng)用程序管理器在應(yīng)用程序關(guān)閉前,調(diào)用這個(gè)方法,可以保存狀態(tài)和釋放資源等abstract void
50、 pauseApp()在用戶暫停游戲時(shí),應(yīng)用程序管理器調(diào)用MIDlet的這個(gè)方法abstract void startApp()應(yīng)用程序管理器調(diào)用MIDlet的這個(gè)方法,告訴用戶想要再次開始游戲abstract void notifyDestroyed()如果游戲者決定退出游戲,調(diào)用這個(gè)方法來通知應(yīng)用程序管理器abstract void notifyPaused()調(diào)用該方法來通知管理器游戲者已經(jīng)暫停了游戲abstract void resumeRequest()調(diào)用該方法告訴應(yīng)用程序管理器MIDlet需要重新開始應(yīng)用程序管理器(AM)的作用是管理MIDlet。它是一個(gè)主控程序,控制著正在發(fā)生
51、的事情。如背景知識(shí)中所介紹,MIDlet被創(chuàng)建后默認(rèn)為暫停狀態(tài)。當(dāng)應(yīng)用程序認(rèn)為它準(zhǔn)備完畢,它會(huì)調(diào)用startApp()方法來通知MIDlet進(jìn)入運(yùn)行狀態(tài)。主MIDlet類的成員結(jié)構(gòu)如圖4-4所示。圖4-4 主MIDlet類的成員結(jié)構(gòu)管理畫面顯示功能的 javax.microedition.lcdui.Display 類。這個(gè) Display類可以讓 javax.microedition.lcdui.Display 類的子類顯示在畫面上。Displayable 類的子類大致說來可以分為兩種,分別為用來進(jìn)行線與圖形和圖像的低級(jí)描繪類,與用于顯示警告與文本的輸入,選擇列表等 UI 組件類。前者是指j
52、avax.micredition.lcdui.Canvas 類,后者是指javax.microedition.lcdui.Screen 類與其子類(Alert,Form,List 類等)。它們之鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)17間的關(guān)系如下圖 4-5 所示。用來顯示畫面用的Display對(duì)象,可以從Display類的Static方法getDisplay(MIDlet)的返回值獲取。通過在獲取的Display 對(duì)象上設(shè)置Displayable對(duì)象,就可以讓Displayable對(duì)象顯示在畫面上。以下的程序代碼為畫面顯示的范例: Display dis=Display.getDispl
53、ay(this) ;Dis.setCurrent(new Test();本設(shè)計(jì)中主要使用到的類和方法如表 4-3 所示。表4-3 javax.microedition.lcdui.Display類方 法 描 述void setCurrent (Displayable nextDisplayable) 要求不同的可視對(duì)象能在屏幕上顯示Void setCurrent(Alert alert, Displayable nextDisplayable) 顯示當(dāng)前的Alert對(duì)象并且設(shè)置Alert顯示后的下一個(gè)可視對(duì)象Displayable getCurrent()獲取當(dāng)前的Displayable對(duì)象s
54、tatic Display getDisplay(MIDlet m)為MIDlet獲取當(dāng)前的Display對(duì)象int numColors()獲取顏色數(shù)量(如果不支持顏色,則為灰度的層次)基于 J2ME 的手機(jī)五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)18圖 4-5 Display 類關(guān)系圖另外,Graphics中提供了對(duì)了對(duì)字體的控制方法,每個(gè)Graphics都有一個(gè)Font對(duì)象與其關(guān)聯(lián),來進(jìn)行文字的渲染操作,調(diào)用其類方法setFont(null),即可使字體恢復(fù)到默認(rèn)狀態(tài),對(duì)于具體的參數(shù),F(xiàn)ont提供了以下常量,來控制Font的屬性:字體大小:SMALL、MEDIUM、LARGE字體外觀:PROPORTIONA
55、L、MONOSPACE、SYSTEM字體風(fēng)格:PLAIN、BOLD、ITALIC、UNDERLINED通過charWidht(),charsWidth(),stringWidth(),substringWidth()來獲得字符串,字符,字符集合的寬度,垂直方面則可以參考getHeight()和getBaselinePosition()方法獲得。選擇界面效果如圖 4-6 和 4-7 所示。鹽城工學(xué)院本科生畢業(yè)設(shè)計(jì)說明書(2010)19圖 4-6 功能選擇界面圖 4-7 棋子選擇界面.3 圖形的低級(jí)繪制圖形的低級(jí)繪制 若是要在MIDlet中使用低級(jí)用戶界面設(shè)計(jì),就必須定義一個(gè)從Ca
56、nvas類派生出來的子類。Canvas類是一個(gè)抽象類,必須在它的基礎(chǔ)上進(jìn)行派生而不能直接定義實(shí)例。 在Canvas類的子類中必須實(shí)現(xiàn)paint()方法。Graphics對(duì)象包含了所有的在屏幕上繪畫的方法,例如drawArc()、drawLine()、drawRect()和drawString()等。在Graphics對(duì)象中支持使用24bits的RGB(RGB代表Red,blue,Green,即使用紅黃藍(lán)三種基色來合成任意的顏色)顏色。如果MIDlet運(yùn)行的模擬器上不支持這么多的顏色,則這些顏色將被最相似的顏色代替。Canvas又稱畫布,是一個(gè)Displayable對(duì)象,所有的繪圖操作均在上面,
57、它屬于低級(jí)UI引擎中的一個(gè)類。低級(jí)UI提供了一個(gè)工具包用來移動(dòng)和繪制圖形、顯示文字,獲取直接的按鍵事件等等。表4-4 javax.microedition.lcdui.Canvas類方 法描 述通用方法int getGameAction (int keyCode)獲取與一個(gè)鍵代碼相關(guān)的游戲動(dòng)作int getKeyCode (int gameAction)獲取與一個(gè)游戲動(dòng)作相關(guān)的鍵代碼String getKeyName (int keyCode)獲取設(shè)備一個(gè)按鍵的名稱int getWidth ()獲取顯示設(shè)備的寬度int getHeight ()獲取顯示設(shè)備的高度續(xù)表4-4基于 J2ME 的手機(jī)
58、五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)20方 法描 述boolean hasPointerEvents ()確定設(shè)備是否支持單擊設(shè)備的按下和釋放消息boolean hasPointerMotionEvents ()確定設(shè)備是否支持拖動(dòng)消息boolean isDoubleBuffered ()返回是否設(shè)備圖像是雙緩存的事件響應(yīng)方法abstract void paint (Graphics g)在Canvas需要重新被刷新時(shí)調(diào)用void hideNotify ()在Canvas需要被隱藏時(shí)調(diào)用void showNotify ()在返回時(shí)被調(diào)用void keyPressed (int keyCode)當(dāng)一個(gè)鍵按下時(shí)
59、被調(diào)用void keyRepeated (int keyCode)當(dāng)一個(gè)鍵持續(xù)按下時(shí)被調(diào)用void keyReleased (int keyCode)當(dāng)一個(gè)鍵停止重復(fù)時(shí)被調(diào)用void repaint()要求重新繪制Canvasvoid repaint(int x, int y, int width, int height)要求重新繪制Canvas的一部分 Canvas本身有兩種狀態(tài),一種是普通默認(rèn)情況下的,一種是全屏狀態(tài),可以用setFullScreenMode()方法來對(duì)其設(shè)定,兩者之間的區(qū)別在于當(dāng)使用全屏幕狀態(tài)的時(shí)候,Title、Ticker以及Command都無法在屏幕上顯示。當(dāng)調(diào)用se
60、tFullScreenMode()的時(shí)候,不管是什么模式,都會(huì)調(diào)用sizeChanged()這個(gè)方法,并傳入屏幕的高度和寬度作為其參數(shù)。對(duì)于某些突發(fā)事件,比如說來電等等,屏幕會(huì)被系統(tǒng)畫面所覆蓋的時(shí)候,就會(huì)調(diào)用hideNotify()這個(gè)方法,當(dāng)恢復(fù)原狀時(shí),就會(huì)調(diào)用原本的畫面,那么系統(tǒng)就會(huì)同時(shí)調(diào)用showNotify()這個(gè)方法。在實(shí)際操作過程當(dāng)中,應(yīng)該覆寫這兩個(gè)方法,以便在可見性變化時(shí),使程序做出相應(yīng)的反應(yīng),Canvas會(huì)在它被顯示的時(shí)候自動(dòng)調(diào)用paint()方法,不必去調(diào)用repaint()方法。本程序設(shè)計(jì)用到了Canvas類中的基本繪圖方法:繪制直線: Public void drawLine(i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)網(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è)洗車工2024年服務(wù)協(xié)議樣本版B版
- 夏至節(jié)氣文化探討模板
- 二零二五年度虛擬現(xiàn)實(shí)(VR)應(yīng)用開發(fā)框架合作協(xié)議3篇
- 2025年度健康養(yǎng)生產(chǎn)品全國(guó)代理合同范本4篇
- 2025年度工程車輛柴油補(bǔ)給服務(wù)協(xié)議4篇
- 個(gè)人借款企業(yè)合作合同書樣本版B版
- 《XX創(chuàng)意廣告欣賞》課件
- 專業(yè)足球教練2024聘任協(xié)議精簡(jiǎn)文本版A版
- 2025年度高新技術(shù)企業(yè)研發(fā)場(chǎng)地租賃協(xié)議書4篇
- 2024育兒嫂安全保障合同范本:育兒嫂職責(zé)與權(quán)益3篇
- MOOC 電工學(xué)(電氣工程學(xué)概論)-天津大學(xué) 中國(guó)大學(xué)慕課答案
- 2019級(jí)水電站動(dòng)力設(shè)備專業(yè)三年制人才培養(yǎng)方案
- 室內(nèi)裝飾裝修施工組織設(shè)計(jì)方案
- 洗浴中心活動(dòng)方案
- 送電線路工程施工流程及組織措施
- 肝素誘導(dǎo)的血小板減少癥培訓(xùn)課件
- 韓國(guó)文化特征課件
- 抖音認(rèn)證承諾函
- 清潔劑知識(shí)培訓(xùn)課件
- 新技術(shù)知識(shí)及軍事應(yīng)用教案
- 高等數(shù)學(xué)(第二版)
評(píng)論
0/150
提交評(píng)論