基于J2ME的俄羅斯方塊手機游戲軟件著作權(quán)登記申請文檔及源程序材料(2).doc_第1頁
基于J2ME的俄羅斯方塊手機游戲軟件著作權(quán)登記申請文檔及源程序材料(2).doc_第2頁
基于J2ME的俄羅斯方塊手機游戲軟件著作權(quán)登記申請文檔及源程序材料(2).doc_第3頁
基于J2ME的俄羅斯方塊手機游戲軟件著作權(quán)登記申請文檔及源程序材料(2).doc_第4頁
基于J2ME的俄羅斯方塊手機游戲軟件著作權(quán)登記申請文檔及源程序材料(2).doc_第5頁
已閱讀5頁,還剩234頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于j2me的俄羅斯方塊手機游戲軟件著作權(quán)登記申請文檔及源程序材料申請人:河海大學(xué) 電子信息工程 本軟件通過采用藍牙技術(shù)使手機用戶能在小區(qū)內(nèi)進行聯(lián)網(wǎng)俄羅斯方塊游戲。在進行設(shè)計時通過netbeans ide 5.0和mobility pack搭建的j2me編程軟件,編寫了游戲程序,通過對系統(tǒng)和藍牙技術(shù)的分析研究,確定了系統(tǒng)的架構(gòu)為:cldc(connect limited device configuration)有限制的連接設(shè)備網(wǎng)絡(luò),使用的藍牙激素和標(biāo)準(zhǔn)為:java開發(fā)社區(qū)(jcp)發(fā)布了基于j2me平臺的藍牙api規(guī)范jsr82(java藍牙無線技術(shù)apis,java apis for bluetooth wireless technology)。下面介紹一下該軟件的開發(fā)環(huán)境、軟件功能、設(shè)計過程以及軟件的操作使用。開發(fā)環(huán)境:j2me技術(shù)通過對手機的增值應(yīng)用的開發(fā),java的跨平臺應(yīng)用就被完整的移植到手機應(yīng)用上。java對于手機的支持也在很久就提出了,java sun早期對系統(tǒng)應(yīng)用就定義出三個java平臺,每一項都定義給不同的使用環(huán)境,而這三種平臺的應(yīng)用環(huán)境分別為:1、java標(biāo)準(zhǔn)版java 2 standard edition(j2se);2、java企業(yè)版java 2 enterprise edition(j2ee);3、java微型版java 2 micro edition(j2me)。這三個平臺分別應(yīng)用于企業(yè)和個人平臺,且這三種平臺環(huán)境技術(shù)發(fā)展的很完善。如圖所示三種環(huán)境的關(guān)系。圖j2ee、j2se、j2me之間關(guān)系在提出j2me平臺時,將它定義為“一種以廣泛的消費性產(chǎn)品為目標(biāo)的高度優(yōu)化的java運行環(huán)境”。這樣的定義是因為j2me應(yīng)用起源與一些需要支持類似計算機功能的電子消費性產(chǎn)品和嵌入式終端的開發(fā),由于這些小型終端設(shè)備與普通大型設(shè)備相比較沒有統(tǒng)一的硬件配標(biāo)準(zhǔn),并且外觀、操作方式也是千差萬別,同時這些終端設(shè)備通常是使用有限電源、有限網(wǎng)絡(luò)連接以及有限圖形用戶界面能力的設(shè)備。為了在應(yīng)用這些終端設(shè)備的時候能夠及時考慮到整體設(shè)備的發(fā)展與規(guī)劃,進而創(chuàng)造出能實際描繪兼容性終端設(shè)備的j2me平臺應(yīng)用環(huán)境,所以j2me跟j2se平臺標(biāo)準(zhǔn)版規(guī)范、j2ee平臺企業(yè)版標(biāo)準(zhǔn)規(guī)范相比,j2me不是一個單獨的技術(shù)規(guī)范,為是一系列的技術(shù)規(guī)范總稱。j2me所包含的應(yīng)用環(huán)境可以為: 個人化與移動式的終端設(shè)備:具有能夠處理間斷性的網(wǎng)絡(luò)連接能力,列入移動電話、尋呼機、個人數(shù)字助理、個人數(shù)字移動式設(shè)備; 固定式連接信息設(shè)備、不間斷網(wǎng)絡(luò)連接:如機頂盒、網(wǎng)絡(luò)電視、網(wǎng)絡(luò)視頻電話、高級終端通信設(shè)備、車載娛樂系統(tǒng)、車載導(dǎo)航系統(tǒng)等。在實際應(yīng)用中,其應(yīng)用能力是區(qū)分這兩種類型設(shè)備的最主要條件。j2me平臺能夠給市場上具有不同功能的終端設(shè)備提供不同的服務(wù)。j2me的設(shè)計證明了主要的機器標(biāo)準(zhǔn)設(shè)計方式能夠支持多種類型的終端設(shè)備。j2me平臺的開發(fā)環(huán)境配置由于j2me平臺應(yīng)用的針對性,對它的配置也有別于其他java語言程序開發(fā)平臺,且其支持的java類庫等也與其他開發(fā)平臺有所區(qū)別。所以需要使用一些專用的軟件對其進行配置,以下就對這些用于配置的開發(fā)軟件和其所支持的java語言和類庫進行介紹。jdk、wtk及開發(fā)工具簡介jdk(java development kit)是sun microsystems針對java開發(fā)員的產(chǎn)品。自從java推出以來,jdk已經(jīng)成為使用最廣泛的java sdk(software development kit)。jdk是整個java的核心,包括了java運行環(huán)境(java runtime environment),一堆java工具和java基礎(chǔ)的類庫(rt.jar)。不論什么java應(yīng)用服務(wù)器實質(zhì)都是內(nèi)置了某個版本的jdk。因此掌握jdk是學(xué)好java的第一步。最主流的jdk是sun公司發(fā)布的jdk,除了sun之外,還有很多公司和組織都開發(fā)了自己的jdk,例如ibm公司開發(fā)的jdk,bea公司的jrocket,還有g(shù)nu組織開發(fā)的jdk等等。jdk包含的基本組件包括:(1) javac 編譯器,將源程序轉(zhuǎn)成字節(jié)碼;(2) jar 打包工具,將相關(guān)的類文件打包成一個文件;(3) javadoc 文檔生成器,從源碼注釋中提取文檔;(4) jdb debugger,查錯工具;(5) java 運行編譯后的java程序(.class后綴的);(6) appletviewer:小程序瀏覽器,一種執(zhí)行html文件上的java小程序的 java瀏覽器;(7) javah:產(chǎn)生可以調(diào)用java過程的c過程,或建立能被java程序調(diào)用的c過程的頭文件;(8) javap:java反匯編器,顯示編譯類文件中的可訪問功能和數(shù)據(jù),同時顯示字節(jié)代碼含義;(9) jconsole: java進行系統(tǒng)調(diào)試和監(jiān)控的工具。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)用程序。wtk是用來開發(fā)midp的,為了讓midlet可以順利編譯和執(zhí)行,wtk必須具有cldc和midp的類庫,wtk可以幫助我們省去額外安裝調(diào)試這些類庫的時間。該工具箱包含了完整的生成工具、實用程序以及設(shè)備仿真器?,F(xiàn)在人們可以獲取的有四個版本,分別是1.0.4、2.0、2.1和2.2。每個版本都包括英語、日語、簡體中文、繁體中文4個語種包。 1.0.4版只能夠開發(fā)midp1.0應(yīng)用程序; 2.0版只能夠開發(fā)midp2.0應(yīng)用程序; 2.1版則可以同時開發(fā)midp1.0、jtwi(cldc1.0,midp2.0,wma1.1)可改用cldc1.1或加入mmapi1.1),自定義(自己隨機組合configuration, profile以及optional package)三種環(huán)境下的應(yīng)用程序。在2.2版中,wtk全面的支持jtwi規(guī)范。具體的說,即midp2.0、cldc1.1、 wma 2.0、mmapi 1.1、web services (jsr172)、file和pim apis (jsr75),bluetooth 和obex apis (jsr 82)以及3d graphics (jsr 184);同時在開發(fā)時也可以使用該版本開發(fā)面向cldc1.0和midp1.0的應(yīng)用程序。而不同版本的wtk包含的程序庫內(nèi)容是不一樣的,比如說2.0中包含了midpapi.jar、wma.jar、mmapi.jar,而在2.1中則變?yōu)榱薱ldcapi10.jar、cldcapi11.jar、midpapi10.jar、midpapi20.jar、wma.jar以及mmapi.jar;在2.2中,wma.jar又細分為wma11.jar和wma20.jar。常用的package:(1) java.lang:這個是系統(tǒng)的基礎(chǔ)類,比如string等都是這里面的,這個package是唯一一個可以不用import就可以使用的package;(2) java.io:這里面是所有輸入輸出有關(guān)的類,比如文件操作等;(3) :這里面是與網(wǎng)絡(luò)有關(guān)的類,比如url,urlconnection等;(4) java.util:這個是系統(tǒng)輔助類,特別是集合類collection,list,map等;(5) java.sql:這個是數(shù)據(jù)庫操作的類,connection,statememt,resultset等;(6) javax.servlet:這個是jsp,servlet等使用到的類。配置j2me開發(fā)環(huán)境 j2me開發(fā)環(huán)境可以由jdk加上jbuilder或netbeans或者eclipse進行配置,由于本課題是采用jdk加上netbeans ide進行配置開發(fā)環(huán)境的,所以主要介紹這種配置方法。在上節(jié)以對jdk進行了詳細的介紹,下面就對先對本課題采用netbeans ide和mobility pack軟件進行介紹。 netbeans ide是由sun建立的開放源碼的軟件開發(fā)工具,是一個開放框架,可擴展的開發(fā)平臺,可以運行在windows、mac、linux、和solaris平臺下,可以用于java、c/c+等的開發(fā),其本身是一個開發(fā)平臺,并且可以通過擴展插件來擴展功能。netbeans ide包含以下功能:(1) ava桌面應(yīng)用程序使用 netbeans java gui builder(支持swing應(yīng)用程序框架和bean綁定)創(chuàng)建專業(yè)桌面應(yīng)用程序;(2) php開發(fā)快捷的輕量級php ide,具有代碼完成和快速修復(fù)功能,集成了ftp和xdebug,并支持常用的web服務(wù);(3) java ee和web應(yīng)用程序使用ajax、javascript和css生成web應(yīng)用程序。支持包括jsf、struts、spring和hibernate在內(nèi)的框架。用于進行ejb開發(fā)的完整工具集;(4) ruby和ruby on rails開發(fā)具有代碼完成功能的強大ruby編輯器和調(diào)試器,完全支持ruby on rails。包括jruby運行時;(5) 可視移動開發(fā)創(chuàng)建、測試和調(diào)試在移動電話、機頂盒和pda上行的gui應(yīng)用程序;(6) c和c+開發(fā)功能完備的c/c+編輯器、調(diào)試器、項目模板,支持多項目配置、遠程開發(fā)以及對已完成項目進行打包。 mobility pack是netbeans ide的擴展無線開發(fā)模塊,mobility pack用于開發(fā)、測試和調(diào)試midp應(yīng)用程序。同時mobility pack還可以很容易地與第三方模擬器集成為開發(fā)者提供所需的運行環(huán)境。本課題就是通過mobility pack 5的無線應(yīng)用開發(fā)進行設(shè)計的。netbeans ide mobility pack具有的一些特性為:(1) 流程設(shè)計器:支持drag-and-drop方式,可以自由定制執(zhí)行流程,顯示窗口以及執(zhí)行動作;并且自動生成相應(yīng)的代碼;(2) 無線連接向?qū)В和ㄟ^midlet與web service和服務(wù)器端代碼進行連接,支持jsr-172;(3) 用戶定義配置:當(dāng)開發(fā)與配置相關(guān)的應(yīng)用時,可以使用項目模板一次性創(chuàng)建配置,然后在不同的項目當(dāng)中重復(fù)使用;(4) 部署向?qū)В和ㄟ^webdav、ftp、scp等方式將midlet上傳到設(shè)備上進行部署;(5) 本地化midp:允許加入本地化的一些midp模塊;(6) cdc項目向?qū)В禾砑恿藢dc項目的直接支持;(7) 可以利用matisse進行cdc開發(fā)時的界面編輯;(8) 支持sony ericsson cdc platform 1和nokia s80平臺;(9) 支持第三方模擬器:netbeans ide 5.0可以支持幾乎所有主流手機廠商的開發(fā)平臺模擬器,包括:motorola、nokia、samsung、iemens、benq和sony ericsson;(10) junit支持:可以使用junit測試cdc應(yīng)用程序。在配置j2me環(huán)境時,首先安裝jdk,在安裝netbeans ide 5.0然后在安裝mobility pack 5.0,最后安裝所需的開發(fā)平臺模擬器。在進行本課題設(shè)計時,針對本課題需求選擇環(huán)境架構(gòu)。j2me配置層和簡表層 配置層(configuration)和簡表層(profile)是構(gòu)建j2me標(biāo)準(zhǔn)設(shè)計的主要元素,這兩種元素能夠為j2me提供支持多樣性的終端設(shè)備的能力。j2me定義了家庭式終端設(shè)備的最小java平臺,其需求是內(nèi)存和處理器的能力,而簡表層則是真正規(guī)范與定義出系統(tǒng)設(shè)備的可用程度。圖 j2me平臺所組成的基本層次在配置層(configuration)中規(guī)范出三個基本元素: 規(guī)定了java的編程語言特性; 規(guī)定了java虛擬機特性; 規(guī)定了所支持的java類庫和應(yīng)用程序接口(api)。j2me的設(shè)計者之定義了兩個架構(gòu)層,為了避免分隔出兩個不兼容的平臺,定義了兩個架構(gòu),這兩個架構(gòu)層為:(1) 個人的、間歇性連接的移動設(shè)備:有限連接設(shè)備配置(cldc);(2) 經(jīng)常性連接的網(wǎng)絡(luò)終端設(shè)備:連接設(shè)備配置(cdc)。application應(yīng)用程序application應(yīng)用程序foundation基礎(chǔ)規(guī)范類midp移動信息設(shè)備規(guī)范類cdc連接設(shè)備配置cldc有限連接設(shè)備配置host operation system主機操作系統(tǒng)host operation system主機操作系統(tǒng)device hardware硬件設(shè)備device hardware硬件設(shè)備圖 cdc與cldc平臺框架連接設(shè)備配置連接設(shè)備配置(the connected device configuration,cdc),這是第一個j2me架構(gòu)。這種配置取決于終端設(shè)備所提供的必要支持,目標(biāo)是設(shè)備要有2mb以上內(nèi)存,包含ram和rom。配置層中包擴設(shè)置jvm的性能要能支持其所設(shè)置的類庫。cdc規(guī)范中使用java 2平臺的虛擬機內(nèi)存,這里統(tǒng)稱為簡易虛擬內(nèi)存(compact virtual machine,cvm)。而簡易虛擬內(nèi)存(compact virtual machine,cvm)產(chǎn)品的主要特性為:(1) 可移植性,快速同步化;(2) 提升內(nèi)存系統(tǒng),可在rom外執(zhí)行java類;(3) 最小的平均垃圾收集暫停時間;(4) 內(nèi)存系統(tǒng)與虛擬機完全分離;(5) 模塊化的垃圾收集;(6) 插入式垃圾收集機制;(7) 支持本地線程,java 線程直接對應(yīng)到本地線程中;(8) 提供接口支持實時性系統(tǒng)服務(wù)。通過如上所述,從基本架構(gòu)來看,通過被創(chuàng)建的類的使用情況,指出了cdc規(guī)劃出最小的類庫和api,它所提供的java package標(biāo)準(zhǔn)如表所示:表 cdc架構(gòu)提供的java包標(biāo)準(zhǔn)java 目錄包說 明 java.lang java虛擬機系統(tǒng)類 java.util 底層的公用java類 普通數(shù)據(jù)封裝包通信協(xié)議(udp)和輸入/輸出 (i/o)類 java.io jav文件的(i/o)使用類 java.text 支持最小的國際化類庫集合 java.security 最小的對象序列化所需安全集合加密機制在上表中可以發(fā)現(xiàn)許多的api并不包含java2的sdk。而有一些package與class是從java2中的sdk中延用的,其使用的條件是必須要移除j2se多余的package和class,而不是要移除j2se的api。下表列出了cdc所支持的package。表 2-2 cdc所支持的包文件cdc 目錄名稱描 述 java.io 標(biāo)準(zhǔn)io類和接口 java.lang 虛擬機類 java.lang.ref 參考類 java.lang.reflect 參考類和接口 java.math 數(shù)學(xué)運算類庫 網(wǎng)絡(luò)類和接口 java.security 安全類與接口 java.security.cert 安全認證類 java.text 文字目錄 java.util 底層公用類 java.util.jar java文件(jar)公用類 java.util.zip zip壓縮公用類 java.microedition.io cdc一般連接架構(gòu)類和接口上表中的java.microedition.io的開發(fā)包中的幾個接口和類實現(xiàn)了應(yīng)用程序通用連接框架。文中提到的api的全稱為:application programming interface,即應(yīng)用程序接口。有限連接設(shè)備配置有限連接設(shè)備配置(connected limited device configuration,cldc)是第二個j2me架構(gòu)。cldc規(guī)范也定義了終端設(shè)備具有以下特性:(1) 60kb512kb以下內(nèi)存用于java運行;(2) 16-bit或32-bit處理器;(3) 有限能源供應(yīng)(通常使用電池作為供能設(shè)備);(4) 有限或間斷的網(wǎng)絡(luò)連接。有限連接設(shè)備配置的目標(biāo)是給終端設(shè)備定義一個標(biāo)準(zhǔn)平臺,主要移動電話上會有不同的系統(tǒng)軟件,同時要在現(xiàn)存的環(huán)境中使用最小的配置環(huán)境。cdc規(guī)范和cldc規(guī)范所支持java程序語言層度有所不同,在cldc的java語言支持部分移除了部分java語言的功能特性:1、浮點運算能力;2、對象實例的銷毀;3、不支持java.lang.error的大多數(shù)子類。而有關(guān)java虛擬機的和支持庫,cldc要求必須有虛擬機,因為它定義了高可移植性并且是為有設(shè)備限制小型終端設(shè)備所設(shè)計。所以有些在標(biāo)準(zhǔn)的環(huán)境定義的compliant vm特性不予支持。以下為不支持在cldc下的compliant vm的特性: 不支持java本地接口jni; 不支持用戶定義的java類加載; 不支持反射特征; 不支持線程組和守護線程; 不支持類實例的銷毀(在cldc類庫無object.finalize方法); 不支持弱引用; 在錯誤處理上的限制(j2se小型錯誤自己是支持的); 不支持類文件驗證。有限連接設(shè)備配置包含一個基本的j2me運行環(huán)境,包括了虛擬機和核心的java類庫。有限連接設(shè)備配置是專門針對小型設(shè)備所設(shè)計,對j2se類庫進行了大量的簡化。cldc保留java規(guī)范中所定義的核心3個包,即java.io、java.lang、java.util,并且重新定義一個新的目錄javax.microedition.io,用來支持通用框架(gcf,generic connection framework)。這里可以用前綴來進行區(qū)分,如java.表示核心的java目錄,而javax.表示為java的擴展目錄。cldc中目錄所對應(yīng)的功能如表所示。 cldc 目錄 描 述 java.io 標(biāo)準(zhǔn)java io類和j2se目錄的子集 java.lang vm類和接口,j2se目錄子集 java.util 實用類的j2se標(biāo)準(zhǔn)子集 javax.microedition.io cldc的通用連接框架類和接口 表 cldc所支持包文件移動信息設(shè)備簡表移動設(shè)備信息簡表(mobile information device profile,midp)是位于cldc上層的簡表層。cldc因為資源受限的關(guān)系,不足以支持標(biāo)準(zhǔn)的虛擬機開發(fā)環(huán)境和類庫以及java語言程序的一些應(yīng)用。在使用只有cldc提供的api來進行編程是幾乎不可能實現(xiàn)的,因為cldc中并沒有提供給使用者與用戶、相關(guān)存儲設(shè)備或網(wǎng)絡(luò)做直接交互的工具,cldc是一個基礎(chǔ)層次,為了滿足個用戶使用特性,在cldc層次上構(gòu)建一系列簡表層(profiles)來支持cldc所不足的功能。其中“移動性息設(shè)備簡表”就是簡表層中的一種。midp位于cldc上層的簡表層,是目前j2me平臺中發(fā)展最成熟的部分。midp針對的是移動信息設(shè)備類,這類設(shè)備通常指手機或者是pda,它們在屏幕、內(nèi)存或處理器等硬件特性上有很多限制。因此在mid上開發(fā)應(yīng)用程序或游戲,就必須考慮相關(guān)的問題。從midp的規(guī)范中定義出移動信息設(shè)備的最小特征: 顯示屏最小尺寸為96*54像素; 顯示色彩深度為1位; 設(shè)備核心:有效運行kvm的能力; 網(wǎng)絡(luò)狀態(tài):雙向的、無線的、間斷的和有限帶寬的連接網(wǎng)絡(luò); 輸入設(shè)備:itu-t手機鍵盤(one-handed key board)或者是標(biāo)準(zhǔn)鍵盤(two-handed keyboard,即qwerty鍵盤)與觸摸屏; 128kb存儲空間用于midp組件中; 8kb存儲空間應(yīng)用于應(yīng)用程序生成的永久數(shù)據(jù); 32kb的可變存儲用于java運行環(huán)境使用。因為mid能力范圍有限,midp建立的目標(biāo)位最少的終端設(shè)備能力的共享性質(zhì)在midp中規(guī)范。其api如下:(1) 應(yīng)用方式(midp應(yīng)用程序語義和控制);(2) 用戶界面應(yīng)用;(3) 持久存儲器應(yīng)用;(4) 網(wǎng)絡(luò)應(yīng)用;(5) 計時應(yīng)用。midp規(guī)范中定義的packeg與class如表顯示。表 midp規(guī)范中定義的包文件 midp目錄名稱 描 述 javax.microedition.icduiui類和接口 javax.microedition.rms記錄和管理系統(tǒng)(rms)支持持久的設(shè)備存儲器 javax.microedition.midletmidp應(yīng)用程序支持的類 javax.microedition.iomidp通用連接框架的網(wǎng)絡(luò)支持類和接口 java.io標(biāo)準(zhǔn)java.io類與接口 java.langvm類和接口 java.util基本的公用類和接口 上表中javax.microedition.icdui的ui api為midp應(yīng)用提供了一個用戶界面的實現(xiàn)特征集合;javax.microedition.rms中midp為midlet提供了一個可以再移動設(shè)備上存儲數(shù)據(jù)數(shù)據(jù)的機制;javax.microedition.midlet定義了midp的應(yīng)用及該應(yīng)用在運行時與環(huán)境的交互;javax.microedition.io包含源自cldc的通用連接框架的網(wǎng)絡(luò)支持;java.lang、java.io與java.util是midp從j2se核心類中繼承過來的核心類。具體環(huán)境配置方法1安裝j2sdk1.4.2到指定位置;2安裝netbeans ide 5.0,在安裝時選擇已安裝的j2sdk;3安裝mobility pack 5.0,在安裝時需制定為netbeans ide 5.0的安裝目錄;4安裝nokia_s40。 j2me開發(fā)環(huán)境界面圖 開發(fā)環(huán)境的編程窗口、調(diào)試窗口、輸出結(jié)果軟件功能:移動電話的發(fā)展堪稱迅猛,是近幾年快速成長的新興產(chǎn)業(yè),其技術(shù)越來越成熟,采用的技術(shù)越來越先進,手機已從普通移動通信終端向智能終端轉(zhuǎn)變,所支持的功能越來越多。自從后pc時代(后pc時代是指:將計算機、通信和消費產(chǎn)品的技術(shù)結(jié)合起來,以3c產(chǎn)品的形式通過internet進入家庭。)的來臨,市場已經(jīng)逐步將計算機產(chǎn)業(yè)的功能轉(zhuǎn)移到了手機應(yīng)用上,使得目前的手機不僅提供單一通話功能,還兼具了娛樂、個人助理、無線數(shù)據(jù)傳輸及無線上網(wǎng)的功能。隨著目前手機的普及和硬件設(shè)備性能的提升,開發(fā)手機游戲已經(jīng)成為了一個新的經(jīng)濟增長點,一個快速增長的產(chǎn)業(yè)。由于手機作為小型終端設(shè)備,所擁有的設(shè)備、資源有限,所以對運行的程序有所限制,通常是需要程序運行時所占用的內(nèi)存和內(nèi)核的資源較少。且由于手機的生產(chǎn)廠商的不同,所以各款手機的配置不同,且同一生產(chǎn)廠家生產(chǎn)地手機配置也可能不同,所以在進行手機游戲的設(shè)計時,需要針對不同手機進行參數(shù)配置。人們通過不斷的研究創(chuàng)新,現(xiàn)在開發(fā)出的單機版的手機游戲在交互性和視覺效果上已經(jīng)有了很大的提升,在手機現(xiàn)有得軟、硬件發(fā)展程度下,尤其是手機內(nèi)核處理能的提高,以及內(nèi)存容量的增大,手機游戲質(zhì)量不斷上升,現(xiàn)在單機版手機游戲在游戲畫面、游戲音效、游戲操作性等方面基本上已經(jīng)發(fā)展到極致。而現(xiàn)在軟、硬件的發(fā)展程度已經(jīng)滿足了開發(fā)無線聯(lián)網(wǎng)游戲?,F(xiàn)有的手機聯(lián)網(wǎng)的方式有:紅外連接、藍牙連接以及收費的連接等。手機紅外連接利用紅外線進行連接,傳輸距離最大可達2m,對障礙物的衍射能力較差,應(yīng)用時需要進行直線連接。藍牙一詞作為新的無線通信技術(shù)標(biāo)準(zhǔn)的代稱,是一種無線數(shù)據(jù)與語音通信的開放性標(biāo)準(zhǔn),以近距離和低成本無線連接為基礎(chǔ),將終端設(shè)備進行連接,其最遠連接距離為100m,且在使用時不需要進行直線連接。藍牙技術(shù)經(jīng)過多年的研究開發(fā),該技術(shù)已很成熟,有廣泛的用途。根據(jù)調(diào)查顯示,由于網(wǎng)絡(luò)流量費用的關(guān)系,手機玩家更加愿意接受在局域網(wǎng)內(nèi)進行不收費連接的游戲,在考慮到應(yīng)用的可能性及便利性時,藍牙連接成為進行手機聯(lián)機游戲的首選,這就為藍牙技術(shù)的應(yīng)用提供了一個很好的領(lǐng)域。俄羅斯方塊這款游戲是由蘇聯(lián)的游戲制作人阿列克謝.帕基特諾夫在1985年發(fā)明的。這款游戲曾風(fēng)靡一時,已然成為一款經(jīng)典的游戲,就是現(xiàn)在也有著大量的玩家。本次設(shè)計的俄羅斯方塊游戲系統(tǒng)可以進行單機模式和聯(lián)網(wǎng)模式的游戲,通過采用藍牙技術(shù)使手機用戶能在小區(qū)內(nèi)進行聯(lián)網(wǎng)游戲,根據(jù)用戶自行選擇可以滿足用戶的不同的需求,增加了趣味性、游戲性。軟件設(shè)計過程總體設(shè)計思路 因為本軟件設(shè)計的系統(tǒng)為:實現(xiàn)俄羅斯方塊游戲的運行,并且增加了手機小區(qū)內(nèi)藍牙聯(lián)網(wǎng)的功能。因此考慮到該課題為實現(xiàn)手機的聯(lián)網(wǎng)游戲,為了便于區(qū)分變量,故在程序中定義了兩組類似的類成員變量和常量,類中除共享的成員變量外,變量均需要定義本地玩家和遠端玩家兩份,默認定義遠端的均添加_remoteh(或者_remote)后綴。 本次軟件的設(shè)計主要分為兩個大的模塊,一個是游戲模塊,另一個是藍牙聯(lián)網(wǎng)模塊。在游戲模塊中包括游戲的邏輯控制、屏幕的繪制、游戲地圖類等;在藍牙聯(lián)網(wǎng)模塊主要包括藍牙設(shè)備的發(fā)現(xiàn)及服務(wù)、數(shù)據(jù)傳輸?shù)?。游戲的功能定義:能夠?qū)崿F(xiàn)俄羅斯方塊游戲運行,具有單機及聯(lián)網(wǎng)游戲功能。 知道了基本條件,就可以開始設(shè)計游戲了,編寫者必須對俄羅斯方塊游戲的規(guī)則進行嚴格的描述??梢赃@樣定義:屏幕上有一個x列y層的區(qū)域,計算機自動產(chǎn)生多種不同類型的方塊,并出現(xiàn)在區(qū)域的最頂端;然后每過一個固定時間間隔向下落一層,玩家可以使用鍵盤控制方塊向三個方向移動和順逆時針旋轉(zhuǎn)90度。不過前提是方塊移動和旋轉(zhuǎn)后的位置必須是空的。當(dāng)方塊落到區(qū)域底部或者另一方塊之上將停止移動,然后新的方塊會產(chǎn)生。當(dāng)新方塊無處放置的時候:game over。各模塊方案的選擇與論證 考慮到硬件的因素,j2me程序不能很大,通過已有的手機游戲來看,多數(shù)在100 kb以下。而且其中大部分是圖片和聲音,代碼只占其中很少一部分。在j2me程序比較小時,為了提高程序的執(zhí)行效率,通常的做法是只用一個類完成整個應(yīng)用程序。同時在進行軟件設(shè)計時,將不同功能按照模塊劃分,對每個模塊的設(shè)計提出了很多方案,在通過研究論證后,逐步找到了最優(yōu)的方案。下面就對主要的模塊進行可行性分析與論證,尋找最優(yōu)設(shè)計。游戲邏輯控制首先是定義游戲相關(guān)的數(shù)據(jù)存儲方法,分為兩個主要的部分,一個是當(dāng)前的方塊,需要保存位置、當(dāng)前的旋轉(zhuǎn)狀態(tài);另一個是屏幕區(qū)域的狀態(tài),這可以用一個二維數(shù)組來表示。其次還有按鍵分析模塊:分析得到按鍵的含義,做出響應(yīng);響應(yīng)模塊:“左”、“右”、“下”、“移動”和“旋轉(zhuǎn)”幾個模塊,負責(zé)改變當(dāng)前方塊的狀態(tài)數(shù)據(jù);畫方塊模塊:位置移動后,把方塊畫到新的位置之上;檢查模塊:在每次狀態(tài)改變之前,對方塊企圖占用的區(qū)域加以檢查。如果無處可放,則此次移動失敗。如果方塊到底了,應(yīng)該固定在當(dāng)前位置,這可以調(diào)用前面的畫方塊模塊實現(xiàn),同時再產(chǎn)生一個新的方塊。這樣還需要產(chǎn)生新方塊的模塊。還有當(dāng)每次方塊到底的時候,都需要檢查一下是否有新的層排滿了,如果有的話應(yīng)該消層。這就又需要用到兩個模塊,檢查是否排滿和消層。產(chǎn)生新方塊時也需要檢查其產(chǎn)生的位置,如果這個位置已被占用,則游戲結(jié)束。同時下墜塊通過分文7種,每種下墜塊通過4個三維數(shù)組來表示其狀態(tài),在調(diào)用下墜塊時,通過其三維坐標(biāo)值和旋轉(zhuǎn)值就可以來確定下墜塊的形狀。在設(shè)計時還要考慮到下墜塊下墜時間和下墜速度的問題,在一個下墜塊位置固定后,則下一個下墜塊開始下墜,同時設(shè)計一個定時器通過對其的調(diào)用,就可以實現(xiàn)對下墜塊速度的控制。在游戲進行時需要對游戲狀態(tài)進行判斷,即游戲正常繼續(xù)運行和游戲結(jié)束兩種狀態(tài),判定的依據(jù)為游戲容器的最上方坐標(biāo)與固定的方塊坐標(biāo)進行比較,若固定的方塊超過游戲容器的高度,則判定游戲結(jié)束,調(diào)用屏幕繪制程序,顯示游戲結(jié)束狀態(tài);若固定的方塊未超過游戲容器的高度,則繼續(xù)游戲。遠/近端屏幕繪制 屏幕的繪制要考慮到單機模式和聯(lián)機模式,在兩種模式下繪制有所不同。在單機游戲模式下,整個手機屏幕被劃分為兩個部分,左邊為游戲容器部分,游戲主要在該容器內(nèi)進行,右邊顯示游戲分數(shù)、狀態(tài)、等級下一個墜落快等。圖a為單機游戲屏幕示意圖。在進行單機模式下游戲時,通過設(shè)定一個固定的時間值來進行屏幕的刷新,控制對下墜塊的繪制;且在有新的下墜塊產(chǎn)生或進行消行時也調(diào)用函數(shù)對屏幕進行重新繪制進行刷新,這樣也就保證了在游戲時不會有間斷感,使游戲感覺流暢。圖 a 單機模式屏幕繪制示意圖 在聯(lián)網(wǎng)游戲模式下,屏幕的左半部分繪制兩個屏幕,這兩個屏幕一大一小,小屏幕顯示的是遠端玩家信息,大屏幕繪制的是本地玩家的游戲狀態(tài),在屏幕的左部分分別顯示本地玩家和遠端玩家的分數(shù)、狀態(tài)、等級下一個墜落快等。如圖b為聯(lián)機模式屏幕示意圖。圖 b 聯(lián)機模式下手機屏幕繪制示意圖在圖b中,當(dāng)在進行藍牙聯(lián)機模式下游戲時,通過設(shè)定一個固定的時間值來進行對主屏的刷新,控制對下墜塊的繪制;且在有新的下墜塊產(chǎn)生或進行消行時也調(diào)用函數(shù)對主屏的屏幕進行重新繪制進行刷新,而附屏通過傳輸過來的數(shù)據(jù)對屏幕進行更新,設(shè)定一個時間值,每過一定的時間則向遠端發(fā)送一次數(shù)據(jù),且每當(dāng)本地玩家有消行或新下墜塊產(chǎn)生時,也發(fā)送數(shù)據(jù),這樣就保證了附屏更新的實時性。小區(qū)內(nèi)藍牙聯(lián)網(wǎng)越來越多的移動手機開始支持java應(yīng)用,應(yīng)用于無線藍牙技術(shù)標(biāo)準(zhǔn)的java apis(jabwt),由jsr 82(java藍牙無線技術(shù)apis,java apis for bluetooth wireless technology)規(guī)范定義,支持快速開發(fā)便捷、及用途廣泛的藍牙應(yīng)用。無線設(shè)備生產(chǎn)商已對jabwt規(guī)范做出反應(yīng),他們宣布移動手機和其它產(chǎn)品將支持jabwt應(yīng)用。即本課題選用的藍牙規(guī)范為j2me wireless toolkit所支持的jabwt。toolkit的preferences utility(使用偏好)提供了新的bluetooth/obex標(biāo)簽以進行藍牙參數(shù)設(shè)置。在此欄下obex設(shè)置和三個藍牙子標(biāo)簽,它們分別是:internal properties(內(nèi)部屬性)標(biāo)簽允許你設(shè)置設(shè)備搜索的超時時間,system properties(系統(tǒng)屬性)標(biāo)簽允許用戶定義一些調(diào)用localdevice.getproperty()方法便可得到藍牙屬性。這里對jsr82(jabwt)規(guī)范進行簡單講解。藍牙 api依賴java通用連接框架,java藍牙api定義了兩個包:一個是java藍牙api的核心javax.bluetooth,另一個是用于對象的javax.obex(obex)。根據(jù)jsr 82 規(guī)范,所有潛在藍牙系統(tǒng)都必須支持藍牙控制中心(bcc),該控制中心是一個控制面板,它的作用類似于可以讓用戶或oem給堆棧中的某些配置參數(shù)定義具體值得應(yīng)用程序,特別是,它將應(yīng)用于堆棧初始化中。任何藍牙應(yīng)用都有以下這些組件:堆棧初始化組件,設(shè)備管理組件,設(shè)備發(fā)現(xiàn)組件,服務(wù)發(fā)現(xiàn)組件和通訊組件。jsr82規(guī)范定義的api中包括21個類及接口。jsr82的最小需求是受限連接設(shè)備配置(cldc),而可靠連接設(shè)備配置(cdc)是cldc的超集,所以jsr82可以再cldc及cdc上實現(xiàn),即可以再任意j2me環(huán)境下支持使用jsr82規(guī)范。jsr82被設(shè)計為支持數(shù)據(jù)傳輸,不支持語音傳輸。它從便于開發(fā)的角度所規(guī)定的api分為:設(shè)備/服務(wù)發(fā)現(xiàn)(discovery)、通信(communication)、設(shè)備管理(devicemanagement)3大類。發(fā)現(xiàn)類包括設(shè)備的發(fā)現(xiàn)、服務(wù)發(fā)現(xiàn)和服務(wù)注冊的類或接口;通信類包括在串行剖面層次、rfcomm層次、l2cap層次和obex層次建立連接和使用連接的類或接口;設(shè)備管理類包括代表控制和管理的類或接口?;趈sr82的協(xié)議棧如圖c所示,黃色部分為jse82規(guī)范提供給java平臺開發(fā)者的藍牙軟件棧。圖c 基于jsr82的協(xié)議棧jsr82(jabwt)與midp、cldc的關(guān)如圖d所示,cldc是midp和jsr82的基礎(chǔ)。無論midp還是jsr82均給予cldc而設(shè)計。圖 d jsr82與midp、cldc的層次關(guān)系下面介紹設(shè)備管理api。設(shè)備管理api有3個主要的類來支持設(shè)備管理:.localdevice類(本地設(shè)備類);.remotedevice類(遠端設(shè)備類);.deviceclass類。本地設(shè)備類(localdevice類)標(biāo)識了本地藍牙設(shè)備。藍牙應(yīng)用程序和localdevice之間的關(guān)系是典型的一對一關(guān)系,如圖e所示。 圖 e 本地設(shè)備類 本地設(shè)備提供了方法來返回關(guān)于本地設(shè)備的信息,并且能夠進入bluetooth manager:(1) .getbluetoothaddress()返回藍牙設(shè)備地址;(2) .getdeviceclass()返回設(shè)備類;(3) .getfriendlyname()返回設(shè)備友好名稱,藍牙設(shè)備名通常是用戶在藍牙控制中心為其設(shè)置的;(4) .getrecord()返回一個指定藍牙連接的服務(wù)記錄;(5) .updaterecord()方法用來為指定的servicerecord更新sddb服務(wù)記錄;(6) .getdiscoverable()返回設(shè)備的可發(fā)現(xiàn)狀態(tài);(7) .setdiscoverable()設(shè)置設(shè)備的可發(fā)現(xiàn)狀態(tài);(8) .getdiscoveryagent()返回一個參考給發(fā)現(xiàn)代理;(9) .getproperty()返回一個設(shè)備的藍牙屬性。 通過調(diào)用getproperty()方法用戶可以得到的屬性包括:(1) .bluetooth.api.version,藍牙api版本;(2) .bluetooth.sd.attr.retrievable.max,一次性能夠被獲得的服務(wù)記錄屬性的最大值;(3) .bluetooth.connected.devices.max,支持的連接設(shè)備的最大值;(4) .bluetooth.sd.trans.max,同時發(fā)生的服務(wù)發(fā)現(xiàn)處理的最大值;(5) .bluetooth.l2cap.receivemtu.max,l2cap最大發(fā)射單元。 遠端設(shè)備類(remotedevice)一個remotedevice的實例代表了一個遠端藍牙設(shè)備。在一個藍牙客戶端應(yīng)用程序可以進行服務(wù),消費之前,它必須發(fā)送一個設(shè)備請求來發(fā)現(xiàn)遠端設(shè)備。典型的藍牙應(yīng)用程序和遠端設(shè)備之間的關(guān)系是一對多,如圖f所示。圖 f 遠端設(shè)備類 遠端設(shè)備(remotedevice)提供的方法中,有些很類似于本地設(shè)備(localdevice)里提供的方法:(1) getbluetoothaddress()返回藍牙地址;(2) .getfriendlyname()返回藍牙設(shè)備名;(3) .getremotedevice()返回相應(yīng)的被指定藍牙連接的遠端設(shè)備;(4) .authenticate()嘗試識別驗證遠端設(shè)備;(5) .authorize()為指定的藍牙連接去嘗試批準(zhǔn)遠端設(shè)備訪問本地設(shè)備;(6) .encrypt()嘗試為指定的藍牙連接開啟或關(guān)閉加密;(7) .isauthenticated()測試是否遠端設(shè)備可以被驗證;(8) .isauthorized()測試是否遠端設(shè)備已經(jīng)被藍牙控制中心授權(quán)訪問本地設(shè)備以進行藍牙連接;(9) .isencrypted()測試是否本地設(shè)備和遠端設(shè)備之間的通信被加密;(10) .istrusteddevice()測試是否遠端設(shè)備被藍牙控制中心指定為可信任的。 deviceclass類。一個deviceclass對象代表一個設(shè)備的設(shè)備類(cod),例如一個打印機或者一部電話。cod包括一個主類,一個輔的類,和服務(wù)類型或服務(wù)類。deviceclass提供了如下方法:(1) .getmajordeviceclass()方法獲取設(shè)備的主類;(2) .getminordeviceclass()方法獲取設(shè)備的輔類;(3) .getserviceclasses()獲取設(shè)備的服務(wù)類。當(dāng)一個設(shè)備被發(fā)現(xiàn),同時他的類也會被發(fā)現(xiàn);當(dāng)發(fā)現(xiàn)代理調(diào)用devicediscovered()時,其中一個參數(shù)就是deviceclass。用戶可以通過它的getdeviceclass()方法找到本地設(shè)備的cod。系統(tǒng)的最終方案 本軟件通過netbeans ide軟件搭建的j2me環(huán)境開發(fā)平臺,編寫java應(yīng)用語言的手機游戲程序。該課題可以主要分為兩大模塊:l 基于jsr82的設(shè)備與服務(wù)的發(fā)現(xiàn)和建立連接;l 游戲的控制和屏幕繪制等。 考慮到游戲為聯(lián)機游戲,因此在開發(fā)時應(yīng)該注意變量的區(qū)分,應(yīng)在程序中定義兩組類似的成員變量和常量,類中除共享的成員變量外,變量都需要定義成本地玩家和遠端玩家兩份,通過對遠端變量增加_remote(或者_remote)后綴來區(qū)分本地變量和遠端變量。在程序設(shè)計時,應(yīng)該考慮到下墜塊的設(shè)計問題,本課題設(shè)計采用三維數(shù)組來表示,通過增加其旋轉(zhuǎn)值的設(shè)定,來表示7種下墜塊旋轉(zhuǎn)形狀的改變,對與7種下墜塊對于其形狀和對應(yīng)的顏色都有一個對應(yīng)的id值,這樣方便了值的調(diào)用。同時對與游戲的邏輯控制和地圖的控制也是本課題的重點之一,屏幕的繪制方法為兩種,一種是玩家進行時單機模式進行游戲時的繪制方法,另一種為聯(lián)網(wǎng)模式下屏幕的繪制。而在聯(lián)網(wǎng)模式下邏輯控制的判定機制和單機模式下的邏輯控制的判定機制也有所不同,即游戲勝利的判定條件不同。游戲在進行單機模式運行時,游戲的判定機制為:當(dāng)屏幕已被填滿則判定游戲結(jié)束;而游戲在進行聯(lián)網(wǎng)模式下運行時,通過藍牙接口實現(xiàn)數(shù)據(jù)的通信,在遠端屏幕被填滿,判定游戲結(jié)束,遠端玩家主屏顯示游戲結(jié)束,本地玩家游戲主屏顯示游戲勝利,反之亦然。系統(tǒng)軟件設(shè)計系統(tǒng)軟件設(shè)計本軟件的系統(tǒng)操作流程分為以下幾步:(1) 用戶啟動midlet后,首先進入master/slave選擇畫面,若選擇slave,則向周圍廣播自己的服務(wù),然后等待;若選擇master,則搜索周圍服務(wù)。master端在搜索到服務(wù)后,將slave端的服務(wù)描述信息顯示在屏幕上,若選擇singer則進行單機游戲;(2) master選擇想與之進行游戲的slave(在搜素已存在的服務(wù)時可能不只一個),建立連接;(3) 按“開始”鍵,判斷遠端玩家是否已經(jīng)同意開始游戲(進入“等待”狀態(tài)),如果沒有同意,則“等待”(game_wait),并且發(fā)送“等待”信號給遠端玩家;(4) 按“開始”鍵,如果遠端玩家已經(jīng)“等待”(game_wait),則“初始化”(game_init)游戲,同時發(fā)送該信號給遠端玩家;(5) 開始游戲后,再按“開始”鍵,則進入暫停(game_paused)狀態(tài),再按次則繼續(xù)運行游戲(game_run)狀態(tài),兩種狀態(tài)可以相互切換;(6) 若收到對方游戲結(jié)束(game_over)的信號,則主屏上顯示勝利(game_win)畫面,附屏顯示示游戲失敗的畫面,若本地玩家游戲結(jié)束,則本地玩家主屏顯示游戲失敗的畫面,附屏上顯示游戲勝利的畫面,并發(fā)送該信號給遠端玩家;(7) 若遠端玩家斷開連接或者退出,則本地玩家繼續(xù)游戲,代表遠端玩家的gamestate的值為game_exit或者為game_disconnected,并停止發(fā)送數(shù)據(jù)。其中主屏顯示本地玩家游戲狀態(tài),附屏顯示遠端玩家的游戲狀態(tài),主屏占三分之一,附屏占五分之一。根據(jù)設(shè)定的系統(tǒng)操作流程則可以進行系統(tǒng)編程。系統(tǒng)設(shè)計框圖系統(tǒng)在設(shè)計時,按照其功能,對編碼進行考慮分為三個包文件:(1) game.tetris包,其中包括:游戲的主程序模塊、邏輯控制模塊、屏幕的繪制模塊、方塊生成與坐標(biāo)控制模塊、游戲地圖存儲模塊、數(shù)據(jù)傳輸序列化模塊等;(2) game.bluetooth包,其中包括:藍牙設(shè)備與服務(wù)的發(fā)現(xiàn)模塊、主從角色選擇模塊、主從線程模塊、藍牙連接的保存模塊等;(3) 缺省包,這個包中保存了提示音信息。系統(tǒng)詳細構(gòu)成如圖1所示。圖 1系統(tǒng)構(gòu)成 game.bluetooth包中,bluetoothdiscover類提供了一個封裝后的api,提供了簡單的接口進行藍牙設(shè)備及服務(wù)的發(fā)現(xiàn);bluetoothconnection類封裝了建立后的i/o流。game.tetris包中的tetriscanvas類封裝了游戲邏輯,tetrisblock類定義了7種方塊及方塊的繪制方法,tetrismap類中保存的是游戲地圖中的數(shù)據(jù)。這些類的關(guān)系可用圖2表示。圖 2系統(tǒng)中類的關(guān)系圖mainmidlet類為主程序類,主要控制游戲進程;bluetoothdiscover類為藍牙設(shè)備及服務(wù)發(fā)現(xiàn)類;bluetoothconnection類提供了藍牙保存功能;tetrisblock類對方塊生成與坐標(biāo)起到控制作用;tetriscanvas類中定義了游戲的邏輯控制及對tetrismap類調(diào)用繪制的方法;tetrismap類實現(xiàn)了游戲地圖數(shù)據(jù)的存儲;masterslaveselect類引導(dǎo)玩家進入聯(lián)機游戲,實現(xiàn)了角色劃分;masterthread類及singlethread類分別定義了本地玩家與遠端玩家藍牙連接方法;serializa

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論