




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
超級(jí)瑪麗JAVA小游戲詳細(xì)設(shè)計(jì)目錄TOC\o"1-5"\h\z導(dǎo)言 2\o"CurrentDocument"1.1編寫目的 2\o"CurrentDocument"1.2項(xiàng)目范圍 2\o"CurrentDocument"1.3參考資料 2\o"CurrentDocument"1.4縮寫說明 2\o"CurrentDocument"1.5術(shù)語定義 2\o"CurrentDocument"功能需求 3\o"CurrentDocument"2.1界面設(shè)計(jì)技術(shù) 3\o"CurrentDocument"2.2游戲功能劃分 3\o"CurrentDocument"2.3功能劃分的架構(gòu)圖 3\o"CurrentDocument"2.4具體的功能模塊 4\o"CurrentDocument"2.5功能描述 4\o"CurrentDocument"2.6程序的總體架構(gòu) 4\o"CurrentDocument"2.7程序的三層結(jié)構(gòu)圖 4\o"CurrentDocument"面向?qū)ο笤O(shè)計(jì) 5\o"CurrentDocument"3.1主要類圖 5\o"CurrentDocument"3.2各個(gè)模塊的方法或類名類表示 6\o"CurrentDocument"3.3地圖繪制中的坐標(biāo)說明 6\o"CurrentDocument"程序的詳細(xì)設(shè)計(jì) 7\o"CurrentDocument"4.1主要人物瑪麗的實(shí)現(xiàn) 74.2核心類 7超級(jí)瑪麗JAVA小游戲詳細(xì)設(shè)計(jì)導(dǎo)言1.1編寫目的該文檔的目的是說明超級(jí)瑪麗游戲的功能和設(shè)計(jì)方向、目標(biāo)等描述游戲項(xiàng)目的整體框架的實(shí)現(xiàn)。其主要內(nèi)容包括:游戲項(xiàng)目的功能簡介,接口設(shè)計(jì),模塊設(shè)計(jì),界面設(shè)計(jì)。本文檔預(yù)期讀者包括:項(xiàng)目管理人員,編程人員,數(shù)據(jù)庫設(shè)計(jì)人員,美工,測試人員。1.2項(xiàng)目范圍該文檔定義了游戲的模塊,結(jié)構(gòu)單元,但未確定單元的實(shí)現(xiàn)方法,這部分內(nèi)容將在具體的代碼設(shè)計(jì)中實(shí)現(xiàn)。1.3參考資料《java語言程序設(shè)計(jì)》清華大學(xué)出版社郎波編著1.4縮寫說明UML:UnifiedModelingLanguage(統(tǒng)一建模語言)的縮寫,是一個(gè)標(biāo)準(zhǔn)的建模語言。1.5術(shù)語定義MIDP2.0定義:MIDP2.0也叫MIDP_NG,它的編號(hào)是JSR118。MIDP2.0與1.0相比有很大提高,增加的特性包括:提供域安全模型,以允許對(duì)應(yīng)用程序進(jìn)行簽名和論證;提供TCP、UDP網(wǎng)絡(luò)接口;內(nèi)置OTA;更好的用戶界面;基本的聲音API。功能需求2.1界面設(shè)計(jì)技術(shù)1) 選取和諧Q版的圖片,使畫面色彩和諧自然,配合動(dòng)聽的音樂渲染游戲氣氛2) 采用對(duì)話框方式,多功能窗口運(yùn)行,固定窗口大小便于程序編寫,鍵盤操作游戲角色。3) 使用低級(jí)用戶界面,響應(yīng)低級(jí)用戶事件,不使用MIDP2.0GameAPI4) 地圖數(shù)據(jù)采用char類型,對(duì)每一個(gè)地圖塊的大小為16X16像素,采用單層地圖,以提高游戲的運(yùn)行速度5) 居于多線程,實(shí)現(xiàn)進(jìn)度條2.2游戲功能劃分游戲的基本功能應(yīng)該包括菜單處理,程序邏輯處理,持久性處理和掛起恢復(fù)處理。?關(guān)于菜單的處理,包括可以選擇的進(jìn)入游戲、保存、幫助和音效開關(guān)等。?程序的邏輯處理就是涵蓋了程序中除菜單外幾乎所有的功能。?持久性處理就是資源的載入和游戲的進(jìn)度保存。2.3功能劃分的架構(gòu)圖2.4具體的功能模塊1) 游戲控制模塊2) 查詢記錄模塊3) 關(guān)卡選擇模塊4) 游戲設(shè)置模塊2.5功能描述玩家打開程序,在游戲菜單頁面有四個(gè)選項(xiàng)。?關(guān)卡選擇:選擇已玩過的關(guān)卡進(jìn)行游戲;?開始游戲:從游戲的第一關(guān)進(jìn)行游戲,玩家通過按鍵控制主人公馬里奧進(jìn)行不同的操作;?查詢記錄:查詢五個(gè)最高游戲分?jǐn)?shù),排名由上往下遞減。?游戲設(shè)置(包括音樂設(shè)置和按鍵設(shè)置):玩家可以設(shè)置游戲進(jìn)行時(shí)的音樂開或關(guān)以及修改相應(yīng)的控制鍵。2.6程序的總體架構(gòu)本程序采用3層程序架構(gòu),業(yè)務(wù)表現(xiàn)層,業(yè)務(wù)邏輯層和數(shù)據(jù)持久層。?業(yè)務(wù)表現(xiàn)層。主要是游戲界面的繪制,通過指定的接口繪制,與游戲的邏輯分離。?業(yè)務(wù)邏輯層。主要是游戲的人物和敵人的動(dòng)作,碰撞的判斷,這個(gè)與表現(xiàn)層無關(guān),需要表示層調(diào)用定義好的接口與邏輯層的通信?數(shù)據(jù)持久層。保存游戲中的數(shù)據(jù),載入游戲中需要的資源,與程序邏輯層無關(guān),用XML文檔存儲(chǔ)數(shù)據(jù)2.7程序的三層結(jié)構(gòu)圖面向?qū)ο笤O(shè)計(jì)3.1主要類圖BsckGrourwi?allErtemyO*aJlObstructionQ*allPop()steticvalueMyFram&?al舊G()制名Start。?ma「io()BsckGrourwi?allErtemyO*aJlObstructionQ*allPop()steticvalueMyFram&?al舊G()制名Start。?ma「io()?soun*),瑚?moMng。^scoreopnameSO*showlnfiage(),^soundQ^status0*t0*timeO,jptime()?isout0?removeLnerny()*iirageTypeO^lefeMax[)WghtM戳0?shovulmag日0*slartX5U'?mainU?midi。?rnusic0?Pl即。?mtop{)^lIBgMaridmageO*allflowrlnnage()3.2各個(gè)模塊的方法或類名類表示主要類名,方法\l主窗怵奏MyFrameO主要顯示圖片,文字Ma「io入物類Ma")定義的各料動(dòng)作’芬方之號(hào)人■汨應(yīng)的圖片,判斷是沔與障蛔構(gòu)-散入、道且援觸,并且做出荏應(yīng)的判斷故入美EnemyQ定義故人窘動(dòng)的路住戲類Prop。□tistructionQ聲筆StaticValueSoundQ導(dǎo)人全部府要的圖片一在從吾個(gè)類中匙出當(dāng)接"F空榕產(chǎn)始游建時(shí),聲吾類辱人背景音樂背璋賣日ackGroundT1將床璋物,政人,邕片號(hào)人虱商休中3.3地圖繪制中的坐標(biāo)說明程序的詳細(xì)設(shè)計(jì)部分源代碼如下:4.1主要人物瑪麗的實(shí)現(xiàn)packageorg.liky.mario;importjava.awt.image.Bufferedlmage;publicclassMarioimplementsRunnable(//坐標(biāo)privateintx;privateinty;〃定義一個(gè)場景對(duì)象來保存mario當(dāng)前所處的場景對(duì)象privateBackGroundbg;//加入線程privateThreadt=null;//移動(dòng)速度privateintxmove=0;privateintymove=0;//狀態(tài)privateStringstatus;//顯示的圖片privateBufferedImageshowImage;//生命數(shù)和分?jǐn)?shù)privateintlife;privateintscore;//當(dāng)前移動(dòng)中顯示的圖片數(shù)privateintmoving=0;privateintupTime=0;//標(biāo)記mario是否死亡privatebooleanisDead=false;//標(biāo)記玩家是否完成了全部的游戲privatebooleanisClear=false;publicMario(intx,inty)(this.x=x;this.y=y;//初始化Mario圖片this.showImage=StaticValue.allMarioImage.get(0);this.score=0;this.life=3;t=newThread(this);this.status="right--standing";t.start();}publicvoidleftMove(){//改變速度this.xmove=-30;//改變狀態(tài)//如果當(dāng)前已經(jīng)是跳躍狀態(tài),應(yīng)該保留原有狀態(tài),不應(yīng)該改變狀態(tài)if(this.status.indexOf("jumping")!=-1){this.status="left--jumping";}else{this.status="left--moving";}}publicvoidrightMove(){this.xmove=30;//如果當(dāng)前已經(jīng)是跳躍狀態(tài),應(yīng)該保留原有狀態(tài),不應(yīng)該改變狀態(tài)if(this.status.indexOf("jumping")!=-1){this.status="right--jumping";}else{this.status="right--moving";}}publicvoidleftStop(){this.xmove=0;//如果當(dāng)前已經(jīng)是跳躍狀態(tài),應(yīng)該保留原有狀態(tài),不應(yīng)該改變狀態(tài)if(this.status.indexOf("jumping")!=-1){this.status="left--jumping";}else{this.status="left--standing";}}publicvoidrightStop(){this.xmove=0;//如果當(dāng)前已經(jīng)是跳躍狀態(tài),應(yīng)該保留原有狀態(tài),不應(yīng)該改變狀態(tài)if(this.status.indexOf("jumping")!=-1){this.status="right--jumping";}else{this.status="right--standing";}}publicvoidjump(){if(this.status.indexOf("jumping")==-1){if(this.status.indexOf("left")!=-1){this.status="left--jumping";}else{this.status="right--jumping";}ymove=-30;upTime=6;}}publicvoiddown(){if(this.status.indexOf("left")!=-1){this.status="left--jumping";}else{this.status="right--jumping";}ymove=30;}//mario的死亡方法publicvoiddead(){this.life--;if(this.life==0){this.showImage=StaticValue.mariodeadlmagethis.isDead=true;}else{this.bg.reset();this.x=0;this.y=480;}}publicintgetX(){returnx;}publicintgetY(){returny;}publicvoidsetX(intx){this.x=x;}publicvoidsetY(inty)(this.y=y;}publicBufferedlmagegetShowImage()(returnshowimage;}publicvoidrun()(//TODOAuto-generatedmethodstubwhile(true)(if(this.bg.isFlag()&&this.x>=508)(//如果為最后一個(gè)場景,同時(shí)mari。的坐標(biāo)到達(dá)了508,則游戲結(jié)束//自動(dòng)控制游戲結(jié)束的移動(dòng)this.bg.setOver(true);if(this.bg.isDown()){//降旗后,mario開始向城門移動(dòng)this.status="right--moving";if(this.x<568){//mario只向右移動(dòng)this.x+=30;}else{if(this.y<480){//mario向下移動(dòng)this.y+=30;}this.x+=30;if(this.x>762){〃游戲結(jié)束,已經(jīng)完成了全部的場景this.isClear=true;}}}else{if(this.y<420){this.y+=30;}if(this.y>=420){this.y=420;this.status="right--standing";}}}else{//判斷當(dāng)前mari。是否與障礙物碰撞//定義標(biāo)記booleancanLeft=true;booleancanRight=true;//定義一個(gè)mario當(dāng)前是否處于障礙物上的標(biāo)記booleanonLand=false;for(inti=0;i<this.bg.getAllObstruction().size();i++){Obstructionob=this.bg.getAllObstruction().get(i);//如果mario和障礙物相切則不允許mario繼續(xù)向右移動(dòng)if((ob.getX()==this.x+60)&&(ob.getY()+50>this.y&&ob.getY()-50<this.y)){if(ob.getType()!=3){canRight=false;}}//不允許mario繼續(xù)向左移動(dòng)if((ob.getX()==this.x-60)&&(ob.getY()+50>this.y&&ob.getY()-50<this.y)){if(ob.getType()!=3){canLeft=false;}}//如果符合條件則表明mario當(dāng)前處在障礙物上面if(ob.getY()==this.y+60&&(ob.getX()+60>this.x&&ob.getX()-60<this.x)){if(ob.getType()!=3){onLand=true;}}//判斷當(dāng)前mario在跳躍過程中是否頂?shù)搅苏系K物if(upTime>0){if(ob.getY()==this.y-60&&(ob.getX()+50>this.x&&ob.getX()-50<this.x)){//對(duì)于磚塊處理if(ob.getType()==0){〃將該磚塊從場景中移除this.bg.getAllObstruction().remove(ob);//將被移除的磚塊保存到一個(gè)集合中this.bg.getRemovedObstruction().add(ob);//將分?jǐn)?shù)加10this.score+=10;}//對(duì)于問號(hào)的處理和對(duì)于隱藏的磚塊的處理if(ob.getType()==4||ob.getType()==3){ob.setType(2);ob.setImage();this.score+=50;}upTime=0;}}}//加入耍地對(duì)敵人的判斷for(inti=0;i<this.bg.getAllEnemy().size();i++){Enemye=this.bg.getAllEnemy().get(i);if((e.getX()+50>this.x)&&(e.getX()-50<this.x)&&(e.getY()+60>this.y&&e.getY()-60<this.y)){//mario死亡this.dead();}if(e.getY()==this.y+60&&(e.getX()+50>this.x&&e.getX()-50<this.x)){if(e.getType()==1||e.getType()==3){e.dead();this.upTime=2;this.ymove=-30;this.score+=50;}elseif(e.getType()==2){this.dead();}}}if(onLand&&upTime==0){if(this.status.indexOf("left")!=-1){if(xmove==0){this.status="left--standing";}else{this.status="left--moving";}}else{if(xmove==0){this.status="right--standing";}else(this.status="right--moving";}}}else(//表示當(dāng)前為上升狀態(tài)if(upTime!=0)(upTime--;}else(this.down();}y+=ymove;}if(this.y>600)(this.dead();}if(canLe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025內(nèi)蒙古自治區(qū)農(nóng)牧業(yè)科學(xué)院招聘48人考前自測高頻考點(diǎn)模擬試題及答案詳解(奪冠系列)
- 出納轉(zhuǎn)正月度工作總結(jié)4篇
- 2025江西吉安市文化旅游投資發(fā)展集團(tuán)有限公司及下屬子公司招聘10人(第一批)考前自測高頻考點(diǎn)模擬試題及答案詳解(各地真題)
- 2025年延安東辰中學(xué)教師招聘考前自測高頻考點(diǎn)模擬試題及1套參考答案詳解
- 2025年福建省廈門海滄華附實(shí)驗(yàn)小學(xué)招聘1人考前自測高頻考點(diǎn)模擬試題及參考答案詳解一套
- 2025年威?;鹁娓呒夹g(shù)產(chǎn)業(yè)開發(fā)區(qū)公開招聘教師(第二批)(61人)考前自測高頻考點(diǎn)模擬試題及完整答案詳解
- 2025國網(wǎng)山西省電力公司博士后科研工作站招聘1人考前自測高頻考點(diǎn)模擬試題附答案詳解(典型題)
- 2025湖北咸寧市通城縣事業(yè)單位高層次和急需緊缺人才引進(jìn)48人考前自測高頻考點(diǎn)模擬試題及1套完整答案詳解
- 2025湖南邵陽市新寧產(chǎn)業(yè)開發(fā)區(qū)選調(diào)5人模擬試卷含答案詳解
- 2025廣西南寧市人民路東段小學(xué)春季學(xué)期教師招聘1人模擬試卷附答案詳解(完整版)
- 2025年度國家電投校園招聘模擬試卷及答案詳解(歷年真題)
- 鋼廠吊裝安全培訓(xùn)課件
- 德育教育 課題申報(bào)書
- 維生素D佝僂病課件
- 液壓實(shí)訓(xùn)安全培訓(xùn)課件
- 義齒行業(yè)安全教育培訓(xùn)課件
- 第8課《回憶魯迅先生》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì) 統(tǒng)編版語文八年級(jí)上冊(cè)
- 膽結(jié)石課件教學(xué)課件
- 第2課《中國人首次進(jìn)入自己的空間站》課件+2025-2026學(xué)年統(tǒng)編版語文八年級(jí)上冊(cè)
- 耳灸療法護(hù)理操作規(guī)范
- 2025年衛(wèi)生知識(shí)健康教育知識(shí)競賽-醫(yī)療質(zhì)量與安全管理知識(shí)競賽歷年參考題庫含答案解析(5套典型題)
評(píng)論
0/150
提交評(píng)論