




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
超級瑪麗JAVA小游戲詳細(xì)設(shè)計目錄1.導(dǎo)言21.1編寫目的21.2項目范圍21.3參考資料21.4縮寫說明21.5術(shù)語定義22.功能需求32.1界面設(shè)計技術(shù)32.2游戲功能劃分32.3功能劃分的架構(gòu)圖32.4具體的功能模塊42.5功能描述42.6程序的總體架構(gòu)42.7程序的三層結(jié)構(gòu)圖43.面向?qū)ο笤O(shè)計53.1主要類圖53.2各個模塊的方法或類名類表示53.3地圖繪制中的坐標(biāo)說明64.程序的詳細(xì)設(shè)計64.1主要人物瑪麗的實現(xiàn)64.2核心類7超級瑪麗JAVA小游戲詳細(xì)設(shè)計1.導(dǎo)言1.1編寫目的 該文檔的目的是說明超級瑪麗游戲的功能和設(shè)計方向、目標(biāo)等描述游戲項目的整體框架的實現(xiàn)。其主要內(nèi)容包括:游戲項目的功能簡介,接口設(shè)計,模塊設(shè)計,界面設(shè)計。本文檔預(yù)期讀者包括:項目管理人員,編程人員,數(shù)據(jù)庫設(shè)計人員,美工,測試人員。1.2項目范圍該文檔定義了游戲的模塊,結(jié)構(gòu)單元,但未確定單元的實現(xiàn)方法,這部分內(nèi)容將在具體的代碼設(shè)計中實現(xiàn)。1.3參考資料軟件工程案例教程 機(jī)械工業(yè)出版社 韓萬江 編著J2ME手機(jī)游戲開發(fā)技術(shù)詳解清華大學(xué)出版社 李振鵬 龔劍 編著1.4縮寫說明UML:Unified Modeling Language(統(tǒng)一建模語言)的縮寫,是一個標(biāo)準(zhǔn)的建模語言。1.5術(shù)語定義MIDP 2.0 定義:MIDP 2.0 也叫MIDP_NG,它的編號是JSR 118。MIDP2.0 與1.0相比有很大提高,增加的特性包括:提供域安全模型,以允許對應(yīng)用程序進(jìn)行簽名和論證;提供TCP、UDP網(wǎng)絡(luò)接口;內(nèi)置OTA;更好的用戶界面;基本的聲音API。2.功能需求2.1界面設(shè)計技術(shù)1) 選取和諧Q版的圖片,使畫面色彩和諧自然,配合動聽的音樂渲染游戲氣氛2) 采用對話框方式,多功能窗口運(yùn)行,固定窗口大小便于程序編寫,鍵盤操作游戲角色。3) 使用低級用戶界面,響應(yīng)低級用戶事件,不使用MIDP2.0GameAPI4) 地圖數(shù)據(jù)采用char類型,對每一個地圖塊的大小為1616像素,采用單層地圖,以提高游戲的運(yùn)行速度5) 居于多線程,實現(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功能描述玩家打開程序,在游戲菜單頁面有四個選項。u 關(guān)卡選擇:選擇已玩過的關(guān)卡進(jìn)行游戲;u 開始游戲:從游戲的第一關(guān)進(jìn)行游戲,玩家通過按鍵控制主人公馬里奧進(jìn)行不同的操作;u 查詢記錄:查詢五個最高游戲分?jǐn)?shù),排名由上往下遞減。u 游戲設(shè)置(包括音樂設(shè)置和按鍵設(shè)置):玩家可以設(shè)置游戲進(jìn)行時的音樂開或關(guān)以及修改相應(yīng)的控制鍵。2.6程序的總體架構(gòu)本程序采用3層程序架構(gòu),業(yè)務(wù)表現(xiàn)層,業(yè)務(wù)邏輯層和數(shù)據(jù)持久層。u 業(yè)務(wù)表現(xiàn)層。主要是游戲界面的繪制,通過指定的接口繪制,與游戲的邏輯分離。u 業(yè)務(wù)邏輯層。主要是游戲的人物和敵人的動作,碰撞的判斷,這個與表現(xiàn)層無關(guān),需要表示層調(diào)用定義好的接口與邏輯層的通信u 數(shù)據(jù)持久層。保存游戲中的數(shù)據(jù),載入游戲中需要的資源,與程序邏輯層無關(guān),用XML文檔存儲數(shù)據(jù)2.7程序的三層結(jié)構(gòu)圖表現(xiàn)層(繪制屏幕)數(shù)據(jù)持久層(數(shù)據(jù)存儲)邏輯層(程序的邏輯) 3.面向?qū)ο笤O(shè)計3.1主要類圖3.2各個模塊的方法或類名類表示3.3地圖繪制中的坐標(biāo)說明4.程序的詳細(xì)設(shè)計4.1主要人物瑪麗的實現(xiàn)public class MarioMainSprite extends LPSpritepublic MarioMainSprite(MarioGameManage gm,LPMaps map)public void action() /重寫基類private void spriteDeadAction() /瑪麗死時的動作private void checkEnemyCollision() /檢查與敵人碰撞private void mainSpriteDamage() /檢查是否踩到敵人private boolean checkStaticSpriteCollision() /檢查與靜止不動的物品碰撞, private void judgeKeyCode(int keyCode,int gameKeyCode)private void freeKey(int KeyCode,int gameKeycode) /按鍵處理private void walk() /人物走的動作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 的幀計數(shù)器 public boolean isHidden; /Sprite 是否隱藏protected int timeCnt; /Sprite 的時間計數(shù)器protected int offset; /Sprite 的圖片偏移public void action()/Sprite 的動作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ù)、派生類重寫時必須首先調(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();/地圖繪制的實現(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025超市物業(yè)委托管理合同【社區(qū)超市管理合同】
- 畢業(yè)生簽約派遣合同協(xié)議
- 微型水空調(diào)采購合同協(xié)議
- 2025電子產(chǎn)品出口銷售合同范本
- 微商城開發(fā)建設(shè)合同協(xié)議
- 商品陳列協(xié)議書范本
- 模型代工經(jīng)營合同協(xié)議
- 2025風(fēng)力發(fā)電設(shè)備采購與安裝合同
- 品酒師聘任合同協(xié)議
- 2025年國際貿(mào)易合同模板
- 2025年北京市朝陽區(qū)九年級初三一模語文試卷(含答案)
- 全友家居導(dǎo)購員銷售流程及常用銷售話術(shù)
- 2025年建筑施工安全管理人員安全生產(chǎn)考試題庫
- 十萬頭生態(tài)養(yǎng)豬場項目可行性報告
- 2025年安全評價師職業(yè)資格考試真題回顧與模擬試題
- 2025年陜西省高考適應(yīng)性檢測(三)語文試題及參考答案
- 銅火法冶煉的智能化改造與應(yīng)用
- 氟化工藝作業(yè)課件
- 2025年4月12日烏魯木齊市人才引進(jìn)面試真題及答案解析
- 大學(xué)高數(shù)函數(shù)試題及答案
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試語文試卷及答案(武漢四調(diào))
評論
0/150
提交評論