版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
手持設備上游戲“連連看”的實現摘要J2ME(Java2MicroEdition)是近年來隨著各種不同設備,尤其是移動通信設備的飛速發(fā)展而誕生的一項新的開發(fā)技術。它定位在消費性電子產品的應用上,對設備的智能化、多樣化,提供了革命性的解決方案。Java良好的跨平臺特性在移動平臺的開發(fā)中顯示出了巨大的威力。Java語言面向對象的優(yōu)勢也使得游戲開發(fā)變得更容易。隨著手機的日益普及,以及手機性能的不斷攀升,移動游戲潛在的市場比其它任何游戲平臺都要大。本論文著眼于J2ME技術的應用,利用MIDP2.0提供的強大的游戲開發(fā)能力,開發(fā)一款可商用的手機游戲程序——連連看。本程序通過函數重載,實現了進行單人游戲的功能。游戲加入了難度調整,游戲紀錄的存儲,大大增強了游戲的娛樂性和互動性。游戲提供了良好的界面,游戲Logo,游戲幫助,一應俱全,游戲可以隨時暫停和繼續(xù),實現了更為人性化的要求。本系統介紹了基于移動平臺的Java無線網絡游戲開發(fā)須具備的基礎知識和高級技巧,包括無線游戲的發(fā)展前景,主要開發(fā)工具的使用,J2ME的相關技術及本程序的結構分析和具體功能的實現等。關鍵詞:J2ME連連看Handhelddevicesontherealizationofgames“PictureMatching”ABSTRACTJ2MEisakindoffastdevelopingtechnologyimplementedonvariousdevicesespeciallymobilecommunicationequipments.Itfocusesonapplicationforconsumptiveelectronicproducts,providingrevolutionarysolutiontotheintelligentizationanddiversificationoftheequipment.Javacharacteristicsofagoodcross-platforminthedevelopmentofthemobileplatformtodisplayagreatpower.Theadvantagesofobject-orientedJavelanguagealsomakesgamedevelopmenteasier.Withtheincreasingpopularityofmobilephones,aswellasrisingmobileperformance,mobilegamingmarketpotentialthananyothermajorgamingplatformshave.ThispaperfocusonJ2MEtechnologyapplications,usingMIDP2.0provideapowerfulgamedevelopmentcapabilities,thedevelopmentofacommercialmobilephonecanGames-PictureMatching.Thisprocedurefunctionoverloadingtoachievethefunctionsofthesingleplayergame.Addedtoadjustthethegamedifficulty,thegamerecordstorage,greatlyenhancingthegameandinteractiveentertainment.Gamesprovideagoodinterface,gamesLogo,gamehelp,offeringavarietyofgamescanbesuspendedatanytimeandcontinuetoachieveamorepersonalizedrequirements.ThispaperintroducestheJava-basedmobileplatformgamedevelopershavetohavewirelessnetworkbasicsandadvancedtechniques,includingtheprospectsforthedevelopmentofwirelessgame,themaindevelopmenttoolsused,J2MErelatedtechnologiesandtheprocessofstructuralanalysisandtherealizationofspecificfunctionsandsoon.KeyWords:J2MEPictureMatchi目錄MACROBUTTONInsertCrossReference第一章緒論 11.1手機游戲現狀 11.2游戲開發(fā)可行性分析 11.2.1開發(fā)的條件環(huán)境要求,技術可行性 11.2.2經濟可行性 21.2.3操作可行性 31.3實現上的困難 31.3.1不同的屏幕尺寸問題 31.3.2手機內存過小的問題 31.3.3顯示速度方面的問題 31.3.4可中斷性的問題 41.4本課題實現的意義 4第二章開發(fā)環(huán)境介紹和系統分析概述 52.1系統的運行環(huán)境和開發(fā)平臺 52.1.1Java語言特點 52.1.2硬件設備 62.1.3系統開發(fā)平臺 62.1.4關于WirelessToolkit 62.1.5J2ME集成開發(fā)工具 72.2系統需求分析 82.2.1需求分析基礎知識 82.2.2系統的綜合要求 92.2.3功能需求 102.2.4游戲開發(fā)環(huán)境的需求 112.2.5可靠性、可用性需求 112.2.6故障處理需求 112.2.7接口需求 122.2.8將來可能提出的要求 12第三章游戲的總體設計及詳細設計 133.1游戲的總體設計 133.1.1總體設計的設計原則 133.1.2游戲的總體設計 143.1.3程序流程 143.1.4本程序中的幾項的技術 153.1.5PNG圖片格式 163.1.6混淆器(Obfuscator)的使用 173.2游戲的詳細設計 173.2.1詳細設計的介紹 173.2.2界面的詳細設計 183.2.3功能的詳細設計 19游戲結束時的判斷 19第四章程序的分析和具體實現 204.1游戲進入前的選擇 204.2游戲邏輯及幾個重要類的實現 224.2.1GameCanvas類所實現的功能 224.2.2地圖的創(chuàng)建 224.2.3地圖的移動 234.2.4關于commandAction()方法和paint()方法 254.2.5記錄系統-最高分 26第五章系統測試與安裝 275.1游戲安裝 275.2游戲測試 275.2.1部分模塊的測試 275.2.2運行界面測試 28結束語 32參考文獻 33附錄 34致謝 42天津理工大學2010屆本科畢業(yè)設計說明書PAGE42第一章緒論1.1手機游戲現狀在當今社會中,手機及其他無線設備越來越多的走進普通百姓的工作和生活,隨著信息化的不斷進展,手機及其他無線設備上娛樂功能的普及勢在必行。手機游戲服務從2002年興起,目前3G將加快移動網絡和傳統互聯網之間的融合,手機終端也必將朝智能化和PC化方向發(fā)展。2005年全球手機線上游戲將有近68億美金商機,預計2010全球移動游戲業(yè)創(chuàng)收將超過100億美元,中國的手機游戲市場也會達到400億元人民幣的規(guī)模。2010年中國手機游戲市場進入二次盤整后的成長期,手機聯網游戲是帶動其發(fā)展的必然因素。截至2009年12月,全國手機用戶數達5.22億戶[1],成為世界上最大的手機使用國?,F在,手機游戲正在處在一個快速發(fā)展的時期。在歐洲,已經初步形成了一個規(guī)模達數10億美元的行業(yè)市場,在2010年,北美市場規(guī)模預期將超越10億美元大關。但是傳統手機存在以下弊端:傳統手機出廠時均由硬件廠商固化程序,程序不能增加、刪除,有了錯誤也不能更新、修改,若要增加新功能必須另換一部手機。而Java技術在無線應用方面的優(yōu)勢非常明顯:1.應用程序可按需下載,而不是購買由硬件商提供的套件,可升級空間大。2.Java技術使網絡帶寬的應用更為有效,因為應用程序可以下載到器件上,并在本地運行,僅僅是在連接到服務器時才會占用網絡帶寬。隨著JAVA手機的誕生,手機游戲編程的靈活性與輕便性使得JAVA手機游戲成為游戲市場的又一亮點。由Java/J2ME技術構建的可下載游戲不僅使手機游戲可以更為輕易地吸引到用戶的興趣,同時也有利于創(chuàng)造更為多樣化的計費形式[2]。1.2游戲開發(fā)可行性分析1.2.1開發(fā)的條件環(huán)境要求,技術可行性Java平臺演進到Java2后,Java平臺分別針對不同領域的需求被分成四個版本,亦即J2EE、J2SE、J2ME以及JavaCard(其結構示意圖見圖1.1)。越在同心圓外部的Java版本,所支持的核心類庫就越完整,所支持的Java基本數據類型就越完整[3]。其中J2ME定位在消費性電子產品的應用上。這個版本針對資源有限的電子消費產品的需求精簡核心類庫,并提供了模塊化的架構讓不同類型產品能夠隨時增加支持的能力[4]。圖1.1Java平臺的結構J2ME平臺由多種配置(Configuration)、簡表(Profile)和可選包(OptionalPackage)組成。J2ME平臺主要包含兩個配置:ConnectedLimitedDevicesConfiguration(CLDC)和ConnectedDevicesConfiguration(CDC)。為了給目標設備提供完整的運行環(huán)境,配置必須和簡表(Profile)組合。簡表位于配置之上,為運行環(huán)境提供高層的API,例如應用程序模型和圖形用戶界面等。目前,CLDC上采用的最廣泛的簡表是移動信息設備簡表(MobileInformationDeviceProfile,MIDP)?;贑LDC與MIDP的J2ME平臺主要面對的目標設備是移動電話。J2ME平臺可以通過添加可選包(OptionalPackage)進行擴展,可選包是針對特殊的技術的實現,因此它是定位的是特定范圍的設備,而不是和作為一項特定定義在MIDP中。比較常見的可選包有無線消息API(WirelessMessageAPI,JSR120)、移動多媒體API(MobileMediaAPI,JSR135)和WEB服務API(WebServiceAPI,JSR172)等等。隨著移動終端設備內存和處理能力的提高,越來越多的可選包被添加到具體的J2ME平臺上[5]。1.2.2經濟可行性在經濟方面,初步從成本來看,做這個游戲,主要是耗費人力,至于財力方面,不需要投入什么,只要游戲能夠在通用游戲平臺里運行就幾乎很成功了;從系統的經濟效益來看,估計它一定可以超過游戲本身所開發(fā)的成本。理由有三個方面:其一是龐大的潛在用戶群,現在全球數十億部移動電話正在被使用,并且這個數目正在逐漸增加。移動游戲潛在的市場比其它任何平臺,比如Playstation3和XBOX360都要大;其二是便攜性,人們可以隨時隨地玩他們選擇的游戲。與現在的游戲控制臺或者個人電腦相比,手機可能不是一個好的游戲設備,但是人們基本上是隨時隨刻都把它們帶在身邊。在他們離開家的時候或者想玩的時候,開發(fā)者應該為他們提供好玩的游戲;其三連連看這個游戲通俗易懂,簡單方便,老少皆宜,相信會有更多的人喜歡這款小游戲的。1.2.3操作可行性在操作方面,采用簡單的操作方式和必要的幫助說明,讓用戶一看就知道如何操作,主要有四個方向鍵(2,4,6,8),一個確認鍵(5),主要用數據結構中的相關算法來實現。初步設想,此游戲的操作方式基本上都可以實現的1.3實現上的困難1.3.1不同的屏幕尺寸問題圖形是游戲的一個關鍵的方面,描畫速度是一個重要的程序函數。不同于控制臺游戲和PC游戲,移動設備沒有標準的屏幕尺寸或者長寬比,這就導致了很多兼容性問題[41]。開發(fā)者可以通過編寫非常靈活的背景和前景描畫程序來解決這個問題。關鍵是創(chuàng)建一個允許快速擴展或者縮小游戲視窗的架構,并且不使圖像變形或者生成讓人看上去覺得別扭的屏幕比例。當然,我們有很多方法來處理這個問題,最壞的情況就是可以為每種手機的顯示屏重新設計圖形?;蛘撸€可以動態(tài)地調節(jié)你的游戲背景和其它圖形。1.3.2手機內存過小的雖然在一些新款智能手機上可以運行幾兆字節(jié)的應用程序,但大部分手機只有很小的內存空間供應用程序使用。此外,對可運行的應用程序的大小還有來自運營商的其他限制。1.3.3顯示速度方面的等待時間(機器發(fā)出請求和接到響應之間所花費的時間)在計算機上是以微秒計算;在有線因特網上是以毫秒計算;而在無線網絡上則要以秒計算。在移動游戲開發(fā)過程中,最大的問題是缺乏對顯示速度的重視。雖然移動運營商已經選擇了強大的處理器和彩色的顯示屏,但是他們忽略了對于游戲來說至關重要的一個方面。手機使用許多繪制程序,一些支持雙緩沖技術,而另一些不支持。在某些情況下,可以更容易的直接繪制到屏幕上。直接繪制到屏幕有時比雙緩沖更快。然而,使用低刷新速率在屏幕上繪制大的圖像可能會引起閃爍。造成這一問題的原因在于,畫面在顯示的同時,程序又在改變它,于是畫面閃爍。1.3.4可中斷性的當需要接聽或撥打電話時,我們通常會中斷進行中的游戲,游戲程序必須能夠暫停和繼續(xù)。這樣的暫停既不能造成游戲問題(例如,游戲者在打電話的時候游戲時間仍然在減少,造成玩家游戲時間不夠,導致玩家輸掉游戲),也不可以導致內存溢出。這些都是開發(fā)者需要在設計時給予充分考慮的問題。1.4本課題實現的意義手持設備上的游戲擁有龐大的用戶群體,現在全球有十幾億部移動電話正在被使用,并且這個數目還在不斷增加。在許多國家,擁有手機的人數比擁有計算機的人數更多。手持移動游戲潛在的市場比其它任何平臺都要大得多。由于手機游戲良好的便攜型,可以讓用戶在打發(fā)在旅途中和等人等車時候的無聊時間進行游戲,因此人們可以隨時隨地玩他們選擇的游戲,不受地域限制是手機游戲相比電腦最大的優(yōu)勢。因此過于復雜和耗時過長的游戲并不是手持設備未來的發(fā)展方向,用戶需要隨時可以開始和停止游戲,簡單而充滿樂趣的游戲才是最受手持設備用的青睞的游戲。第二章開發(fā)環(huán)境介紹和系統分析概述2.1系統的運行環(huán)境和開發(fā)平臺2.1.1Java語言特點1平臺無關性Java引進虛擬機原理,并運行于虛擬機,實現不同平臺之間的Java接口。Java的數據類型與機器無關。2安全性Java的編程類似C++,但舍棄了C++的指針對存儲器地址的直接操作,程序運行時,內存由操作系統分配,這樣可以避免病毒通過指針入侵系統。它提供了安全管理器,防止程序的非法訪問。3面向對象Java吸收了C++面向對象的概念,將數據封裝于類中,實現了程序的簡潔性和便于維護性,使程序代碼可以只需一次編譯就可反復利用。4分布式Java建立在TCP/IP網絡平臺上,提供了用HTTP和FTP協議傳送和接收信息的庫函數,使用其相關技術可以十分方便的構建分布式應用系統。5健壯性Java致力與檢查程序在編譯和運行時的錯誤,并自動回收內存,減少了內存出錯的可能性。Java取消了C語言的結構、指針、#define語句、多重繼承、goto語句、操作符、重載等不易被掌握的特性,提供垃圾收集器自動回收不用的內存空間。通過集成的面向對象異常處理機制,在編譯時,Java提示出可能出現但未被處理的異常,幫助程序員正確地進行選擇以防止系統崩潰。6多線程多線程機制使應用程序能夠并行執(zhí)行,而且同步機制保證了對共享數據的正確操作。通過使用多線程,程序設計這可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環(huán)機制,這樣就很容易地實現網絡上的實時交互行為。7動態(tài)性Java的設計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且,Java通過接口來支持多重繼承,使之比嚴格的類繼承具有更靈活的方式和擴展性。2.1.2硬件設備測試手機需要支持JAVA應用程序,支持CLDC1.1和MIDP2.0,支持MIDI音樂播放。彩色屏幕。硬件需要對多線程提供良好支持,支持無線網絡連接。測試手機Nokia612.1.3系統開發(fā)平臺電腦配置:Intel(R)Core(TM)DuoCPUT2250@1.73GHz1.31GHz,512M的內存操作系統:MicrosoftWindowsXPHomeEdition版本2002ServicePack2程序語言:Java2開發(fā)包:Java(TM)2StandardEdition(6.0) SunMicro.J2MEWirelessToolKit2.5.2測試手機:nokia6130C2.1.4關于WirelessToolkitWTK(WirelessToolkit)是Sun公司針對J2ME推出的用于手機和Palm等移動設備的開發(fā)包,是除手機廠商的專用開發(fā)包外唯一的手機模擬器開發(fā)包。它通用性高,開發(fā)出的應用程序可保證能運行在大部分設備上,而不像專用廠商具有一定的不兼容性。雖然它沒有強大的功能和完善的調試手段,但它提供運行模擬器的最基本組件,是其他IDE需集成采用的必備元素。界面如圖2.1所示圖2.1WTK界面SunJava(TM)WirelessToolkit的目錄結構見表2.1。表2.1SunJava(TM)WirelessToolkit的安裝目錄目錄包含的內容{Install}/apps使用SunJava(TM)WirelessToolkit創(chuàng)建的工程源代碼、資源和配置文件將存放在這里。此外,SunJava(TM)WirelessToolkit所自帶的例子程序也存放在這里{Install}/bin存放著CLDC和MIDP以及SunJava(TM)WirelessToolkit的執(zhí)行程序。這些文件能完成編譯、校驗和運行的任務{Install}/lib/midpapi.zipCLDC和MIDP的類庫包{Install}/docs包含CLDC、MIDP和SunJava(TM)WirelessToolkit的幫助文檔2.1.5J2ME集成開發(fā)工具J2ME集成開發(fā)工具市場上存在多種J2ME平臺,針對如此多樣化的環(huán)境,各家廠商都會推出屬于自己的開發(fā)工具。針對這種情況,工具廠商提供了集成開發(fā)工具,讓開發(fā)人員可以在統一環(huán)境下,隨時抽換開發(fā)時或測試時所使用的底層開發(fā)工具。Eclipse:Eclipse是一個開發(fā)源代碼的、基于java的可擴展開發(fā)平臺。Eclipse本身只是一個框架和一組響應的服務,并不能夠開發(fā)什么程序。在Eclipse中幾乎每樣東西都是插件,實際上正是運行在Eclipse平臺上的種種插件提供我們開發(fā)程序的各種功能。同時各個領域的開發(fā)人員通過開發(fā)插件,可以構建與Eclipse環(huán)境無縫集成的工具。EclipseME作為Eclipse一個插件,致力于幫助開發(fā)者開發(fā)J2ME應用程序。EclipseME并不為開發(fā)者提供無線設備模擬器,而將各手機廠商的實用模擬器緊密連接到Eclipse開發(fā)環(huán)境中,為開發(fā)者提供一種無縫統一的集成開發(fā)環(huán)境。2.2系統需求分析2.2.1需求分析基礎知識需求分析是軟件生命周期的一個重要階段,它最根本的任務是確定為了滿足用戶的需要系統必須做什么。具體的說,應該確定系統必須具有的功能和性能,系統要求的運行環(huán)境,并且預測系統發(fā)展的前景;必須仔細分析系統中的數據,既要分析系統中的數據流又要分析長期使用的數據儲存。通過分析應該得出用數據流圖、ER圖、數據字典和簡潔的算法描述所定義的詳細的系統邏輯模型。圖形工具比文字敘述能更好地表達重要的細節(jié),數據流圖能夠極好地概括描述一個系統的信息。ER圖能直觀、準確地描繪系統的數據要求。數據字典也是重要的,數據是把一個系統的各個組成元素連接在一起的“黏合劑”,為了成功地把所有系統元素連接起來,這些元素必須共享公共的數據定義,數據字典正是這些數據定義的集合。算法同樣是重要的,分析的目的是確定系統必須做什么,廣意的說,任何一個計算機系統的基本功能都是把輸入數據轉變成輸出信息,算法定義了轉變的規(guī)則。因此,沒有對算法的了解就不能確切知道系統必須做什么。軟件的需求分析是從用戶的業(yè)務中提取出軟件系統能夠幫助用戶解決的業(yè)務問題,通過對用戶業(yè)務問題的分析,規(guī)劃出我們的軟件產品。這個步驟是對用戶業(yè)務需求的一個升華,是一個把用戶業(yè)務管理流程優(yōu)化,轉化為軟件產品,從而提升管理而實現的質的飛躍,這一步是否成功,直接關系到開發(fā)出來的軟件產品能否得到用戶認可,順利交付給客戶,客戶能否真正運用我們的產品幫助他解決業(yè)務或管理問題。需求分析的結果是軟件開發(fā)的基礎,必須仔細驗證它的正確性,開發(fā)人員必須和用戶取得完全一致的意見,需求分析的文檔應該被用戶所確認。然而這并不意味著分析員應該不加分析地全盤接受用戶提出的所有要求,對用戶提出的籠統要求應該加以細化,對用戶提出的含混要求需要進一步澄清,對用戶提出的不切實際的要求必須做深入細致的解釋說服工作,以便動員用戶放棄不合理的要求。為了提高軟件質量,確保軟件開發(fā)成功,降低軟件開發(fā)成本,一旦對目標系統提出一組要求之后,必須嚴格驗證這些需求的正確性。一般來說,應該從以下述四個方面進行驗證:一致性所有需求必須是一致的,任何一條需求不能和其他的需求矛盾。完整行需求必須是完整,規(guī)格說明書應該包括用戶需要的每一個功能或者性能?,F實性指定的技術應該是用現有的硬件技術和軟件技術基本上可以實現的。對硬件技術的進步可以做些預測,對軟件技術的進步則很難做出預測,只能從現有的技術水平出發(fā)判斷需求的現實性。有效性必須證明需求是正確有效的,確實能解決用戶面對的問題。需求分析階段的具體任務包括以下幾個方面:確定對系統的綜合要求(包括系統功能要求、系統性能要求、運行要求、將來可能提出的要求。)、分析系統的數據要求、導出系統的邏輯模型、修正系統的開發(fā)計劃、開發(fā)原型系統。1.于需求分析的軟件工具應該滿足以下幾點要求:必須有形式化的語法(或表),因此可以用計算機自動處理使用這種語法說明的內容;2.使用這個軟件工具能夠導出詳細的文檔;3.必須提供分析(測試)規(guī)格說明書的不一致性和冗余性的手段,并且應該能夠產生一組報告指明對完整性分析的結果;4.使用這個軟件工具之后,應該能夠改進通信狀況。如圖2.2圖2.2軟件需求各組成部分關系2.2.2系統的綜合要求能夠通過控制鍵盤上的方向鍵來控制光標的移動,使用回車鍵選中光標所在位置的圖片,以特殊方式顯示;再次以光標選擇其他圖片,若該圖片與被選中的圖片圖案相同,且把第一個圖片到第二個圖片連起來,中間的直線不超過3根,則消掉這一對圖片,并且分數增加;否則第一個圖片恢復成未被選中狀態(tài),而第二個變成被選中狀態(tài)。能夠通過暫停、退出按鈕控制游戲的暫停和退出。該游戲還可以讓用戶選擇游戲的難度,隨著難度的增加,并且游戲還能記錄游戲的最高分,并且提供用戶查詢最高分。2.2.3為了便于游戲者操作,游戲的界面簡潔明了,控制區(qū)和操作區(qū)分別在游戲界面的上部分和下部分,這樣游戲者不至于在進行游戲時搞混。控制區(qū)由一排按鈕組成,里面包括游戲的模式選擇,游戲的開始、暫停,游戲成績分數點,游戲的幫助主題以及游戲的設置選項。游戲開始由函數調用來完成游戲圖片的加載,隨機產生圖片排列。游戲操作區(qū)是用手機的上下左右鍵來控制圖片的移動,用中間鍵作為選中鍵,當連續(xù)選定兩個相同圖片后,且兩者的連線在算法允許消去的范圍內,則消去這兩個相同的圖形。當游戲者一時找不到可消去的相同的圖片時,就可以利用控制區(qū)中的提示按鈕,則會隨機的產生一對可消去的圖片。當游戲中還有圖片且不可消去時,則可利用控制區(qū)中重新洗牌按鈕,則會把存在的圖片打亂后重新組合,就可以繼續(xù)游戲。游戲0層數據流圖如圖2.3所示。圖2.30層數據流圖選擇游戲模式開始新游戲開始游戲暫停游戲退出游戲游戲設置最高分幫助退出系統數據模型如圖2.4用戶用戶圖片游戲時間游戲得分光標坐標圖片坐標選中標識畫線標識圖2.4系統數據模型(E-R圖)2.2.4游戲開發(fā)環(huán)境的需求為了游戲者安裝的方便以及游戲的兼容性,考慮到游戲者大多數用的都是Windows操作系統,游戲在Windows操作系統下開發(fā),把游戲的兼容性問題降低到最低限度。游戲是Jbuilder的環(huán)境下開發(fā)的。2.2.5可靠性、可用性需求系統在設計時應注意設計風格統一,使系統可調試性良好,盡可能把系統錯誤消滅在調試階段,系統一旦交付使用,就應該有很好的可靠性。玩家:按照提示進行游戲。只關心可玩性和速度,不需要了解程序內部結構,軟件具有很好的可用性。2.2.對于任何硬件或軟件系統來說,都不可避免的會存在問題,當機器或者軟件出現故障的時候,就應要有可靠的辦法來解決才行。2.2.硬件接口無軟件接口鍵盤控制對應的聲音圖形的相應處理。2.2.8將游戲的界面更加美化。用戶可以保存游戲并且根據保存的信息可以重新載入游戲。第三章游戲的總體設計及詳細設計從工程管理的角度來看,軟件設計分兩步完成。概要設計,將軟件需求轉化為數據結構和軟件的系統結構。詳細設計,即過程設計。通過對結構表示進行細化,得到軟件的詳細的數據結構和算法[6]。3.1游戲的總體設計總體設計通常由系統設計和結構設計兩個階段組成。其中系統設計階段確定系統的具體實現方案,結構設計階段確定軟件的結構,包括設想供選擇的方案(取得數據流圖中處理分組的各種可能的方法)、選取合理的方案、推薦最佳方案、功能分解、設計軟件結構等步驟。3.1.1總體設計的設計原則1、模塊化模塊化設計是把大型軟件按照規(guī)定的原則劃分為一個個較小的、相對獨立但又相關的模塊的設計方法,軟件系統的模塊化是指整個軟件被劃分成若干單獨命名和可編址的部分,稱之為模塊。這些模塊可以被組裝起來以滿足整個問題的需求。把問題/子問題的分解與軟件開發(fā)中的系統/子系統或系統/模塊對應起來,就能夠把一個大而復雜的軟件系統劃分成易于理解的比較單純的模塊結構。2、抽象軟件系統進行模塊設計時,可有不同的抽象層次。在最高的抽象層次上,可以使用問題所處環(huán)境的語言概括地描述問題的解法。在較低的抽象層次上,則采用過程化的方法。在設計過程中,從系統定義到實現,每進展一步都可以看做是對軟件解決方法的抽象化過程的一次細化。在軟件需求分析階段,用“問題所處環(huán)境的為大家所熟悉的術語”來描述軟件的解決方法。在從概要設計到詳細設計的過程中,抽象化的層次逐次降低。當產生源程序時到達最低抽象層次。3、逐步求精逐步求精方法是由Wirth提出的一種早期的自頂向下的設計策略。面對現實的復雜問題,我們首先不要一下子就力圖觸及到問題解法的細節(jié),而應當先從問題的全局出發(fā),用較自然的抽象語句來表示問題,從而得到抽象算法。這時的算法主要是描述“做什么”,或者說是把問題描述為幾個子問題或子功能。接下來對子問題,也就是對抽象算法進行細化,在這一階段設計的算法中,已經開始含有程序設計語言的成分。隨著算法的不斷細化,越來越多地開始完成“如何做”,算法中程序設計語言的成分也越來越多,當最后把算法全部細化為程序設計語言描述時,程序設計也就隨之完成了.4、信息隱藏和局部化信息隱蔽是指,每個模塊的實現細節(jié)對于其它模塊來說是隱蔽的。也就是說,模塊中所包含的信息(包括數據和過程)不允許其它不需要這些信息的模塊使用。5、模塊獨立一個完整的模塊應當有以下幾部分:①執(zhí)行規(guī)定的功能的部分;②出錯處理的部分。當模塊不能完成規(guī)定的功能時,必須回送出錯標志,出現例外情況的原因。③如果需要返回一系列數據給它的調用者,在完成數據加工或結束時,應當給它的調用者返回一個結束狀態(tài)標志。3.1.2游戲的總體設計本系統在主菜單界面上采用Screen類提供的高級界面。游戲界面采用Canvas類提供的低級界面開發(fā)。Screen是高級圖形用戶界面,從Screen派生的如TextBox,List,Form不需要我們自己繪制,只需制定合適的參數,系統就會將標題、文本框、滾動條等自動繪制出來。在繪制開始菜單等界面上滿足了實際的需求,同時實現了很大的便捷。Canvas則正好相反,它是一個低級圖形用戶界面,在手機界面大小的范圍內,我們可以控制任意像素的繪制,顯示效果完全取決于我們設計的代碼,這在游戲的開發(fā)中是必不可少的。Socket原先是Unix系統中的概念,后來在網絡編成中廣泛應用。在用J2ME進行手機游戲開發(fā)中,將Socket類和ServerSocket類分別用于Client端和Server端,在任意兩臺機器間建立連接。3.1.3程序流程MIDP規(guī)范中定義了MIDlet的生命周期,以及可以存在的三種狀態(tài),包括Paused、Active以及Destroyed,每一個MIDlet在任何時刻只可能處于其中的一個狀態(tài)。這三種狀態(tài)的轉換關系如圖3.1所示:MIDlet有三個狀態(tài),分別是pause、active和destroyed。在啟動一個MIDlet的時候,應用管理軟件會首先創(chuàng)建一個MIDlet實例并使得他處于pause狀態(tài),當startApp()方法被調用的時候MIDlet進入active狀態(tài),也就是所說的運行狀態(tài)。在active狀態(tài)調用destroyApp(booleanunconditional)或者pauseApp()方法可以使得MIDlet進入destroyed或者pause狀態(tài)[7]。如圖3.1圖3.1Midlet流程值得一提的是destroyApp(booleanunconditional)方法,事實上,當destroyApp()方法被調用的時候,AMS通知MIDlet進入destroyed狀態(tài)。在destroyed狀態(tài)的MIDlet必須釋放了所有的資源,并且保存了數據。如果unconditional為false的時候,MIDlet可以在接到通知后拋出MIDletStateChangeException而保持在當前狀態(tài),如果設置為true的話,則必須立即進入destroyed狀態(tài)。本程序運行程序后允許用戶選擇執(zhí)行選項菜單,在開始游戲后將先從外部文件圖片文件,進行繪圖。在程序運行的主線程中,畫面刷新將以一定的頻率對屏幕重繪,實時反映整個游戲的進行狀態(tài)。游戲開始后先繪制圖片,并將個圖片成對出現,隨機排列。對光標進行監(jiān)聽,當選中某圖片時,對其特殊顯示,選中第二張圖片時候,對兩個圖片進行比對,相同時,調用畫線程序,并將圖片消去;否則取消圖片的特殊標識。3.1.4本程序中的幾項的技術1.Canvas類Canvas是MIDP提供的低級用戶界面類。和高級用戶界面相比,Canvas擁有更大的靈活性。由于Canvas不提供任何現成的可視化組件,所有在Canvas顯示的圖形和文本都必須通過Graphics繪制出來。因此,開發(fā)人員可以完全獲得界面控制能力,能精確控制每一個像素的位置,在游戲開發(fā)中,這是必不可少的。Canvas提供了鍵盤事件,并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數。鍵盤事件由鍵代碼指定,但這樣控制游戲會導致缺乏通用性,并不是每個設備的鍵盤布局都適合游戲的操作。應當將鍵代碼轉換為游戲鍵的代碼,以便硬件開發(fā)商能定義他們自己的游戲鍵布局。2.Graphics類Graphics是javax.microedition.lcdui包中用于繪制簡單2D圖形的類[8]。它具有24位深度色彩的繪制能力,以三原色分別各占一個字節(jié)表示其顏色。程序只能在paint()函數中使用Graphics繪制。文本的繪制是基于定位點操作的。定位點的最大作用就是最小化計算文本繪制位置所需的工作量。定位點是由三個水平常量(LEFT,HCENTER,RIGHT)和三個垂直常量(BOTTOM,BASELINE,TOP)組合而成的,組合的方式按照“或”操作。數字零也可以做定位點的值,它代表的組合方式是TOP|LEFT。在Graphics中還定義了一個垂直常量VCENTER,但是它不能用于繪制文本。一般認為文本的垂直居中沒有意義,而且也很難實現[9]。但是VCENTER可以用于繪制圖片的drawImage()方法[10]。繪制圖片的方法與文本非常類似,不同的是由于圖片沒有基線(baseline)的概念,因此在繪制圖片時不能使用BASELINE常量。3.RMS數據庫系統MIDP為MIDlets提供了一種永久存儲和后來讀出數據的數據庫解決方案,被稱為RecordManagermentSystem(RMS),是一種類簡單的基于記錄的數據庫[11]。很顯然,手機上的數據庫系統不可能有PC上的強大功能。微小的存儲空間也限制了它們的結構不能過于復雜。RMS是專門針對移動設備的服務的。RMS包中包括RecordStore類。在一個MIDletsuite包里的所有MIDlet都允許創(chuàng)建多個記錄集,只要它們賦有不同的名稱。當MIDlet包從平臺中被移除后,所有與該包有關的的記錄集都同時會被移除。同一個包內的MIDlets可以直接互相訪問它們的記錄集,不同包內也可產生共享,但這需要有包的授權屬性決定。訪問模式會在準備提供共享的RecordStore被建立時被創(chuàng)建。訪問模式允許私有使用或訪問。記錄是字節(jié)數組。開發(fā)者可以利用InputStream的派生類DataInputStream、DataOutputStream以及ByteArrayInputStream、ByteArrayOutputStream將不同種類的數據類型打包,以字節(jié)流的形式發(fā)送和接收。區(qū)別記錄的唯一標記是他們的ID值,作為記錄集的主鍵。第一項記錄的ID是1,其后的每個記錄ID遞增。Record是以字節(jié)為基本單位來存放的,所以所有要寫入record的數據都必須先將其轉為字節(jié)才能寫入,從record所讀出來的數據也是字節(jié),必須將其轉換為原先寫入時的數據類型才有意義。然而讀取或寫入的字節(jié)數組都只能代表一個字段的信息,如果需要讀取或寫入多個字段就必須要將數據轉換成字節(jié)信息,并且提供適當的機制來分隔這些信息。3.1.5PNG圖片格式PNG(PortableNetworkGraphics)格式是MIDlet唯一支持的圖象格式[12],PNG具體格式由PNGSpecification,Version1.0定義的。PNG格式提供透明背景的圖象,這對繪制游戲畫面和被操縱主角極有幫助。物體之間重疊時最上層圖片也不會覆蓋超過其有效象素外的部分。3.1.6混淆器(Obfuscator)的使用Java語言并沒有完全編譯成二進制可執(zhí)行文件,編譯出的.class文件是一種介于源程序和二進制之間的一中基于半解釋的字節(jié)碼,需要虛擬機來執(zhí)行。它包括了所有的信息。然而這樣會導致.class很容易被反編譯為源代碼,從而不能保護作者的知識成果。目前流行的如decode,JAD等反編譯工具可以以很快的速度生成源文件。如果不加以施行有效的措施,將造成嚴重的后果。由此引入混淆器的概念?;煜鲗⒋a中的所有變量、函數、類的名稱變?yōu)楹喍痰挠⑽淖帜复?,如果缺乏相應的函數名指示和程序注釋,即使被反編譯,也將難以閱讀?;煜鞯淖饔貌粌H僅是保護代碼,它也有精簡編譯后程序大小的作用。由于以上介紹的減少變量、函數的命名長度的關系,編譯后也會從.class文件中減少這些冗余的信息?;煜?,體積大約能減少25%。3.2游戲的詳細設計3.2.1詳細設計的介紹詳細設計以總體設計階段的工作為基礎的,但又不同于總體設計,主要表現為以下兩個方面:(1)在總體設計階段,數據項和數據結構以比較抽象的方式描述,而詳細設計階段則應在此基礎上給出足夠詳細描述。(2)詳細設計要提供關于算法的更多的細節(jié)。1.詳細設計的任務(1)確定每個模塊的算法。
(2)確定每一個模塊的數據組織。
(3)為每個模塊設計一組測試用例。
(4)編寫詳細設計說明書。2.詳細設計的原則(1)模塊的邏輯描述正確可靠、清晰易讀。(2)采用結構化程序設計方法,改善控制結構,降低程序復雜度,提高程序的可讀性、可測試性和可維護性。3.2.2界面的詳細設計游戲的界面分為控制區(qū)和操作區(qū),控制區(qū)是整個游戲的控制按鈕的集中區(qū)域,操作區(qū)是游戲者進行游戲的場所。控制區(qū)中有以下一些按鈕:開始游戲按鈕:進入游戲開始界面,玩游戲顯示分數點數與所用時間。放棄游戲按鈕:放棄本局游戲,進行游戲模式選擇重新開始游戲。退出按鈕:退出游戲程序。重新洗牌按鈕:把游戲中的圖片重新排列。暫停按鈕:暫停游戲。游戲說明按鈕:游戲規(guī)則的說明。操作區(qū)是游戲者進行游戲的場所,游戲的規(guī)則很簡單,就是用不超過兩次轉折的連線把兩個相同的圖片連起來,直到把游戲畫面中的圖片消完為止。游戲采用GameMap類,用來加載圖片和連連看的核心算法來選擇圖片選中以及消除圖片的算法,用GameCanvas來接收手機鍵盤消息來消除圖片和重畫地圖,用UITimer與GameCanvas來控制時間來計算游戲時間與判斷是否能成功完成游戲通關。如圖3.2圖功能的詳細設計功能的詳細設計主要采用程序流程圖作為工具來闡述。程序流程圖是詳細設計的一種工具,能指明控制流程、處理過程、數據組織以及其他的方面的實現細節(jié),從而在編碼階段能把對設計的描述直接翻譯成程序代碼。程序流程圖一直是軟件設計的主要工具,優(yōu)點是對控制流程的描繪很直觀,便于初學者掌握。游戲結束時的判斷這個主要表現兩個問題:每一次消去圖片后,均將相應位置的flag數組元素置0,且遍歷flag數組是否為0。如果全部為0,則游戲結束。當游戲結束時,直接向玩家發(fā)送gameover指令。解決的辦法:首先,每次消去圖片后僅將圖片數目(gamevalue變量控制)減2,當為0時,將gameover變量設為真值。而每次都向函數發(fā)送圖片數目,當圖片數目值為0時,即判斷玩家已經勝利。如圖3.3自動游戲自動游戲開始游戲退出游戲暫停游戲圖3.3第四章程序的分析和具體實現4.1游戲進入前的選擇每個MIDlet程序都必須有一個主類,該類必須繼承自MIDlet。它控制著整個程序的運行,并且可以通過相應函數從程序描述文件中獲取相關的信息。該類中擁有可以管理程序的創(chuàng)建、開始、暫停(手機中很可能有正在運行程序卻突然來電的情況,這時應進入暫停狀態(tài)。)、結束的函數。本程序主類為MainMIDP,并實現接口CommandLIstener。首先顯示的是游戲的背景介紹(圖3.2),為此,在類MainMIDP定義Form類對象m_frmMain,在startApp()函數中判斷是否為剛進入游戲,如果為假的話,將創(chuàng)建Form類的實例,并且調用append()方法在表單上放置m_MainList菜單。調用setCommandListener()命令使Form與CommandListener建立關聯。調用Displayable顯示。圖3.2游戲背景介紹seturrent()函數顯示背景介紹窗口。當玩家點擊ok后將調用display.setCurrent(m_MainList)以顯示游戲菜單m_MainList(圖3.2)。當玩家按住上或下鍵時,在函數keyPressed(intcode)中的整型變量menuIndex相應的減1或加1,相應的,在paint()函數中會根據menuIndex繪制選項是否被選中。當移動選項條到某項,并點擊ok時,在commandAction()方法中根據menuIndex開始游戲游戲幫助游戲設置最高分退出MainMIDP類主要關系流程圖例如當選擇“游戲幫助”時,將調用MainMIDP類中的commandAction()方法以顯示“游戲幫助”界面。如圖4.1圖4.1操作區(qū)是游戲者進行游戲的場所,游戲的規(guī)則很簡單,就是用不超過兩次轉折的連線把兩個相同的圖片連起來,直到把游戲畫面中的圖片消完為止。游戲采用GameMap類,用來加載圖片和連連看的核心算法來選擇圖片選中以及消除圖片的算法,用GameCanvas來接收手機鍵盤消息來消除圖片和重畫地圖,用UITimer與GameCanvas來控制時間來計算游戲時間與判斷是否能成功完成游戲通關。如圖4.2圖4.24.2游戲邏輯及幾個重要類的實現4.2.1GameCanvas類所實現的功能畫游戲屏幕的時間間隔:privateintm_paintTime;玩得時間計數:privateintm_timeCount;一局游戲總共花費的時間:privateintm_GameTimeCount;定時次調用次數計數:privateintm_timeMcount;顯示地圖裝載效果狀態(tài)計數:privateintm_IniGameMapCount;畫連接線標志privatebooleanm_bPaintCleanFlag;privatebooleanm_bPaintCleanStart;privateintm_iPaintCleanCount;游戲運行狀態(tài)標志:privateintm_StatusFlag;0:游戲圖片文件裝載過程,在程序啟動的時候,另外一線程裝載。1:游戲地圖文件初始化狀態(tài),出現地圖初始化的效果2:游戲進行中,檢查剩下時間,調整狀態(tài)條,顯示分數等信息3:單節(jié)游戲結束,處理是否繼續(xù)游戲、退出游戲、保存記錄;4:一局游戲結束,顯示畫面慶祝游戲地圖信息:privateGameMapm_gameMap;接收鍵盤狀態(tài)信息,調用keyPressed()函數來消除相同圖片后的設置以及畫面的重畫。并調用GameMap類來進行游戲算法和規(guī)則的調用與判斷。4.2.2地圖的創(chuàng)建由于手機存儲空間的限制,不可能將整張地圖完整地存儲在手機中,為了節(jié)約空間,往往提出地圖中相同的圖片組成一張PNG格式的圖片,然后象拼圖一樣拼出地圖來,專業(yè)的游戲設計者往往自己寫一個地圖編輯器,以使拼圖過程不是那么痛苦。創(chuàng)建地圖就需要使用TiledLayer。TiledLayer指的是由一塊一塊類似用瓷磚拼湊起來的畫面。地圖實際即為TiledLayer的一個對象。先利用TiledLayer的構造函數建立TiledLayer,根據構造函數的參數可以給定Cell數組的大小,并且地圖圖片切割成等尺寸的畫面,并調用setCell()設置具體的圖象格內容。
因此,創(chuàng)建一個返回TtiledLayer的方法createBackGround(),以便在gameScreen()的構造函數中調用。在方法中,定義整型數組map1[]以存儲Cell的索引值。并使用tiledLayer.setCell(column,row,map1[i])設定TtiledLayer的內容,以形成地圖。其中i的值由循環(huán)for(inti=0;i<map1.length;i++)取得,column由語句column=i%15取得、行由row=(i-column)/15取得。畫出地圖后,由lm.append()將地圖添加到LayerManager類對象lm中。由于地圖位于Layer的最低層,即離用戶視線最遠的層,所以Tiledlayer最后一個被添加到lm中。4.2.3地圖的移動根據游戲的設定,游戲中選圖片是向下向上移動的,實現此功能的方法;publicintRoleMove(intGameAction){intiRtn;iRtn=0; switch(GameAction){ caseCanvas.LEFT: if((m_role_x-1)>=1){ { m_role_x--; } } iRtn=1; break; caseCanvas.RIGHT: if((m_role_x+1)<stMap_x-1){ { m_role_x++; } } iRtn=1; break; caseCanvas.UP: if((m_role_y-1)>=1){ { m_role_y--; } } iRtn=1; break; caseCanvas.DOWN: if((m_role_y+1)<stMap_y-1){ { m_role_y++; } } iRtn=1; break; caseCanvas.FIRE: //是否在空區(qū)域做了選擇動作 if(m_map[m_role_y][m_role_x]==ISEMPTY) break; if(!m_SelectOne){ //第一次選擇 m_select_x=m_role_x; m_select_y=m_role_y; m_SelectOne=true; }else{ //是否重復點,如果重復點,取消上次所選擇的 if((m_select_x==m_role_x)&&(m_select_y==m_role_y)){ m_SelectOne=false; break; } //第二次選擇 if((m_map[m_select_y][m_select_x]==m_map[m_role_y][m_role_x]) &&(!m_cleanFlag))//還沒有處理完已經連接好的塊 {if(CheckPoint(m_select_x,m_select_y,m_role_x,m_role_y)==0){ m_SelectOne=false; //選擇的與規(guī)則相符 m_cleanFlag=true; m_cf_sx=m_select_x; m_cf_sy=m_select_y; m_cf_ex=m_role_x; m_cf_ey=m_role_y;iRtn=2; m_iLeaveImageCount=m_iLeaveImageCount-2; break; } } //選擇的不合符規(guī)則 m_select_x=m_role_x; m_select_y=m_role_y; m_SelectOne=true; } iRtn=1; break; default: iRtn=0;}returniRtn; };4.2.4關于commandAction()方法和paint()方法每個創(chuàng)建Command實例的J2ME的應用程序也必須創(chuàng)建實現CommandListener接口的實例。每當用戶通過commandAction()方法的方式與命令進行交互的時候,就會通過CommandLIstener.所以實現CommandListener的類必須實現commandAction()方法。
在commandAction()方法中,使用getabel()方法獲取命令的標簽。如果getLabel()=“暫?!睍r,表示玩家點擊了暫停鍵,此時,conti賦值為false,游戲畫面的繪制及游戲相關的運算暫停,并且,使用removeCommand(c)語句將“暫?!币瞥?,使用addCommand(newCommand("繼續(xù)",Command.OK,2));將”繼續(xù)“按紐”添加進來。當玩家點擊“繼續(xù)“時,conti賦值為true,并且,一定要調用start()方法,否則繼續(xù)功能不可用。必須調用start()方法的原因是:J2ME的線程已stop()方法拿掉,如果想停止線程的運做,就必須依靠一個旗標(flag),在本程序中,flag就是boolean型變量conti。所以一旦此標識變量被設為false,那么while(conti)循環(huán)就會結束,線程也會跟著結束。當用戶按下“繼續(xù)”的時候,start()將重新產生一個線程繼續(xù)執(zhí)行相關的運算和畫面繪制。在方法paint()過程中,除了要重繪地圖、圖片外還要在上方繪制關卡信息、玩家分數點、及所用時間等。首先使用lm.setViewWindow()和lm.paint()設定可視范圍ViewWindow和從哪里畫起(見4.3.3)。其次,使用g.drawString()繪制屏幕上方的關卡信息、戰(zhàn)績、玩家剩余生命標志。當每次刷新繪圖頁面時,應使用GameCanvas的flushGraphics()將屏幕后臺的緩沖區(qū)內的圖像刷新到前臺來(flushGraphics()應該寫在paint(){}的最后)。4.2.5記錄系統-最高分記分系統的功能采用的是手機專用的一種簡化的數據庫RMS。RecordStore等同于數據庫系統中的表(table)。程序中需要用到的接口是javax.microedition.rms.RecordStore。游戲結束需要對游戲的分數進行記錄時,需要先創(chuàng)建記錄集,mfirst.addCommand(m_Frm_Help_Back); Stringfs="0"; byte[]f=fs.getBytes(); RecordStorers=null; try{ rs=RecordStore.openRecordStore("firstman",true); if(rs.getNumRecords()==0){ rs.addRecord(fs.getBytes(),0,fs.getBytes().length); } else{ f=rs.getRecord(0); fs=newString(f); }在每個Midlet包中RecordStore的名字必須是唯一的。然后通過輸出流將需要進行存儲的數據,游戲的高分紀錄存入byte數組,并以字節(jié)流的方式存入記錄集中,最后關閉流對象,關閉記錄集。當需要查看游戲的高分榜時,在游戲的主菜單中進入游戲的最高紀律查看,首先打開記錄集,創(chuàng)建輸入流對象,并對數據進行恢復,將游戲的高分附值給臨時變量,并在屏幕上予以顯示。然后依次關閉流對象,關閉記錄集。第五章系統測試與安裝5.1游戲安裝使用Eclipse完成代碼的調試之后,需要使用WTK生成包(即jar和jad文件),其過程如下:首先,使用WTK的新建項目功能建立一個新項目,要求與Eclipse工作區(qū)下的項目名稱、MIDlet類名相同。
新建項目后,將Eclipse工作區(qū)下的.java文件拷入src文件夾,將.class文件拷入class文件夾(需要新建),將pic文件夾拷入res文件夾,點擊生成,如一切正常之后,選擇項目-包-生成包。生成的jar和jad文件存儲在LLK/bin目錄下。運行MotorolaSDKv4.2forJ2ME。5.2游戲測試5.2.1部分模塊的測試模塊邏輯:1.主界面如圖5.1圖5.12.游戲幫助如圖5.2圖運行界面測試運行程序,首先顯示游戲的Logo界面,Logo的顯示時間為3秒鐘,3秒鐘之后游戲便會進入主菜單,或者在Logo顯示時按任意鍵便可進入游戲的主菜單,游戲Logo界面如圖5.3圖5.3游戲Logo界面之后進入游戲的主菜單界面,如圖5.4圖5.4主菜單界面選擇開始游戲,進入操作界面,如圖5.5,5.6,.7圖5.5游戲界面圖5.6游戲成功圖5.7游戲失敗選擇游戲幫助,進入幫助界面,如圖5.8圖5.8游戲幫助選擇游戲設置,進入設置界面,如圖5.9圖5.9游戲設置選擇最高分,進入最高分界面,如圖5.10圖5.10游戲最高分結束語J2ME針對嵌入式和移動設備,提供了開發(fā)和運行應用程序的平臺,隨著新的規(guī)范的不斷推出和眾多制造商、軟件開發(fā)商的支持,J2ME正在飛速向前發(fā)展。JTWI將保證J2ME應用程序在不同制造商的產品上的兼容性。今后J2ME將借助WebServices的力量,真正成為企業(yè)級信息解決方案中不可或缺的一部分。J2ME是一種針對移動電話和PDA這樣的小型設備的Java語言。大部分的手機廠商都迫切希望Java手機推廣應用。上千萬的Java手機已經到了消費者的手中。J2ME與臺式機中的Java相比還是有很大的限制,但是它已經極大的提高了移動電話支持游戲的能力。它有比SMS或WAP更好控制的界面,允許使用子圖形動畫,并且可以通過無線網絡連接到遠程服務器。支持Java的手機的普及,所以它成為目前最好的移動游戲開發(fā)環(huán)境,我們在這里將詳細研究J2ME游戲的開發(fā)。J2ME不是手機上配置的唯一的解釋語言,但是它是一個許多廠商支持的行業(yè)標準。本程序設計實現了手機上以J2ME為平臺的游戲連連看的開發(fā),同時實現了難度調整與游戲紀錄存儲的功能。提供了游戲得分的計算,使游戲具有一定的可玩性和復雜性。經過了細心的調試和排錯解決了絕大部分的問題。在學習J2ME開發(fā)游戲的過程中,遇到的困難遠遠超出了想象。很多相關的技術,如需要使用到的線程、低級圖形界面的使用、貼圖等,每一項都需要花一定的時間去掌握和熟悉。J2ME為一種剛出現僅幾年的新技術,國內的參考資料非常少,僅有的幾本也停留在簡單的介紹階段。J2ME應用程序開發(fā)這本書給了我很大的幫助。通過對本課題的研究與實現,增強了我的實踐能力。使我對J2ME軟件開發(fā)方法有了更進一步的理解,獨立的完成了系統的整個開發(fā)過程。通過對手機游戲的設計與實現,使我對軟件工程,開發(fā)語言及開發(fā)工具等都有了比較全面的實踐和掌握。參考文獻[1]上海證券報./a/20100319/000031.htm,20[2]陳立偉,張克非,黎秀紅.精通Java手機游戲與應用程序設計.中國青年出版社,2005年5月[3]洪維恩.Java2面向對象程序設計.中國鐵道出版社,2002年8月[4]盧軍編.J2ME應用程序開發(fā).中國鐵道出版,2002年9月[5][美]JamesKeogh.潘穎,王磊譯.J2ME開發(fā)大全.清華大學出版社,2004年[6]張海藩.軟件工程.北京人民郵電出版社,2006年1月[7]王森.Java手機程序設計入門.電子工業(yè)出版社,2004[8]李鵬,陳煒,任俊偉.J2ME游戲編程.清華大學出版社.2005年11月[9]詹建飛.J2ME開發(fā)精解.電子工業(yè)出版社,2006年1月[10][美]DonaldHearn,M.PaulineBaker.蔡士杰,宋繼強,蔡敏譯.計算機圖形學(第三版).電子工業(yè)出版社,2005年6月[11]邵明武.J2ME平臺手機游戲的設計與實現.西南交通大學,2007[12]米川英樹.J2MEMIDP手機游戲程序設計.中國鐵道出版社,2005[13]RogersCadenhead.淡文剛,于紅梅譯.循序漸進Java2教程(第三版).人民郵電出版社,2003年4月[14]H.M.Deitel,P.J.Deitel.施平安,施惠瓊,柳賜佳譯.java程序設計教程(第五版).清華大學出版社,2004年3月[15]Keogh,J.潘穎,王磊譯.J2ME開發(fā)大全.清華大學出版社,2004[16][美]Wells,M.J.陳宗斌譯.J2ME游戲編程.清華大學出版社,2005年11月[17]張小瑋.J2ME無線平臺應用開發(fā).清華大學出版社,2004[18]印薅.Java語言與面向對象程序設計.清華大學出版社.2000[19]JoshuaBloce.潘愛民譯.EffectiveJava中文版.機械工業(yè)出版社,2004年7月[20]BruceEckel.侯捷譯.Java編程思想.機械工業(yè)出版社出版社,2005年3月[21]IanSommerville著.程成等譯.軟件工程.機械工業(yè)出版社,2003年1月[22]飛思科技產品研發(fā)中心.精通Jbuilder9.電子工業(yè)出版社,2004[23]微型爪哇人.Java手機程序開發(fā).中國鐵道出版社,2003[24][美]FrandM.Carrano,Janet
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 影視項目融資協議
- 土地居間合同2024年
- 2024股東對公司借款合同
- 海域開發(fā)利用協議
- 2024住房租房協議書
- 文字作品授權合同:獨家代理
- 液體運輸合同范本格式
- 標準版離婚協議文本
- 工程款抵償合同樣本
- 競價托管服務合同2024年
- 職業(yè)技術學校老年保健與管理專業(yè)(三年制)人才培養(yǎng)方案
- 2024年秋季人教版新教材七年級上冊語文全冊教案(名師教學設計簡案)
- 有子女民政局常用協議離婚書格式2024年
- 中國介入醫(yī)學白皮書(2021 版)
- 2024中華人民共和國農村集體經濟組織法詳細解讀課件
- 代運營合作服務協議
- 婚內財產協議書(2024版)
- 有限空間作業(yè)應急管理制度
- 2024全國普法知識考試題庫及答案
- 化工企業(yè)中試階段及試生產期間的產品能否對外銷售
- 籃球智慧樹知到期末考試答案章節(jié)答案2024年浙江大學
評論
0/150
提交評論