版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 手機(jī)游戲(堡壘)的設(shè)計(jì)與開(kāi)發(fā)</p><p><b> 摘要</b></p><p> 隨著手機(jī)業(yè)務(wù)的迅速發(fā)展,手機(jī)游戲逐漸成為移動(dòng)增值服務(wù)的興奮點(diǎn)。本畢業(yè)設(shè)計(jì)就著眼于J2ME技術(shù)的應(yīng)用,設(shè)計(jì)與開(kāi)發(fā)一款探險(xiǎn)類手機(jī)游戲(堡壘)。</p><p> 該堡壘游戲是基于J2ME開(kāi)發(fā)的手機(jī)RPG游戲,采用midp2.0技術(shù)實(shí)現(xiàn)
2、了菜單、地圖、主角動(dòng)作及怪物動(dòng)作和AI等,主要通過(guò)精靈間的碰撞檢測(cè)來(lái)觸動(dòng)事件發(fā)生。游戲的主流程是玩家利用手機(jī)鍵盤操作主角在堡壘中拾取道具破解迷宮,并且隨著關(guān)數(shù)的增加,游戲的難度也逐漸增加。另外,游戲中還包括了排行榜,聲音設(shè)置,幫助等各種附加功能。其中充滿了趣味性和刺激性,是適合各年齡段的益智冒險(xiǎn)類游戲。</p><p> 本論文介紹了J2ME的相關(guān)技術(shù)及該堡壘游戲程序的結(jié)構(gòu)分析和具體功能的實(shí)現(xiàn)。</p&g
3、t;<p> 關(guān)鍵詞:J2ME; 手機(jī)游戲; 堡壘</p><p> The Design and Development of a Handset Game (Castle)</p><p><b> Abstract</b></p><p> With the rapid development of cell p
4、hone business, cell phone games have gradually become the hotspot of mobile value-added services. This graduate design which focuses on J2ME technology designs and develops a handset adventure game (castle).</p>&
5、lt;p> This castle game is a handset RPG game based on J2ME which mainly examines the demon’s collision to touch off the event. It uses midp2.0 technology to achieve the menu, the map, the hero moves, monster AI etc.
6、The game has included the order list, the sound establishment, helps of function etc. Player operates the lead through the handset to collect the stage prop in the castle to break through the labyrinth. The difficulty of
7、 the game will gradually increase along with the increase of stage. Ot</p><p> This paper introduces related technology of the J2ME and the structure analysis and the concrete function realization of this c
8、astle game procedure.</p><p> Key words: J2ME;handset game;castle</p><p><b> 目 錄</b></p><p><b> 論文總頁(yè)數(shù):23頁(yè)</b></p><p><b> 1引 言1&l
9、t;/b></p><p> 2 手機(jī)游戲的現(xiàn)狀和J2ME的概況1</p><p><b> 2.1軟件現(xiàn)狀1</b></p><p> 2.2 J2ME概況2</p><p> 2.2.1 J2ME的由來(lái)2</p><p> 2.2.2 J2ME的3層體系結(jié)構(gòu)及MIDP簡(jiǎn)
10、介2</p><p> 2.2.3 Configuration和Profiles3</p><p> 2.3 J2ME現(xiàn)狀和前景4</p><p> 2.4 手機(jī)游戲業(yè)務(wù)5</p><p> 3 開(kāi)發(fā)環(huán)境介紹5</p><p><b> 3.1開(kāi)發(fā)環(huán)境5</b></p&
11、gt;<p> 3.2 關(guān)于SonyEricsson Wireless Tool Kit5</p><p> 4手機(jī)游戲(堡壘)的開(kāi)發(fā)5</p><p> 4.1 游戲的的思路、構(gòu)想5</p><p> 4.1.1 游戲想法的產(chǎn)生5</p><p> 4.1.2 對(duì)游戲設(shè)計(jì)的初步認(rèn)識(shí)6</p>
12、<p> 4.1.3 模塊成型階段6</p><p> 4.2 程序的類結(jié)構(gòu)7</p><p> 4.3 游戲的流程圖7</p><p> 4.4 游戲的實(shí)現(xiàn)8</p><p> 4.4.1 主類GameMIDlet的實(shí)現(xiàn)8</p><p> 4.4.2 游戲畫布MyGame類的實(shí)現(xiàn)
13、13</p><p> 4.4.3 玩家精靈GamePlayer類的實(shí)現(xiàn)17</p><p> 4.4.5 SoundEffects類的實(shí)現(xiàn)19</p><p> 5 程序設(shè)計(jì)過(guò)程中遇到的一些重要問(wèn)題19</p><p> 5.1 關(guān)于碰撞的問(wèn)題19</p><p> 5.2 關(guān)于游戲畫面的顯示問(wèn)題
14、20</p><p><b> 結(jié) 論20</b></p><p><b> 參考文獻(xiàn)20</b></p><p><b> 致 謝22</b></p><p><b> 聲 明23</b></p><
15、p><b> 1引 言</b></p><p> Java語(yǔ)言是美國(guó)Sun Microsystem的James Gosling、Pratrick Naughton及Mike Sheridan等人于1991年精心設(shè)計(jì)出來(lái)的計(jì)算機(jī)編程語(yǔ)言,其構(gòu)想在于實(shí)現(xiàn)使用同一種編程語(yǔ)言所寫出來(lái)的程序可以在不同的平臺(tái)上運(yùn)作。這種架構(gòu)對(duì)于消費(fèi)性電子產(chǎn)品而言是具有革命性的,因?yàn)樵谙M(fèi)性電子產(chǎn)品中的處理器
16、及操作系統(tǒng)各不相同,要在這些平臺(tái)上開(kāi)發(fā)程序必須要了解各個(gè)平臺(tái)的特性,以及其提供的API使用方式,分別開(kāi)發(fā)不同的版本才能執(zhí)行,影響應(yīng)用程序的普及性。</p><p> 近幾年,由于微處理器性能的大幅提升,加上無(wú)線通訊技術(shù)的突破,手持式移動(dòng)設(shè)備開(kāi)始受到大眾的青睞。短短幾年內(nèi),手機(jī)已經(jīng)升級(jí)了幾代產(chǎn)品,普及率逐年攀升,生產(chǎn)效率不斷上升,產(chǎn)品價(jià)格比個(gè)人電腦的摩爾定律有更驚人的下調(diào),以至手機(jī)是大多是城市居民不可缺少的一件隨
17、身設(shè)備。繼短信、彩信等服務(wù)之后,中國(guó)移動(dòng)提供基于Java的百寶箱業(yè)務(wù),應(yīng)用產(chǎn)品遍及商務(wù)應(yīng)用、信息獲取、英漢互譯、游戲娛樂(lè)等多媒體領(lǐng)域。</p><p> 為了適應(yīng)移動(dòng)數(shù)據(jù)的發(fā)展,推動(dòng)無(wú)線電子商務(wù)等業(yè)務(wù)的發(fā)展,J2ME(Java 2 Micro Edition)既用于嵌入式系統(tǒng)的Java被引入無(wú)線領(lǐng)域。J2ME的出現(xiàn)實(shí)際上是Java技術(shù)的回歸。作為Java2平臺(tái)的一部分,J2ME與J2SE、J2EE一起,為無(wú)線應(yīng)
18、用的客戶端和服務(wù)器端建立了完整的開(kāi)發(fā)、部署環(huán)境。隨著J2ME的應(yīng)用,它為移動(dòng)互聯(lián)引入了一種新的模型,既允許手機(jī)可以從互聯(lián)網(wǎng)上下載各種應(yīng)用程序,并在手機(jī)創(chuàng)造可執(zhí)行環(huán)境離線運(yùn)行這些程序。由于定義了可執(zhí)行下載的標(biāo)準(zhǔn),并在手機(jī)上創(chuàng)立了可執(zhí)行環(huán)境和程序開(kāi)發(fā)語(yǔ)言,由此,在移動(dòng)通信業(yè)第一次為軟件開(kāi)發(fā)商創(chuàng)造了巨大的商業(yè)機(jī)會(huì),手機(jī)用戶在得到豐富應(yīng)用體驗(yàn)的同時(shí),也大大提高了運(yùn)營(yíng)商的網(wǎng)絡(luò)流量。</p><p> 2 手機(jī)游戲的現(xiàn)狀和
19、J2ME的概況</p><p><b> 2.1軟件現(xiàn)狀</b></p><p> 在信息社會(huì)中,手機(jī)及其他無(wú)線設(shè)備越來(lái)越多的走進(jìn)普通百姓的工作和生活,隨著信息網(wǎng)絡(luò)化的不斷進(jìn)展,手機(jī)及其他無(wú)線設(shè)備上網(wǎng)絡(luò)勢(shì)在必行。但是傳統(tǒng)手機(jī)存在以下弊端:</p><p> 1. 傳統(tǒng)手機(jī)出廠時(shí)均由硬件廠商固化程序,程序不能增加、刪除,有了錯(cuò)誤也不能更新
20、、修改,若要增加新功能必須另?yè)Q一部手機(jī)。</p><p> 2. 傳統(tǒng)手機(jī)訪問(wèn)互聯(lián)網(wǎng)是通過(guò)WAP(Wireless Application Protocal),所有網(wǎng)絡(luò)資源必須接通網(wǎng)絡(luò)才能在線訪問(wèn),非常耗時(shí)、費(fèi)用亦很高。</p><p> 而Java技術(shù)在無(wú)線應(yīng)用方面的優(yōu)勢(shì)非常明顯:</p><p> 1. 應(yīng)用程序可按需下載,而不是購(gòu)買由硬件商提供的套件
21、,可升級(jí)空大。</p><p> 2. Java技術(shù)提供了一個(gè)類庫(kù),它使的應(yīng)用開(kāi)發(fā)商可以創(chuàng)建更為直覺(jué)、豐富的用戶界面(GUI);</p><p> 3.Java技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用更為有效,因?yàn)閼?yīng)用程序可以下載到器件上,并在本地運(yùn)行,僅僅是在連接到服務(wù)器時(shí)才會(huì)占用網(wǎng)絡(luò)帶寬。</p><p> 2.2 J2ME概況</p><p>
22、2.2.1 J2ME的由來(lái)</p><p> Java的最大目標(biāo)和特點(diǎn),就是“一次編寫,到處運(yùn)行”的平臺(tái)無(wú)關(guān)性。但是,一套標(biāo)準(zhǔn)無(wú)法適應(yīng)各種不同的需求。因此,Java技術(shù)目前共有三套,分別針對(duì)不同的平臺(tái)和應(yīng)用。</p><p> Standard Edition(J2SE,標(biāo)準(zhǔn)版):針對(duì)桌面端PC和工作站的個(gè)人和低端商務(wù)應(yīng)用。 </p><p> Enterpr
23、ise Edition(J2EE,企業(yè)版):針對(duì)服務(wù)器端企業(yè)級(jí)應(yīng)用,支持Servlets, JSP和XML等等。</p><p> Micro Edition(J2ME,袖珍版):針對(duì)有限內(nèi)存,顯示和處理能力的設(shè)備,主要是消費(fèi)電子和嵌入式設(shè)備領(lǐng)域(這實(shí)際正是Java語(yǔ)言設(shè)計(jì)最初的目標(biāo)領(lǐng)域)。</p><p><b> 圖1 java結(jié)構(gòu)</b></p>
24、<p> 在消費(fèi)電子和嵌入式設(shè)備領(lǐng)域,內(nèi)存從幾百K到幾十M,從沒(méi)有屏幕Web-TV,CPU從低功耗的嵌入式處理器到206MHz的RISC處理器,硬件條件的差異是相當(dāng)大的。這就使得J2ME的標(biāo)準(zhǔn)需要有不同的層次和類別來(lái)適應(yīng)這個(gè)復(fù)雜的領(lǐng)域,因此相比之下J2ME就比J2SE和J2EE的標(biāo)準(zhǔn)要復(fù)雜得多。因此,清楚的理解J2ME的體系結(jié)構(gòu)的劃分才能更好的理解和掌握J(rèn)2ME。</p><p> 2.2.2
25、J2ME的3層體系結(jié)構(gòu)及MIDP簡(jiǎn)介</p><p> J2ME的3層體系結(jié)構(gòu)依照各種設(shè)備的資源特性,將J2ME技術(shù)構(gòu)架分為簡(jiǎn)表(Profile)、配置(Configuration)和Java Virtual Machine(JVM)3層,然后再進(jìn)一步細(xì)分,這使J2ME能夠在每一類設(shè)備的限制下工作,而同時(shí)提供最低限度的Java語(yǔ)言功能性。</p><p> 關(guān)于J2ME的體系結(jié)構(gòu),可以
26、這樣來(lái)進(jìn)行總結(jié):Configuration的分類是根據(jù)計(jì)算能力的不同來(lái)劃分的,同類設(shè)備的計(jì)算能力相近。Configuration是一個(gè)規(guī)范,定義了這類設(shè)備的共同Java平臺(tái),定義與設(shè)備無(wú)關(guān)的Java虛擬機(jī)和核心庫(kù),是平臺(tái)相容性的基礎(chǔ)。Profile的分類是根據(jù)設(shè)備功能劃分的,同類功能的設(shè)備其他各種硬件條件和需求也相近。Profile是一組API,在某Configuration的基礎(chǔ)上擴(kuò)展了針對(duì)設(shè)備特定功能的API,使得標(biāo)準(zhǔn)能夠完全適應(yīng)特
27、殊的設(shè)備,徹底發(fā)揮設(shè)備的功能。</p><p> J2ME體系的一般結(jié)構(gòu)是:由Configuration定義的Java虛擬機(jī)運(yùn)行于設(shè)備的宿主操作系統(tǒng)之上,構(gòu)成整個(gè)平臺(tái)的基礎(chǔ)。Configuration提供了基本的語(yǔ)言特性,Profile提供針對(duì)設(shè)備的特殊功能API和擴(kuò)展類庫(kù)。應(yīng)用程序的運(yùn)行環(huán)境需要一個(gè)Configuration和至少一個(gè)Profile,多個(gè)Profile可以共存,也可以疊加。</p>
28、<p> MIDP(Mobile Information Device Profile)定義了針對(duì)移動(dòng)信息處理設(shè)備(主要指智能手機(jī)和一部分具有無(wú)線通信功能的PDA)的圖形界面,輸入和時(shí)間處理,持久性存儲(chǔ),無(wú)線電話網(wǎng)絡(luò)連接之上的一些消息處理(例如短消息),安全等等API,并且考慮到了移動(dòng)信息設(shè)備的屏幕和內(nèi)存限制。類似于J2SE中的Applet框架,MIDP提供了基于javax.microedition.midlet 包的M
29、IDlet應(yīng)用程序框架。</p><p> 因?yàn)镸IDP提出的比較早,目前重要的智能手機(jī)和PDA操作系統(tǒng)上都已有了相應(yīng)的實(shí)現(xiàn),而且應(yīng)用的也比較廣泛。</p><p> 2.2.3 Configuration和Profiles</p><p> 針對(duì)消費(fèi)電子和嵌入式設(shè)備領(lǐng)域豐富多樣的設(shè)備和彼此相差極大的計(jì)算能力及各種硬件條件,J2ME首先根據(jù)最基本的一些特征把它
30、們劃分為兩類。</p><p> 具備間斷網(wǎng)絡(luò)通訊能力的個(gè)人移動(dòng)信息設(shè)備:如手機(jī),雙向呼機(jī),PDA(Personal Digital Assistant,個(gè)人數(shù)字助理,也稱掌上電腦)等等。 有固定的不間斷網(wǎng)絡(luò)連接的共享連接信息設(shè)備:如置頂盒(set-top boxes),Web-TV,支持Internet的有屏幕電話,汽車娛樂(lè)/導(dǎo)航系統(tǒng)等等。 </p><p> Sun對(duì)J2ME 有一
31、個(gè)很好的概括:J2ME技術(shù)有兩個(gè)設(shè)計(jì)中心——手持的設(shè)備,和可以插到墻上插座的設(shè)備。第一類設(shè)備往往是個(gè)人化的,移動(dòng)的,使用電池,體積和功耗都有限制,因此功能和計(jì)算能力有限。第二類設(shè)備一般是固定的,因此體積沒(méi)有太大限制。由于固定,可以有持續(xù)電源供應(yīng),因此功耗沒(méi)有太大問(wèn)題,計(jì)算能力相對(duì)充裕。</p><p> 計(jì)算能力是這兩類設(shè)備的主要區(qū)別,對(duì)其上可能的應(yīng)用和環(huán)境顯然有著本質(zhì)影響,不同類別的設(shè)備不可能采用同樣的Jav
32、a平臺(tái),必須分別定義。針對(duì)這兩大類設(shè)備的平臺(tái)規(guī)范就是Configuration。第一類設(shè)備的Configuration稱為CLDC(Connected, Limited Device Configuration),第二類稱為CDC(Connected Device Configuration)。</p><p> 屬于同一類的設(shè)備計(jì)算能力是相似的,但是其他功能和條件還有非常大的區(qū)別。作為Java平臺(tái)必須保證相容
33、性,這就必須舍棄所有的設(shè)備特殊性。因此,Configuration就是支持一組通用設(shè)備的最小Java平臺(tái),作為這些設(shè)備的最小公分母來(lái)保證不同設(shè)備間的平臺(tái)相容性。這里的Java平臺(tái)主要是指Java虛擬機(jī)(JVM)和核心庫(kù)。</p><p> 在Configuration中舍棄了設(shè)備的特殊性來(lái)保證Java平臺(tái)的相容性,但是僅僅有Configuration顯然是不夠的,特殊的具體設(shè)備其獨(dú)有的功能和硬件條件都沒(méi)有得到支
34、持。為此,在Configuration的基礎(chǔ)上,根據(jù)設(shè)備具體功能再進(jìn)行一次劃分,比如智能手機(jī),PDA等等。功能的劃分也就是其他硬件條件的劃分,比如屏幕大小,內(nèi)存,計(jì)算能力,電力供應(yīng)等等都是從屬于功能的,因此同功能的設(shè)備的硬件條件都是非常相似的。Profile(譯為簡(jiǎn)表或者簡(jiǎn)檔)就是針對(duì)每一類功能設(shè)備的特殊性定義的與設(shè)備特性相關(guān)的API,建筑于Configuration之上,作為Configuration的擴(kuò)展和補(bǔ)充。例如MIDP(Mob
35、ile Information Device Profile,移動(dòng)信息設(shè)備Profile)就定義了關(guān)于移動(dòng)信息設(shè)備(主要指智能手機(jī)和一部分具有無(wú)線通信功能的PDA)的圖形界面,輸入和時(shí)間處理,持久性存儲(chǔ),短消息等等的API,并且考慮到了移動(dòng)信息設(shè)備的屏幕和內(nèi)存限制。而正在制定中的PDA Profile則定義了針對(duì)PDA的API,其屏幕,內(nèi)存條件都要大于MIDP,但是網(wǎng)絡(luò)方面的要求則顯</p><p> 2.3
36、J2ME現(xiàn)狀和前景</p><p> J2ME已經(jīng)廣泛的應(yīng)用在了很多的移動(dòng)設(shè)備上,很多的移動(dòng)設(shè)備都實(shí)現(xiàn)MIDP的參考實(shí)現(xiàn),但不同的移動(dòng)設(shè)備還是有一些不同的地方,比如應(yīng)用與手機(jī)上的Profile就不適合在PDA的Profile。有一些系統(tǒng),比如Symbian實(shí)現(xiàn)了CLDC和MIDP,作為智能手機(jī)的操作系統(tǒng),是理想的MIDP應(yīng)用平臺(tái)。其他的系統(tǒng),如在Compaq的iPaq上已經(jīng)實(shí)現(xiàn)了CDC,IBM的WebSpher
37、e Micro Environment在Pocket PC上實(shí)現(xiàn)了CLDC,CDC和MIDP??梢?jiàn),在硬件條件較好的PDA上都可以實(shí)現(xiàn)CDC的標(biāo)準(zhǔn)。由于這些主要操作系統(tǒng)平臺(tái)都是開(kāi)放的,基本可以相信,主要的移動(dòng)信息設(shè)備操作系統(tǒng)都將一直提供J2ME的支持,但是具體支持哪個(gè)標(biāo)準(zhǔn)則并不一定死板地按照CLDC和CDC的最初定義,和設(shè)備的硬件條件和廠商的選擇有關(guān),或者可能同時(shí)實(shí)現(xiàn)多個(gè)標(biāo)準(zhǔn)。所以說(shuō)J2ME的還是在快速的發(fā)展的。</p>
38、<p> 2.4 手機(jī)游戲業(yè)務(wù) </p><p> 手機(jī)游戲是移動(dòng)多媒體時(shí)代最有價(jià)值的應(yīng)用。這是因?yàn)?,游戲是多媒體應(yīng)用中集大成的業(yè)務(wù),圖像、音樂(lè)、互動(dòng)都能在游戲中實(shí)現(xiàn),能充分滿足用戶各方面的需求。</p><p> 雖然目前手機(jī)游戲還無(wú)法與PC游戲相比,其顯示功能和鍵盤輸入、聲音處理能力也形成一定制約。但是隨時(shí)隨地可操作可聯(lián)網(wǎng)的特性大大拓展了人們娛樂(lè)休閑的時(shí)間和空間,以游戲
39、功能為主的手機(jī)終端在市場(chǎng)上漸被認(rèn)可,多媒體功能正向手機(jī)的標(biāo)配功能演進(jìn),制約手機(jī)游戲發(fā)展的技術(shù)瓶頸將被打破。當(dāng)前的手機(jī)游戲產(chǎn)業(yè)盡管仍然存在很多制約其發(fā)展的瓶頸,但手機(jī)游戲已顯示出非比尋常的發(fā)展速度,其市場(chǎng)潛力十分巨大,將成為移動(dòng)增值服務(wù)市場(chǎng)新的增長(zhǎng)點(diǎn)。</p><p><b> 3 開(kāi)發(fā)環(huán)境介紹 </b></p><p><b> 3.1開(kāi)發(fā)環(huán)境</
40、b></p><p> 操作系統(tǒng):Microsoft Windows XP</p><p> 程序語(yǔ)言:Java 2</p><p> 開(kāi)發(fā)平臺(tái):Java 2 Micro Edition</p><p> 開(kāi)發(fā)工具: Wireless Tool Kit 2.1+ UltraEdit-32_12.00a+1_SC</p>
41、;<p> 3.2 關(guān)于SonyEricsson Wireless Tool Kit</p><p> SonyEricsson WTK(Wireless Tool Kit)是SonyEricsson公司針對(duì)J2ME推出的用于手機(jī)和Palm等移動(dòng)設(shè)備的開(kāi)發(fā)包,是手機(jī)廠商的專用開(kāi)發(fā)包。它通用性高,開(kāi)發(fā)出的應(yīng)用程序可保證能運(yùn)行在大部分設(shè)備上,而不像專用廠商具有一定的不兼容性。雖然它沒(méi)有強(qiáng)大的功能和
42、完善的調(diào)試手段,但它提供運(yùn)行模擬器的最基本組件,是其他IDE需集成采用的必備元素。</p><p> 當(dāng)前的最新Release的版本為J2ME WTK2.2。</p><p> 4手機(jī)游戲(堡壘)的開(kāi)發(fā)</p><p> 4.1 游戲的的思路、構(gòu)想</p><p> 4.1.1 游戲想法的產(chǎn)生</p><p>
43、 相信大家一定都在8位機(jī)機(jī)上玩過(guò)《冒險(xiǎn)島》這款游戲,非常有趣味性。</p><p> 游戲中玩家通過(guò)不斷的闖關(guān),來(lái)解救公主。在每個(gè)關(guān)都很很多的怪物阻擋著你,所以需要運(yùn)用各種機(jī)關(guān)或者秘籍來(lái)殺死它們。殺死他們的同時(shí)還可以獲得各種獎(jiǎng)勵(lì),加生命,加血等,增加了游戲的趣味性。</p><p><b> 如圖2所示:</b></p><p><
44、b> 圖2 游戲截圖</b></p><p> 這款《冒險(xiǎn)島》游戲的實(shí)現(xiàn)相對(duì)于其他RPG或者網(wǎng)絡(luò)版手機(jī)游戲稍簡(jiǎn)單一些,適合初學(xué)者作為練習(xí),所以我決定編寫一款類似的手機(jī)游戲。</p><p> 由于之前對(duì)手機(jī)游戲的編程知識(shí)以及游戲的設(shè)計(jì)只有初步的了解,因此,我們?cè)谟螒虻臉?gòu)架和思路上經(jīng)歷了幾個(gè)階段。</p><p> 4.1.2 對(duì)游戲設(shè)計(jì)的初
45、步認(rèn)識(shí)</p><p> 剛開(kāi)始我們只對(duì)J2ME有初步的了解。這時(shí)我們只是模仿之前在PC上看到的游戲,用語(yǔ)言把游戲的實(shí)現(xiàn)感性的描述為幾大部分:</p><p> 游戲界面系統(tǒng):包括游戲開(kāi)始界面;游戲開(kāi)局界面;游戲運(yùn)行界面;游戲結(jié)束界面。</p><p> 游戲元素:菜單類;畫布類;人物類;排行榜類。</p><p> 4.1.3 模塊
46、成型階段</p><p> 在進(jìn)一步熟悉了J2ME知識(shí)后,對(duì)框架做出了一些修改,逐步把游戲的基本功能確定。游戲依次進(jìn)入加載界面;主菜單;游戲運(yùn)行界面;游戲結(jié)束界面。</p><p> 具體實(shí)現(xiàn)的功能為: </p><p> 1.主菜單,有如下選項(xiàng):</p><p> ?。?)開(kāi)始游戲——進(jìn)入游戲界面。</p><p&
47、gt; ?。?)聲音——設(shè)置聲音的有無(wú)選項(xiàng)。</p><p> ?。?)幫助——介紹游戲的玩法。</p><p> ?。?)排行榜——玩家所得分?jǐn)?shù)的排行榜。</p><p> (5)關(guān)于——用來(lái)顯示說(shuō)明信息以及背景圖片。</p><p> 2.游戲運(yùn)行界面,包括:</p><p> 游戲界面;目前游戲得分;游戲關(guān)
48、數(shù);生命次數(shù);</p><p> 3.游戲結(jié)束界面:游戲結(jié)束后,顯示一行說(shuō)明信息,然后退回到菜單。</p><p><b> 游戲的主要模塊為:</b></p><p> 1.游戲主MIDlet(GameMIDlet)——對(duì)游戲生命周期的判斷;對(duì)畫布類的調(diào)用;管理游戲程序中各個(gè)屏幕之間的轉(zhuǎn)換。</p><p>
49、2.游戲畫布(MyGame)——對(duì)游戲所用變量,常量的設(shè)定;游戲的初始化;游戲中精靈運(yùn)動(dòng)軌跡的控制;精靈與磚塊的碰撞檢測(cè)以及磚塊狀態(tài)的控制;游戲中各關(guān)卡的基本設(shè)定;游戲中對(duì)按鍵狀態(tài)的處理。</p><p> 3.菜單類——游戲中菜單事件的處理。</p><p> 4.GameOgre類——游戲中怪物的類。</p><p> 5.GamePlayer類——玩家控
50、制的精靈類。</p><p> 6.GameRMS類——用于實(shí)現(xiàn)分?jǐn)?shù)排行榜。</p><p> 7.PlayMusic類——用于實(shí)現(xiàn)音樂(lè)的播放。</p><p> 8.MySet類——聲音大小的設(shè)置。</p><p> 4.2 程序的類結(jié)構(gòu)</p><p> 程序一共有8個(gè)主要類,其中菜單類負(fù)責(zé)各個(gè)屏幕的切換
51、。程序的類結(jié)構(gòu)如圖3所示:</p><p><b> 圖3 類結(jié)構(gòu)</b></p><p> 4.3 游戲的流程圖</p><p> 進(jìn)入游戲菜單。初始情況下,游戲菜單有5個(gè)選項(xiàng),它們分別是開(kāi)始游戲、游戲說(shuō)明和排行榜、設(shè)置、關(guān)于。選擇開(kāi)始新游戲則進(jìn)入游戲,在游戲中如果按下非游戲鍵則中斷游戲返回菜單,此時(shí)菜單中增加了一個(gè)繼續(xù)游戲的選項(xiàng),
52、可以返回游戲也可以重新開(kāi)始新的游戲。在菜單中選擇游戲說(shuō)明或者高分記錄,則進(jìn)入相應(yīng)的屏幕,他們都能用“后退”軟鍵返回菜單。菜單中的退出選項(xiàng)用于退出程序。游戲的流程如圖4所示:</p><p> 圖4 游戲的流程圖</p><p><b> 4.4 游戲的實(shí)現(xiàn)</b></p><p> 游戲一共實(shí)現(xiàn)了幾個(gè)類,包括用于游戲外部的、菜單類、排行
53、榜屏幕類、聲音設(shè)置屏幕類、結(jié)束屏幕類,以及用于游戲本身的游戲畫布類、聲音效果類。</p><p> 4.4.1 主類GameMIDlet的實(shí)現(xiàn)</p><p> MIDlet是最核心的類。MIDlet程序有三種狀態(tài):</p><p><b> 1.暫停狀態(tài)</b></p><p><b> 2.運(yùn)行狀態(tài)
54、</b></p><p><b> 3.銷毀狀態(tài)</b></p><p> J2ME程序都是從MIDlet類開(kāi)始執(zhí)行,系統(tǒng)在執(zhí)行MIDlet程序時(shí),首先構(gòu)造一個(gè)MIDlet類型的對(duì)象,然后使程序進(jìn)入到暫停狀態(tài),按照生命周期的規(guī)定,系統(tǒng)會(huì)自動(dòng)調(diào)用MIDlet對(duì)象的startApp方法使程序進(jìn)入到運(yùn)行狀態(tài),開(kāi)始程序的執(zhí)行。</p><p
55、> 下圖是運(yùn)行時(shí)顯示的畫布對(duì)象:</p><p> 圖5 屏幕之間的切換</p><p> 首先,先要?jiǎng)?chuàng)建MIDlet類型的對(duì)象,下面我們來(lái)看對(duì)象的構(gòu)造方法:</p><p><b> //主程序構(gòu)造方法</b></p><p> public GameMIDlet()</p><p&
56、gt;<b> {</b></p><p> rs = null;</p><p> RecordName = “GameRMS”;</p><p> GameMenu.display = Display.getDisplay(this) ;</p><p> GameMenu.midlet = this;&l
57、t;/p><p><b> }</b></p><p> 在這個(gè)構(gòu)造器中,創(chuàng)建了一個(gè)Display對(duì)象用于顯示,然后,把當(dāng)前程序的引用傳給菜單類中的靜態(tài)變量。</p><p> Display類有兩個(gè)最主要的作用:</p><p> 1、 獲得屏幕的屬性。例如屏幕是否是彩色的,以及支持的顏色數(shù)量等信息。</p
58、><p> 2、 控制屏幕的顯示。例如使屏幕顯示某個(gè)指定界面或者獲得當(dāng)前的顯示界面等。</p><p> 其中,特別是第二個(gè)作用使用的更加頻繁。</p><p> 當(dāng)程序啟動(dòng)的時(shí)候,則調(diào)用了程序的startApp方法,用來(lái)顯示畫面:</p><p> public void startApp()</p><p>
59、<b> {</b></p><p> //程序開(kāi)始,打開(kāi)數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)沒(méi)有數(shù)據(jù)就添加10筆空白數(shù)據(jù),最后關(guān)閉數(shù)據(jù)庫(kù)</p><p><b> try {</b></p><p> rs = RecordStore.openRecordStore(RecordName,true);</p><
60、;p> } catch (Exception e) </p><p><b> {</b></p><p> System.out.println(“創(chuàng)建數(shù)據(jù)庫(kù)失敗”);</p><p><b> }</b></p><p> GameRMS rd = new GameRMS(“pl
61、ayer”,0);</p><p> byte tem[] = rd.encode();</p><p><b> try </b></p><p><b> {</b></p><p> if(rs.getNumRecords()==0)</p><p><b
62、> {</b></p><p> for(int i=1;i<=11;i++)</p><p><b> {</b></p><p><b> try</b></p><p><b> {</b></p><p>
63、rs.addRecord(tem,0,tem.length);</p><p> }catch(Exception e)</p><p><b> {</b></p><p> System.out.println(“添加數(shù)據(jù)失敗”); </p><p><b> }</b></p&g
64、t;<p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p> catch (Exception e1) </p><p><b> {</b></p>
65、<p> System.out.println(“得到數(shù)據(jù)庫(kù)大小失敗”);</p><p><b> } </b></p><p><b> try</b></p><p><b> {</b></p><p> rs.closeRecordSto
66、re();</p><p> }catch(Exception e)</p><p><b> {</b></p><p> System.out.println(“關(guān)閉數(shù)據(jù)庫(kù)失敗”);</p><p><b> }</b></p><p> //將畫面設(shè)為主畫面M
67、AIN SCREEN</p><p> new Thread(this).start(); </p><p><b> }</b></p><p> 程序開(kāi)始,打開(kāi)數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)沒(méi)有數(shù)據(jù)就添加10筆空白數(shù)據(jù),最后關(guān)閉數(shù)據(jù)庫(kù),然后開(kāi)始一個(gè)新的線程,啟動(dòng)菜單。</p><p> MIDP中的存儲(chǔ)系統(tǒng)是實(shí)際為一個(gè)類
68、似于數(shù)據(jù)庫(kù)的系統(tǒng),而并不是簡(jiǎn)單的文件系統(tǒng),這個(gè)系統(tǒng)稱為記錄管理系統(tǒng)(Record Management System,RMS)。RMS實(shí)現(xiàn)數(shù)據(jù)的持久性管理,提供了數(shù)據(jù)存儲(chǔ)的功能,可以在程序下次啟動(dòng)是再次使用。</p><p> 記錄存儲(chǔ)是面向記錄的數(shù)據(jù)庫(kù),可把一個(gè)記錄存儲(chǔ)看作一個(gè)數(shù)據(jù)庫(kù)文件,由許多記錄組合而成,這些記錄將持久保存并支持跨多個(gè)MIDlet的請(qǐng)求。在系統(tǒng)平臺(tái)的整個(gè)常規(guī)應(yīng)用期間,包括重啟,更換電池等,
69、MIDlet的記錄存儲(chǔ)都由系統(tǒng)平臺(tái)負(fù)責(zé)維護(hù),系統(tǒng)會(huì)盡可能維持記錄的完整性。</p><p> 當(dāng)調(diào)用destroyApp 這個(gè)方法的時(shí)候,則退出程序。</p><p> public void destroyApp(boolean unconditional) </p><p><b> {</b></p><p>
70、;<b> exit();</b></p><p><b> }</b></p><p> public void exit() </p><p><b> {</b></p><p> System.gc();</p><p> notif
71、yDestroyed();</p><p><b> }</b></p><p> 退出程序的時(shí)候,要實(shí)行垃圾回收,釋放掉不再使用的內(nèi)存。</p><p> 2.屏幕切換,如圖6:</p><p><b> 圖6 屏幕切換</b></p><p> 菜單的圖形切換采
72、用的是流程控制器,非常方便,簡(jiǎn)潔的實(shí)現(xiàn)了屏幕畫面的切換,下面是關(guān)鍵實(shí)現(xiàn)代碼:</p><p><b> //導(dǎo)航器</b></p><p> //設(shè)置4個(gè)常量分別代表主畫面,游戲畫面,幫助畫面和排行榜畫面</p><p> final public static int MY_MENU = 1;</p><p>
73、 final public static int MY_GAME = 2;</p><p> final public static int MY_HELP = 3;</p><p> final public static int MY_RMS = 4;</p><p> final public static int MY_ABOUT = 5;</p
74、><p> final public static int MY_SET = 6;</p><p> 采用靜態(tài)變量來(lái)對(duì)畫面進(jìn)行標(biāo)識(shí)。</p><p> //流程執(zhí)行,獲得需要畫面的對(duì)象,并顯示在屏幕上</p><p> public static void show()</p><p><b> {&l
75、t;/b></p><p> switch(current)</p><p><b> {</b></p><p> case MY_MENU:</p><p> display.setCurrent(MyMenu.getInstance());</p><p><b>
76、 break;</b></p><p> case MY_GAME:</p><p> display.setCurrent(MyGame.getInstance());</p><p><b> break;</b></p><p> case MY_SET:</p><p>
77、; display.setCurrent(MySet.getInstance());</p><p><b> break;</b></p><p> case MY_HELP:</p><p> display.setCurrent(MyHelp.getInstance());</p><p><b>
78、; break;</b></p><p> case MY_RMS:</p><p> display.setCurrent(MyRms.getInstance());</p><p><b> break;</b></p><p> case MY_ABOUT:</p><p&
79、gt; display.setCurrent(MyAbout.getInstance());</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> 這樣,采用上面這個(gè)函數(shù),非常方便
80、的實(shí)現(xiàn)了流程的轉(zhuǎn)換。實(shí)現(xiàn)屏幕的切換。</p><p> 4.4.2 游戲畫布MyGame類的實(shí)現(xiàn)</p><p> 在J2ME游戲編程中,Canvas類是最常用的類之一,該類提供了獲得手機(jī)屏幕屬性、繪制界面以及事件處理等很多實(shí)用的功能。</p><p> Canvas類是Displayable的子類,主要用來(lái)需要處理低級(jí)事件,例如鍵盤按鍵事件等,以及需要繪制屏
81、幕的程序。在實(shí)際的使用過(guò)程,一般都通過(guò)繼承Canvas來(lái)利用該類提供的功能。Canvas類是一個(gè)抽象類,繼承該類的時(shí)候必須覆蓋paint方法。</p><p> GameCanvas 類提供了基本的游戲用戶接口。除了從Canvas 繼承下來(lái)的特性(命令,輸入事件等)以外,它還提供了專門針對(duì)游戲的功能,比如后備屏幕緩沖和鍵盤狀態(tài)查詢的能力。這也是GameCanvas與Canvas相比所具有的兩個(gè)優(yōu)點(diǎn).來(lái)看游戲畫面
82、:</p><p> 當(dāng)流程控制器轉(zhuǎn)到游戲運(yùn)行界面時(shí),則用到了游戲畫布MyGame類。</p><p><b> 下面是游戲截圖:</b></p><p><b> 圖7 游戲截圖</b></p><p><b> 下面來(lái)看類的聲明:</b></p>&l
83、t;p> public class MyGame extends GameCanvas implements Runnable</p><p><b> {</b></p><p><b> }</b></p><p> 我們所用的畫布程序,正是繼承了GameCanvas這個(gè)類,同時(shí)派生了Runnable接口
84、,來(lái)實(shí)現(xiàn)生成一個(gè)新的線程的功能。</p><p><b> 程序的run方法:</b></p><p> public void run() </p><p><b> {</b></p><p> long st = 0;</p><p> long et = 0
85、;</p><p> Graphics g = getGraphics();</p><p> for(stage = 2;stage <= 4;stage++)</p><p><b> {</b></p><p> flag = true;</p><p> g.setColo
86、r(0,0,0);</p><p> g.fillRect(0,0,getWidth(),getHeight());</p><p> g.setColor(255,255,0); g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE));</p><
87、;p> g.drawString(“第 ” + (stage -1)+ “ 關(guān)”,getWidth()/2-30,getHeight()/2-10,Graphics.TOP|Graphics.LEFT);</p><p> flushGraphics();</p><p> try { Thread.sleep(1000);} </p><p>
88、catch (InterruptedException e1) {}</p><p> CREAT_STAGE(); //調(diào)用創(chuàng)建關(guān)卡的方法</p><p> try {Thread.sleep(500);} </p><p> catch (InterruptedException e1) {}</p><p> mpaint
89、(g);</p><p> isKey = true;</p><p> while(flag) //游戲正式開(kāi)始</p><p><b> {</b></p><p> while(ispause) //判斷是否按下暫停</p><p><b> {</b>
90、</p><p> try{ Thread.sleep(100); }</p><p> catch(Exception e){}</p><p><b> }</b></p><p> st = System.currentTimeMillis();</p><p> StartGam
91、eTime = System.currentTimeMillis();</p><p> INPUT_KEY(); //調(diào)用按鍵方法</p><p> PENG_ZHUANG(); //調(diào)用各種判斷和行動(dòng)的方法</p><p> movMing(); //調(diào)用刷新畫面的方法</p><p> mpaint(g)
92、;</p><p> et = System.currentTimeMillis();</p><p> if((et-st)<rest)</p><p><b> {</b></p><p> try { Thread.sleep(rest-(et-st)); }</p><p>
93、 catch(Exception e){}</p><p><b> }}</b></p><p> if(isEndGame) //判斷是否輸?shù)粲螒?lt;/p><p><b> {</b></p><p> if(islose)</p><p><b
94、> {</b></p><p> EedGameTime = System.currentTimeMillis();</p><p> g.setColor(0,0,0);</p><p> g.fillRect(0,0,getWidth(),getHeight());</p><p> g.setColor(25
95、5,255,0); g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_LARGE));</p><p> g.drawString(“你失敗了!”,getWidth()/2-40,getHeight()/2-20,Graphics.TOP|Graphics.LEFT);</p>&l
96、t;p> flushGraphics();</p><p> try { Thread.sleep(3000); }</p><p> catch(Exception e){}</p><p> // init_Game();</p><p><b> break;</b>
97、</p><p><b> }}} </b></p><p> if(isEndGame) //判斷是否贏得游戲</p><p><b> {</b></p><p> if(!islose)</p><p><b> {</b>&l
98、t;/p><p> EedGameTime = System.currentTimeMillis();</p><p> g.setColor(0,0,0);</p><p> g.fillRect(0,0,getWidth(),getHeight());</p><p> g.setColor(255,255,0);</p>
99、<p> g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_LARGE));</p><p> g.drawString(“你勝利了!”,getWidth()/2-40,getHeight()/2-20,Graphics.TOP|Graphics.LEFT);</p><p>
100、 flushGraphics();</p><p> try {Thread.sleep(3000); }</p><p> catch(Exception e){}</p><p> // init_Game();</p><p><b> } </b></p><
101、p> // GetScore();</p><p> if (score > 0)</p><p><b> {</b></p><p> GameName in = new GameName();</p><p> GameMenu.display.setCurrent(in);&
102、lt;/p><p> in.start();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> GameMenu.current = GameMenu.MY_M
103、ENU;</p><p> GameMenu.show();</p><p><b> }} } }</b></p><p><b> 在線程中,通過(guò)</b></p><p> 1、調(diào)用創(chuàng)建關(guān)卡的方法CREAT_STAGE();</p><p> 2、判斷是否按下
104、暫停while(ispause)</p><p> 3、調(diào)用按鍵方法INPUT_KEY();</p><p> 4、調(diào)用各種判斷和行動(dòng)的方法PENG_ZHUANG();</p><p> 5、調(diào)用刷新畫面的方法movMing();</p><p> 6、判斷是否輸?shù)粲螒騣f(isEndGame)</p><p>
105、; 7、判斷是否贏得游戲if(isEndGame)</p><p> 來(lái)對(duì)游戲進(jìn)行不斷監(jiān)控。</p><p> 4.4.3 玩家精靈GamePlayer類的實(shí)現(xiàn)</p><p> Sprite類是繼承自Layer的用于存儲(chǔ)多幀的基本可視元素。不同的frame可交相顯示,構(gòu)成動(dòng)態(tài)的效果。圖片可翻轉(zhuǎn)、顛倒、由一個(gè)主角圖片就可以方便的得到所有方向的顯示狀態(tài),相比原
106、先只能使用Canvas繪圖,需要將所有方向的主角圖像都繪制在png圖像中簡(jiǎn)化了許多。Sprite也可以從整合的圖像中讀圖,讀圖時(shí)將把大圖分解為若干等寬等高的小圖。每個(gè)小圖按照其排列順序有相應(yīng)的序號(hào),在程序中調(diào)用其序號(hào),就可以繪制出相應(yīng)的圖片。本程序中的玩家、怪物都由Sprite繼承得到。在有些情況下,控制主角的翻轉(zhuǎn),尤其是多幅圖片配合顯示的過(guò)程,如果將多圖的共享定位點(diǎn)設(shè)置在通常的左上角,將很不容易控制,因?yàn)樵S多翻轉(zhuǎn)都是以其他點(diǎn)為參考電的
107、(比如,中心點(diǎn))。由此,引入?yún)⒖键c(diǎn)的概念。參考點(diǎn)由defineReferencePixel函數(shù)確定未翻轉(zhuǎn)圖片狀態(tài)時(shí)的坐標(biāo)。默認(rèn)是(0,0)點(diǎn),如果需要,可將參考點(diǎn)設(shè)置在畫面邊界之外。</p><p> 在本程序中,由于J2ME中提供的Sprite類功能有限,所以我自己寫了一個(gè)GamePlayer類來(lái)繼承Sprite類,擴(kuò)充了更多的功能。</p><p> public class Ga
108、mePlayer extends Sprite</p><p><b> {</b></p><p><b> }</b></p><p> 在游戲中和背景的碰撞檢測(cè)始終是個(gè)難點(diǎn),在本程序中是這樣實(shí)現(xiàn)的:</p><p> public void isPeng(int x,int y,int
109、 Array[][],int N)</p><p><b> {</b></p><p> for(int i = 0; i < 20; i++)</p><p><b> {</b></p><p> for(int j = 0; j< 18; j++)</p>
110、;<p><b> {</b></p><p> if(Array[i][j] == N)</p><p><b> {</b></p><p> if (!MyGame.isU)</p><p><b> {</b></p>&l
111、t;p> if( Length * j <= x + this.getWidth() /2 && Length *(j + 1) >= x + this.getWidth() /2 && 10 + Length * i <= y && 10 + Length *(i + 1) >= y)</p><p><b> {&
112、lt;/b></p><p> this.setPosition(this.getX(), 20 + Length *(i + 1));</p><p> System.out.println(“UP: ”+getY());</p><p><b> }</b></p><p><b> //左
113、</b></p><p> if( Length * j <= x + 1 && Length *(j + 1) >= x + 1 && 10 + Length * i <= y + this.getHeight()/2 && 10 + Length *(i + 1) >= y + this.getHeight()/2)<
114、/p><p><b> {</b></p><p> this.setPosition( Length * (j + 1),this.getY());</p><p><b> }</b></p><p> if( Length * j <=x + this.getWidth() - 1
115、&& Length *(j + 1) >= x + this.getWidth() –1 && 10 + Length * i <= y + this.getHeight()/2 && 10 + Length *(i + 1) >= y + this.getHeight()/2)</p><p><b> {</b><
116、/p><p> this.setPosition(Length * j - this.getWidth() ,this.getY());</p><p><b> }</b></p><p><b> }</b></p><p><b> //左下</b></p>
117、;<p> if( Length * j <= x + 3&& Length *(j + 1) >= x + 3 && 10 + Length * i <= y + this.getHeight() && 10 + Length *(i + 1) >= y + this.getHeight())</p><p><b&g
118、t; {</b></p><p> this.setPosition(this.getX(), Length * (i -1));</p><p><b> }</b></p><p><b> //右下</b></p><p> if( Length * j <= x
119、 +this.getWidth() -3 && Length *(j + 1) >= x + this.getWidth() -3 && 10 + Length * i <= y + this.getHeight() && 10 + Length *(i + 1) >= y + this.getHeight())</p><p><b>
120、; {</b></p><p> this.setPosition(this.getX(), Length * (i - 1));</p><p> Length * i:+Length * (i-1));</p><p><b> }</b></p><p><b> }</
121、b></p><p><b> }</b></p><p> 通過(guò)查看背景數(shù)組和玩家坐標(biāo),來(lái)實(shí)現(xiàn)和背景的碰撞檢測(cè)。</p><p> 4.4.5 SoundEffects類的實(shí)現(xiàn)</p><p> 聲音效果是一個(gè)游戲中必不可少的部分,沒(méi)有了生動(dòng)的音樂(lè)效果,游戲的體驗(yàn)就會(huì)大打折扣。在我們的游戲中當(dāng)然也不能
122、沒(méi)有聲音。</p><p> 在我們的游戲程序中的PlayMusic類就是游戲中的音效類。該類的主要功能為使用MIDP2.0 Media API播放游戲中的聲音效果:背景音樂(lè)和游戲結(jié)束的提示音。</p><p> 我們用private Player createPlayer(String filename, String f, int i) 創(chuàng)建播放器。該方法中的filename是要播
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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è)論文范文——手機(jī)游戲(堡壘)的設(shè)計(jì)與開(kāi)發(fā)
- 手機(jī)游戲開(kāi)發(fā)畢業(yè)設(shè)計(jì)
- java手機(jī)游戲(堡壘)的設(shè)計(jì)與開(kāi)發(fā)(源代碼+論文)
- 畢業(yè)設(shè)計(jì)---吃豆豆手機(jī)游戲的設(shè)計(jì)與開(kāi)發(fā)
- H2003032031_王偉_手機(jī)游戲(堡壘)的設(shè)計(jì)與開(kāi)發(fā).doc
- 基于android平臺(tái)的手機(jī)游戲開(kāi)發(fā)【畢業(yè)設(shè)計(jì)】
- 畢業(yè)設(shè)計(jì)(論文)+手機(jī)游戲開(kāi)發(fā)-java畢業(yè)論文
- 掃雷游戲的設(shè)計(jì)與開(kāi)發(fā)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---游戲開(kāi)發(fā)實(shí)現(xiàn)與設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于j2me的手機(jī)游戲開(kāi)發(fā)
- 基于java手機(jī)游戲畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì) ---手機(jī)聊天室設(shè)計(jì)與開(kāi)發(fā)
- 畢業(yè)設(shè)計(jì)---手機(jī)銷售管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)
- KJAVA手機(jī)游戲的設(shè)計(jì)與開(kāi)發(fā).pdf
- 基于android平臺(tái)的手機(jī)游戲開(kāi)發(fā)【畢業(yè)設(shè)計(jì)+開(kāi)題報(bào)告+文獻(xiàn)綜述】
- 畢業(yè)設(shè)計(jì)(論文)j2me手機(jī)游戲的開(kāi)發(fā)-beckham goal
- 手機(jī)游戲畢業(yè)設(shè)計(jì)說(shuō)明書(shū)
- 手機(jī)游戲畢業(yè)設(shè)計(jì)說(shuō)明書(shū)
- flash畢業(yè)設(shè)計(jì)開(kāi)題報(bào)告--flash游戲設(shè)計(jì)與開(kāi)發(fā)
- 策略型手機(jī)游戲設(shè)計(jì)與開(kāi)發(fā).pdf
評(píng)論
0/150
提交評(píng)論