【正文】
ArrayOutputStream 內(nèi)的元素?cái)?shù)據(jù)寫入 record 中。利用輸入/輸出流這一種方法較上一種復(fù)雜,但是較為實(shí)用。Record 是以字節(jié)為基本單位來(lái)存放的,所以所有要寫入 record 的數(shù)據(jù)都必須先將其轉(zhuǎn)為字節(jié)才能寫入,從 record 所讀出來(lái)的數(shù)據(jù)也是字節(jié),必須將其轉(zhuǎn)換為原先寫入時(shí)的數(shù)據(jù)類型才有意義。區(qū)別記錄的唯一標(biāo)記是他們的 ID 值,作為記錄集的主鍵。記錄是字節(jié)數(shù)組。訪問(wèn)模式會(huì)在準(zhǔn)備提供共享的 RecordStore 被建立時(shí)被創(chuàng)建。當(dāng) MIDlet 包從平臺(tái)中被移除后,所有與該包有關(guān)的的記錄集都同時(shí)會(huì)被移除。RMS 包中包括 RecordStore 類。微小的存儲(chǔ)空間也限制了它們的結(jié)構(gòu)不能過(guò)于復(fù)雜。 RMS 數(shù)據(jù)庫(kù)系統(tǒng)MIDP 為 MIDlets 提供了一種永久存儲(chǔ)和后來(lái)讀出數(shù)據(jù)的數(shù)據(jù)庫(kù)解決方案,被稱為Record Managerment System(RMS),是一種類簡(jiǎn)單的基于記錄的數(shù)據(jù)庫(kù) [13]。ServerSocket 類的構(gòu)造方法有兩種:? ServerSocket(int)在指定端口上構(gòu)造一個(gè) ServerSocket 類。構(gòu)造完 Socket 類后,就可以通過(guò) Socket 類建立輸入、輸出流,通過(guò)流來(lái)傳送數(shù)據(jù)。? Socket(IAddress,int,boolean)構(gòu)造一個(gè)連接指定 Inter 地址、指定端口的流Socket。Socket 類的構(gòu)造方法有四種:? Socket(String,int)構(gòu)造一個(gè)連接指定主機(jī)、指定端口的流 Socket。可以使用 Socket 開(kāi)發(fā)聯(lián)網(wǎng)游戲, 規(guī)范并沒(méi)有規(guī)定設(shè)備必須支持 Socket,因此在使用之前應(yīng)該參考設(shè)備規(guī)范看其是否支持 Socket 通信 [11]。繪制圖片的方法與文本非常類似,不同的是由于圖片沒(méi)有基線(baseline )的概念,因此在繪制圖片時(shí)不能使用BASELINE 常量。一般認(rèn)為文本的垂直居中沒(méi)有意義,而且也很難實(shí)現(xiàn)[9]。數(shù)字玲也可以做定位點(diǎn)的值,它代表的組合方式是 TOP|LEFT。定位點(diǎn)的最大作用就是最小化計(jì)算文本繪制位置所需的工作量。程序只能在 paint()函數(shù)中使用Graphics 繪制。 Graphics 類Graphics 是 包中用于繪制簡(jiǎn)單 2D 圖形的類 [8]。鍵盤事件由鍵代碼指定,但這樣控制游戲會(huì)導(dǎo)致缺乏通用性,并不是每個(gè)設(shè)備的鍵盤布局都適合游戲的操作。因此,開(kāi)發(fā)人員可以完全獲得界面控制能力,能精確控制每一個(gè)像素的位置,在游戲開(kāi)發(fā)中,這是必不可少的。和高級(jí)用戶界面相比,Canvas 擁有更大的靈活性。以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。8. Java 是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較 C++等完全編譯后的程序會(huì)低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。手機(jī)中由于處理器和內(nèi)存空間、存儲(chǔ)空間都十分有限,其數(shù)據(jù)庫(kù)系統(tǒng)與普通 PC 大相徑庭。7. 游戲需要建立高分榜,將用戶打出的最高分加以保存,可以隨時(shí)察看游戲的最高分,以增強(qiáng)游戲的挑戰(zhàn)性。所以每一次生成新食物都需要進(jìn)行相關(guān)的碰撞檢測(cè)。游戲的結(jié)尾會(huì)對(duì)用戶的最終得分加以顯示。3. 為了滿足游戲的需要,游戲需要加入難度調(diào)整的功能,根據(jù)選擇難度的不同,蛇的移動(dòng)速度需要進(jìn)行相應(yīng)的調(diào)整,以增強(qiáng)游戲的挑戰(zhàn)性。背景音樂(lè)可以根據(jù)用戶的需要隨時(shí)進(jìn)行開(kāi)啟和關(guān)閉。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。splashScreen 類負(fù)責(zé)顯示初始載入畫(huà)面,F(xiàn)ood 類實(shí)現(xiàn)食物的顯示。Client 類與 Server 類分別對(duì)應(yīng)客戶機(jī)與服務(wù)器,Sender 類負(fù)責(zé)對(duì)客戶機(jī)與服務(wù)期間傳送數(shù)據(jù)。如:設(shè)是否與屏幕邊緣、食物以及自身相撞、屏幕上相關(guān)信息的繪制等。游戲中的普通食物設(shè)置為初始顯示isShow = true,而獎(jiǎng)勵(lì)食物設(shè)置為初始不顯示 isShow = false,當(dāng)用戶達(dá)到獎(jiǎng)勵(lì)食物的出現(xiàn)條件時(shí)再設(shè)置 isShow = true,予以顯示。在 Player 線程中開(kāi)啟游戲背景音樂(lè)。本程序運(yùn)行程序后允許用戶選擇執(zhí)行選項(xiàng)菜單,在開(kāi)始游戲后將先從外部文件載入地圖文件,對(duì)背景的所有物體進(jìn)行繪圖。在 destroyed 狀態(tài)的 MIDlet 必須釋放了所有的資源,并且保存了數(shù)據(jù)。在 active 狀態(tài)調(diào)用 destroyApp(boolean unconditional)或者 pauseApp()方法可以使得 MIDlet 進(jìn)入 destroyed 或者 pause 狀態(tài) [7]。這三種狀態(tài)的轉(zhuǎn)換關(guān)系如圖 所示:MIDlet 有三個(gè)狀態(tài),分別是 pause、active 和destroyed。在用 J2ME 進(jìn)行手機(jī)游戲開(kāi)發(fā)中,將 Socket 類和 ServerSocket 類分別用于 Client 端和 Server 端,在任意兩臺(tái)機(jī)器間建立連接。Canvas 則正好相反,它是一個(gè)低級(jí)圖形用戶界面,在手機(jī)界面大小的范圍內(nèi),我們可以控制任意像素的繪制,顯示效果完全取決于我們?cè)O(shè)計(jì)的代碼,這在游戲的開(kāi)發(fā)中是必不可少的。Screen 是高級(jí)圖形用戶界面,從 Screen 派生的如 TextBox,List,F(xiàn)orm 不需要我們自己繪制,只需制定合適的參數(shù),系統(tǒng)就會(huì)將標(biāo)題、文本框、滾動(dòng)條等自動(dòng)繪制出來(lái)。本系統(tǒng)在主菜單界面上采用 Screen 類提供的高級(jí)界面。第三章 手機(jī)游戲“貪食蛇”的功能分析和設(shè)計(jì) 手機(jī)游戲“貪食蛇”的總體設(shè)計(jì)總體設(shè)計(jì)的基本目的是解決系統(tǒng)如何實(shí)現(xiàn)這個(gè)問(wèn)題,因此系統(tǒng)設(shè)計(jì)又稱為概要設(shè)計(jì)。 將 OTA(Over The Air)預(yù)配置規(guī)范加入進(jìn)來(lái),確保了應(yīng)用程序分發(fā)機(jī)制可以適用于所有設(shè)備,同時(shí)還定義了移動(dòng)信息設(shè)備上的應(yīng)用程序管理需求。 MIDlet:是 Jave 一個(gè)類,擴(kuò)展了 抽象類。這些文件能完成編譯、校驗(yàn)和運(yùn)行的任務(wù){(diào)Install}/lib/ CLDC 和 MIDP 的類庫(kù)包{Install}/docs包含 CLDC、MIDP 和 Sun Java(TM) Wireless Toolkit 的幫助文檔 MIDP應(yīng)用程序 MIDP 應(yīng)用程序是指遵循由應(yīng)用程序主體(Jar 文件)和應(yīng)用程序描述文件(Jad 文件)組成。表 Sun Java(TM) Wireless Toolkit 的安裝目錄目 錄 包 含 的 內(nèi) 容{Install}/apps使用 Sun Java(TM) Wireless Toolkit 創(chuàng)建的工程源代碼、資源和配置文件將存放在這里。雖然它沒(méi)有強(qiáng)大的功能和完善的調(diào)試手段,但它提供運(yùn)行模擬器的最基本組件,是其他 IDE 需集成采用的必備元素。 Wireless Toolkit WTK(Wireless Toolkit)是 Sun 公司針對(duì) J2ME 推出的用于手機(jī)和 Palm 等移動(dòng)設(shè)備的開(kāi)發(fā)包,是除手機(jī)廠商的專用開(kāi)發(fā)包外唯一的手機(jī)模擬器開(kāi)發(fā)包。在建立一個(gè)大工程時(shí),有較低的內(nèi)存消耗和更快的響應(yīng)速度。NetBeans 最新版 NetBeans IDE 版本提供了幾種新功能和一些功能的增強(qiáng)。您可以從中獲得您所需要的所有工具,用 Java、C/C++ 甚至是 Ruby 來(lái)創(chuàng)建專業(yè)的桌面應(yīng)用程序、企業(yè)應(yīng)用程序、web 和移動(dòng)應(yīng)用程序。測(cè)試手機(jī) Nokia6300 對(duì)上述功能提供了良好支持。彩色屏幕。并且,Java 通過(guò)接口來(lái)支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和擴(kuò)展性。7. 動(dòng)態(tài)性Java 的設(shè)計(jì)使它適合于一個(gè)不斷發(fā)展的環(huán)境。6. 多線程多線程機(jī)制使應(yīng)用程序能夠并行執(zhí)行,而且同步機(jī)制保證了對(duì)共享數(shù)據(jù)的正確操作。Java 取消了 C 語(yǔ)言的結(jié)構(gòu)、指針、 define 語(yǔ)句、多重繼承、 goto 語(yǔ)句、操作符、重載等不易被掌握的特性,提供垃圾收集器自動(dòng)回收不用的內(nèi)存空間。4. 分布式Java 建立在 TCP/IP 網(wǎng)絡(luò)平臺(tái)上,提供了用 HTTP 和 FTP 協(xié)議傳送和接收信息的庫(kù)函數(shù),使用其相關(guān)技術(shù)可以十分方便的構(gòu)建分布式應(yīng)用系統(tǒng)。它提供了安全管理器,防止程序的非法訪問(wèn)。Java 的數(shù)據(jù)類型與機(jī)器無(wú)關(guān)。經(jīng)過(guò)對(duì)無(wú)線手機(jī)游戲的詳細(xì)調(diào)查,根據(jù)系統(tǒng)規(guī)模,對(duì)軟件開(kāi)發(fā)中將要面臨的問(wèn)題及其解決方案進(jìn)行初步設(shè)計(jì)以及合理安排?,F(xiàn)有的J2ME開(kāi)發(fā)環(huán)境經(jīng)非常成熟,無(wú)論是從軟件方面還是硬件方面。 系統(tǒng)的可行性分析本題目開(kāi)發(fā)的是手持設(shè)備上的無(wú)線網(wǎng)絡(luò)游戲“貪吃蛇”,主要完成無(wú)線手機(jī)游戲的基本功能,包括單人游戲,游戲的難度等級(jí)調(diào)整,游戲的暫?;謴?fù),游戲的最高分紀(jì)錄,游戲背景音樂(lè)的加入,無(wú)線網(wǎng)絡(luò)對(duì)戰(zhàn)的實(shí)現(xiàn)。但人們遲早要打電話或者接電話,并且他們不想把所有的電量都用來(lái)玩游戲。如今手機(jī)成為一種快捷、經(jīng)濟(jì)的現(xiàn)代通信技術(shù)手段。根據(jù)初步調(diào)查了解到以下基本情況:現(xiàn)在手機(jī)上的各種游戲非常多,其基本結(jié)構(gòu)是先進(jìn)入Logo界面。系統(tǒng)分析在整個(gè)系統(tǒng)開(kāi)發(fā)過(guò)程中,要解決“做什么”的問(wèn)題,把要解決哪些問(wèn)題、滿足用戶哪些具體的信息需求調(diào)查并分析清楚,從邏輯上,或者說(shuō)從信息處理的功能需求上提出系統(tǒng)的邏輯模型,為下一階段的物理方案設(shè)計(jì)、解決“怎么做”提供依據(jù) [6]。因此過(guò)于復(fù)雜和耗時(shí)過(guò)長(zhǎng)的游戲并不是手持設(shè)備未來(lái)的發(fā)展方向,用戶需要隨時(shí)可以開(kāi)始和停止游戲,簡(jiǎn)單而充滿樂(lè)趣的游戲才是最受手持設(shè)備用的青睞的游戲。手持移動(dòng)游戲潛在的市場(chǎng)比其它任何平臺(tái)都要大得多。 本課題實(shí)現(xiàn)的意義手持設(shè)備上的游戲擁有龐大的用戶群體,現(xiàn)在全球有十幾億部移動(dòng)電話正在被使用,并且這個(gè)數(shù)目還在不斷增加。這樣的暫停既不能造成游戲問(wèn)題(例如,游戲者在打電話的時(shí)候老怪仍然在移動(dòng),打死玩家扮演的角色,導(dǎo)致玩家輸?shù)粲螒颍?,也不可以導(dǎo)致內(nèi)存溢出。這樣,使用具備該功能的智能手機(jī),用戶就可以和附近的移動(dòng)用戶一起玩多人快速動(dòng)作游戲了。無(wú)線網(wǎng)絡(luò)等待時(shí)間過(guò)長(zhǎng),就導(dǎo)致無(wú)法有效地開(kāi)發(fā)多人快速動(dòng)作游戲;然而基于回合制的多人游戲卻是可行的。3. 等待時(shí)間長(zhǎng)等待時(shí)間(機(jī)器發(fā)出請(qǐng)求和接到響應(yīng)之間所花費(fèi)的時(shí)間)在計(jì)算機(jī)上是以微秒計(jì)算;在有線因特網(wǎng)上是以毫秒計(jì)算;而在無(wú)線網(wǎng)絡(luò)上則要以秒計(jì)算。2. 應(yīng)用程序大小限制雖然在一些新款智能手機(jī)上可以運(yùn)行幾兆字節(jié)的應(yīng)用程序,但大部分手機(jī)只有很小的內(nèi)存空間供應(yīng)用程序使用。 手機(jī)設(shè)備的缺點(diǎn)1. 屏幕小雖然手機(jī)屏幕的分辨率持續(xù)提高,并且彩屏已經(jīng)成為標(biāo)準(zhǔn),但是屏幕尺寸依然很小,畢竟我們沒(méi)有人樂(lè)意拿著磚塊一樣大的手機(jī)。支持網(wǎng)絡(luò)因?yàn)橐苿?dòng)電話是網(wǎng)絡(luò)設(shè)備,擁有無(wú)線通訊技術(shù) f,所以可以輕松實(shí)現(xiàn)多人游戲。與現(xiàn)在的游戲控制臺(tái)或者個(gè)人電腦相比,手機(jī)可能不是一個(gè)好的游戲設(shè)備,但是人們基本上是隨時(shí)隨刻都把它們帶在身邊。便攜性NDSL比任何其他控制臺(tái)游戲賣出的多的一個(gè)原因就是:便攜性。 開(kāi)發(fā)手機(jī)游戲的優(yōu)點(diǎn)龐大的潛在用戶群現(xiàn)在全球數(shù)十億部移動(dòng)電話正在被使用,并且這個(gè)數(shù)目正在逐漸增加。在有些情況下,它們是通過(guò)無(wú)線網(wǎng)絡(luò)下載的。部署傳統(tǒng)的游戲主要是在軟件市場(chǎng)上購(gòu)買。移動(dòng)電話的特性決定它是一種網(wǎng)絡(luò)設(shè)備。因此,對(duì)于許多在傳統(tǒng)游戲領(lǐng)域遇到挫折的開(kāi)發(fā)者來(lái)說(shuō),移動(dòng)游戲開(kāi)發(fā)有很強(qiáng)的吸引力。而大部分移動(dòng)游戲幾月之內(nèi)就能開(kāi)發(fā)完畢。因?yàn)榇蟛糠忠苿?dòng)游戲規(guī)模比控制臺(tái)游戲小,所以一般情況下只需要3到5人的團(tuán)隊(duì)開(kāi)發(fā),有的時(shí)候甚至設(shè)計(jì)者和編程者是同一個(gè)人。隨著移動(dòng)終端設(shè)備內(nèi)存和處理能力的提高,越來(lái)越多的可選包被添加到具體的J2ME平臺(tái)上 [5]。J2ME平臺(tái)可以通過(guò)添加可選包(Optional Package)進(jìn)行擴(kuò)展,可選包是針對(duì)特殊的技術(shù)的實(shí)現(xiàn),因此它是定位的是特定范圍的設(shè)備,而不是和作為一項(xiàng)特定定義在MIDP中。目前,CLDC上采用的最廣泛的簡(jiǎn)表是移動(dòng)信息設(shè)備簡(jiǎn)表(Mobile Information Device Profile,MIDP)。為了給目標(biāo)設(shè)備提供完整的運(yùn)行環(huán)境,配置必須和簡(jiǎn)表(Profile )組合。 Java平臺(tái)的結(jié)構(gòu)J2ME平臺(tái)由多種配置(Configuration )、簡(jiǎn)表(Profile)和可選包(Optional Package)組成。其中J2ME定位在消費(fèi)性電子產(chǎn)品的應(yīng)用上。 J2ME 概述Java平臺(tái)演進(jìn)到Java2后,Java平臺(tái)分別針對(duì)不同領(lǐng)域的需求被分成四個(gè)版本,亦即J2EE、 J2SE、 J2ME以及JavaCard()?;谝陨戏治?,Java 手機(jī)將是未來(lái)手機(jī)的發(fā)展方向,是業(yè)界的熱點(diǎn)。而 Java 技術(shù)在無(wú)線應(yīng)用方面的優(yōu)勢(shì)非常明顯:1. 應(yīng)用程序可按需下載,而不是購(gòu)買由硬件商提供的套件,可升級(jí)空間大。在歐洲,已經(jīng)初步形成了一個(gè)規(guī)模達(dá)數(shù) 10 億美元的行業(yè)市場(chǎng),在 2022 年,北美市場(chǎng)規(guī)模預(yù)期將超越 10 億美元大關(guān)。通過(guò)中國(guó)龐大的手機(jī)用戶群體,移動(dòng)游戲在中國(guó)未來(lái)市場(chǎng)有著巨大的發(fā)展前景。s entertainment and interactive. Games provide a good interface, games Logo, to help the game, background music can be suspended at any time or open, games and continue to be suspended at any time, achieving a more humane requirements.This paper introduced the Java platformbased mobile wireless work game development should have the basic knowledge and advanced skills, including the prospects for the development of wireless ga