已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
超級(jí)瑪麗JAVA小游戲詳細(xì)設(shè)計(jì)目錄1.導(dǎo)言21.1編寫目的21.2項(xiàng)目范圍21.3參考資料21.4縮寫說(shuō)明21.5術(shù)語(yǔ)定義22.功能需求32.1界面設(shè)計(jì)技術(shù)32.2游戲功能劃分32.3功能劃分的架構(gòu)圖32.4具體的功能模塊42.5功能描述42.6程序的總體架構(gòu)42.7程序的三層結(jié)構(gòu)圖43.面向?qū)ο笤O(shè)計(jì)53.1主要類圖53.2各個(gè)模塊的方法或類名類表示53.3地圖繪制中的坐標(biāo)說(shuō)明64.程序的詳細(xì)設(shè)計(jì)64.1主要人物瑪麗的實(shí)現(xiàn)64.2核心類7超級(jí)瑪麗JAVA小游戲詳細(xì)設(shè)計(jì)1.導(dǎo)言1.1編寫目的 該文檔的目的是說(shuō)明超級(jí)瑪麗游戲的功能和設(shè)計(jì)方向、目標(biāo)等描述游戲項(xiàng)目的整體框架的實(shí)現(xiàn)。其主要內(nèi)容包括:游戲項(xiàng)目的功能簡(jiǎn)介,接口設(shè)計(jì),模塊設(shè)計(jì),界面設(shè)計(jì)。本文檔預(yù)期讀者包括:項(xiàng)目管理人員,編程人員,數(shù)據(jù)庫(kù)設(shè)計(jì)人員,美工,測(cè)試人員。1.2項(xiàng)目范圍該文檔定義了游戲的模塊,結(jié)構(gòu)單元,但未確定單元的實(shí)現(xiàn)方法,這部分內(nèi)容將在具體的代碼設(shè)計(jì)中實(shí)現(xiàn)。1.3參考資料軟件工程案例教程 機(jī)械工業(yè)出版社 韓萬(wàn)江 編著J2ME手機(jī)游戲開發(fā)技術(shù)詳解清華大學(xué)出版社 李振鵬 龔劍 編著1.4縮寫說(shuō)明UML:Unified Modeling Language(統(tǒng)一建模語(yǔ)言)的縮寫,是一個(gè)標(biāo)準(zhǔn)的建模語(yǔ)言。1.5術(shù)語(yǔ)定義MIDP 2.0 定義:MIDP 2.0 也叫MIDP_NG,它的編號(hào)是JSR 118。MIDP2.0 與1.0相比有很大提高,增加的特性包括:提供域安全模型,以允許對(duì)應(yīng)用程序進(jìn)行簽名和論證;提供TCP、UDP網(wǎng)絡(luò)接口;內(nèi)置OTA;更好的用戶界面;基本的聲音API。2.功能需求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è)地圖塊的大小為1616像素,采用單層地圖,以提高游戲的運(yùn)行速度5) 居于多線程,實(shí)現(xiàn)進(jìn)度條2.2游戲功能劃分游戲的基本功能應(yīng)該包括菜單處理,程序邏輯處理,持久性處理和掛起恢復(fù)處理。u 關(guān)于菜單的處理,包括可以選擇的進(jìn)入游戲、保存、幫助和音效開關(guān)等。u 程序的邏輯處理就是涵蓋了程序中除菜單外幾乎所有的功能。u 持久性處理就是資源的載入和游戲的進(jìn)度保存。2.3功能劃分的架構(gòu)圖2.4具體的功能模塊1) 游戲控制模塊2) 查詢記錄模塊3) 關(guān)卡選擇模塊4) 游戲設(shè)置模塊2.5功能描述玩家打開程序,在游戲菜單頁(yè)面有四個(gè)選項(xiàng)。u 關(guān)卡選擇:選擇已玩過(guò)的關(guān)卡進(jìn)行游戲;u 開始游戲:從游戲的第一關(guān)進(jìn)行游戲,玩家通過(guò)按鍵控制主人公馬里奧進(jìn)行不同的操作;u 查詢記錄:查詢五個(gè)最高游戲分?jǐn)?shù),排名由上往下遞減。u 游戲設(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ù)持久層。u 業(yè)務(wù)表現(xiàn)層。主要是游戲界面的繪制,通過(guò)指定的接口繪制,與游戲的邏輯分離。u 業(yè)務(wù)邏輯層。主要是游戲的人物和敵人的動(dòng)作,碰撞的判斷,這個(gè)與表現(xiàn)層無(wú)關(guān),需要表示層調(diào)用定義好的接口與邏輯層的通信u 數(shù)據(jù)持久層。保存游戲中的數(shù)據(jù),載入游戲中需要的資源,與程序邏輯層無(wú)關(guān),用XML文檔存儲(chǔ)數(shù)據(jù)2.7程序的三層結(jié)構(gòu)圖表現(xiàn)層(繪制屏幕)數(shù)據(jù)持久層(數(shù)據(jù)存儲(chǔ))邏輯層(程序的邏輯) 3.面向?qū)ο笤O(shè)計(jì)3.1主要類圖3.2各個(gè)模塊的方法或類名類表示3.3地圖繪制中的坐標(biāo)說(shuō)明4.程序的詳細(xì)設(shè)計(jì)4.1主要人物瑪麗的實(shí)現(xiàn)public class MarioMainSprite extends LPSpritepublic MarioMainSprite(MarioGameManage gm,LPMaps map)public void action() /重寫基類private void spriteDeadAction() /瑪麗死時(shí)的動(dòng)作private void checkEnemyCollision() /檢查與敵人碰撞private void mainSpriteDamage() /檢查是否踩到敵人private boolean checkStaticSpriteCollision() /檢查與靜止不動(dòng)的物品碰撞, private void judgeKeyCode(int keyCode,int gameKeyCode)private void freeKey(int KeyCode,int gameKeycode) /按鍵處理private void walk() /人物走的動(dòng)作private boolean checkTileCollisionVertical() /檢查與地圖的縱向碰撞private boolean checkTileCollisionHorizon() /檢查與地圖的橫向碰撞private void fire() /發(fā)射子彈private boolean checkSpriteCollisionVertical() /檢查縱向與敵人碰撞private boolean checkSpriteCollisionHorizon() /檢查橫向與敵人碰撞private void checkBulletDamage() /檢查子彈與敵人的碰撞public void init() /初始化private void changeUpSpriteState() /檢查磚塊上方是否有敵人public void readData(DataInputStream dis) /讀取數(shù)據(jù)throws java.io.IOExceptionpublic void writeData(DataOutputStream dos) /保存數(shù)據(jù)throws java.io.IOException4.2核心類public class LPSprite public int x; /橫坐標(biāo)public int y; /縱坐標(biāo)public int frameCnt; /Sprite 的幀計(jì)數(shù)器 public boolean isHidden; /Sprite 是否隱藏protected int timeCnt; /Sprite 的時(shí)間計(jì)數(shù)器protected int offset; /Sprite 的圖片偏移public void action()/Sprite 的動(dòng)作public void reInit(int x,int y) /重新初始化函數(shù)this.x=x;this.y=y;isHidden=false;public void writeData(DataOutStream dos) throws IOException /持久化操作接口、寫數(shù)據(jù)、派生類重寫時(shí)必須首先調(diào)用此函數(shù)dos.writeInt(x);dos.writeInt(y);dos.writeInt(frameCnt);dos.writeBoolean(isHidden);dos.writeInt(timeCnt);dos.writeInt(offset);public void readData(DataInputStream dis) throws IOExceptionx=dis.readInt();y=dis.readInt();frameCnt=dis.readInt();isHidden=dis.readBoolean();timeCnt=dis.readInt();offset=dis.readInt();/地圖繪制的實(shí)現(xiàn)public class LPMaps public char mapArray; public int x; public int y; public int w; public int h; public int tileSize; public final LPImageManage image; public String mapId; public LPMaps(LPImageManage image,char array,int w,int h,int tileSize,String id) this.image = image; mapArray = array; this.x = 0; this.y = 0; this.w = w; this.h = h; this.tileSize = tileSize; mapId = id; /保存記錄public class LPSaveRecord private RecordStore rs; private String rsName; public LPSaveRecord(String name) rsName=name; try if(existRecordStore(name) rs=RecordStore.openRecordStore(name,false); else rs=RecordStore.openRecordStore(name,true); catch(RecordStoreNotFoundException e) System.out.println(Open Record Error); System.out.println(e.toString(); catch(Exception e) System.out.println(e.toString(); public void addRecord(byte rec) try rs.addRecord(rec,0,rec.length); catch(Exception e) System.out.println(Add Record Error); System.out.println(e.toString(); public void close() try rs.closeRecordStore(); catch(Exception e) System.out.println(Close Record Error); System.out.println(e.toString(); public boolean IsEmpty() try if(rs.getNumRecords()0) return false; else return true; catch(Exception e) System.out.println(Get Record Number Error); System.out.println(e.toString(); return true; public void SetRecord(int recordId,byte buffer) try rs.setRecord(recordId,buffer,0,buffer.length); catch(Exception e) System.out.println(Set Record Error); System.out.println(e.toString(); public byte getRecord(int recordId) byte buffer; try buffer=rs.getRecord(recordId); return buffer; catch(Exception e) System.out.println(Get Record Error); System.out.println(e.toString(); return null; public void removeAll() try rs.deleteRecordStore(rsName); catch(Exception e) System.out.println(Remove All Record Error); System.out.println(e.toString(); private boolean existRecordStore(String recordName) boolean existRs=true; RecordStore rsTemp=null; try rsTemp=RecordStore.openRecordStore(recordName,false); c
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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版小餐飲店服務(wù)員試用期勞務(wù)合同范本3篇
- 2025版地質(zhì)災(zāi)害應(yīng)急土石方拉運(yùn)與救援合同3篇
- 南山區(qū)自主創(chuàng)新產(chǎn)業(yè)發(fā)展專項(xiàng)資金文化產(chǎn)業(yè)發(fā)展政策解讀課件2
- 2025版衛(wèi)生巾紙產(chǎn)品綠色認(rèn)證與環(huán)保標(biāo)簽使用合同3篇
- 2025年度個(gè)人合伙律師事務(wù)所退伙專業(yè)服務(wù)權(quán)轉(zhuǎn)移合同4篇
- 《社保及公積金培訓(xùn)》課件
- 2025版商業(yè)地產(chǎn)水電設(shè)施建設(shè)合同示范文本3篇
- 2025版室內(nèi)外景觀規(guī)劃設(shè)計(jì)服務(wù)費(fèi)用合同3篇
- 2025版小企業(yè)勞動(dòng)合同標(biāo)準(zhǔn)文本與執(zhí)行要點(diǎn)6篇
- 2025版土地抵押資產(chǎn)證券化合同模板3篇
- 2025貴州貴陽(yáng)市屬事業(yè)單位招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)理論考試試題
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》試題及答案解析
- 金蓉顆粒-臨床用藥解讀
- 法治副校長(zhǎng)專題培訓(xùn)課件
- 《幼兒園健康》課件精1
- 汽車、電動(dòng)車電池火災(zāi)應(yīng)對(duì)
- 中醫(yī)藥適宜培訓(xùn)-刮痧療法教學(xué)課件
- 免疫組化he染色fishish
- 新東方四級(jí)詞匯-正序版
- 借名購(gòu)車位協(xié)議書借名購(gòu)車位協(xié)議書模板(五篇)
評(píng)論
0/150
提交評(píng)論