超级玛丽JAVA小游戏详细设计文档.doc_第1页
超级玛丽JAVA小游戏详细设计文档.doc_第2页
超级玛丽JAVA小游戏详细设计文档.doc_第3页
超级玛丽JAVA小游戏详细设计文档.doc_第4页
超级玛丽JAVA小游戏详细设计文档.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

超级玛丽JAVA小游戏详细设计目录1.导言21.1编写目的21.2项目范围21.3参考资料21.4缩写说明21.5术语定义22.功能需求32.1界面设计技术32.2游戏功能划分32.3功能划分的架构图32.4具体的功能模块42.5功能描述42.6程序的总体架构42.7程序的三层结构图43.面向对象设计53.1主要类图53.2各个模块的方法或类名类表示53.3地图绘制中的坐标说明64.程序的详细设计64.1主要人物玛丽的实现64.2核心类7超级玛丽JAVA小游戏详细设计1.导言1.1编写目的 该文档的目的是说明超级玛丽游戏的功能和设计方向、目标等描述游戏项目的整体框架的实现。其主要内容包括:游戏项目的功能简介,接口设计,模块设计,界面设计。本文档预期读者包括:项目管理人员,编程人员,数据库设计人员,美工,测试人员。1.2项目范围该文档定义了游戏的模块,结构单元,但未确定单元的实现方法,这部分内容将在具体的代码设计中实现。1.3参考资料软件工程案例教程 机械工业出版社 韩万江 编著J2ME手机游戏开发技术详解清华大学出版社 李振鹏 龚剑 编著1.4缩写说明UML:Unified Modeling Language(统一建模语言)的缩写,是一个标准的建模语言。1.5术语定义MIDP 2.0 定义:MIDP 2.0 也叫MIDP_NG,它的编号是JSR 118。MIDP2.0 与1.0相比有很大提高,增加的特性包括:提供域安全模型,以允许对应用程序进行签名和论证;提供TCP、UDP网络接口;内置OTA;更好的用户界面;基本的声音API。2.功能需求2.1界面设计技术1) 选取和谐Q版的图片,使画面色彩和谐自然,配合动听的音乐渲染游戏气氛2) 采用对话框方式,多功能窗口运行,固定窗口大小便于程序编写,键盘操作游戏角色。3) 使用低级用户界面,响应低级用户事件,不使用MIDP2.0GameAPI4) 地图数据采用char类型,对每一个地图块的大小为1616像素,采用单层地图,以提高游戏的运行速度5) 居于多线程,实现进度条2.2游戏功能划分游戏的基本功能应该包括菜单处理,程序逻辑处理,持久性处理和挂起恢复处理。u 关于菜单的处理,包括可以选择的进入游戏、保存、帮助和音效开关等。u 程序的逻辑处理就是涵盖了程序中除菜单外几乎所有的功能。u 持久性处理就是资源的载入和游戏的进度保存。2.3功能划分的架构图2.4具体的功能模块1) 游戏控制模块2) 查询记录模块3) 关卡选择模块4) 游戏设置模块2.5功能描述玩家打开程序,在游戏菜单页面有四个选项。u 关卡选择:选择已玩过的关卡进行游戏;u 开始游戏:从游戏的第一关进行游戏,玩家通过按键控制主人公马里奥进行不同的操作;u 查询记录:查询五个最高游戏分数,排名由上往下递减。u 游戏设置(包括音乐设置和按键设置):玩家可以设置游戏进行时的音乐开或关以及修改相应的控制键。2.6程序的总体架构本程序采用3层程序架构,业务表现层,业务逻辑层和数据持久层。u 业务表现层。主要是游戏界面的绘制,通过指定的接口绘制,与游戏的逻辑分离。u 业务逻辑层。主要是游戏的人物和敌人的动作,碰撞的判断,这个与表现层无关,需要表示层调用定义好的接口与逻辑层的通信u 数据持久层。保存游戏中的数据,载入游戏中需要的资源,与程序逻辑层无关,用XML文档存储数据2.7程序的三层结构图表现层(绘制屏幕)数据持久层(数据存储)逻辑层(程序的逻辑) 3.面向对象设计3.1主要类图3.2各个模块的方法或类名类表示3.3地图绘制中的坐标说明4.程序的详细设计4.1主要人物玛丽的实现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() /发射子弹private boolean checkSpriteCollisionVertical() /检查纵向与敌人碰撞private boolean checkSpriteCollisionHorizon() /检查横向与敌人碰撞private void checkBulletDamage() /检查子弹与敌人的碰撞public void init() /初始化private void changeUpSpriteState() /检查砖块上方是否有敌人public void readData(DataInputStream dis) /读取数据throws java.io.IOExceptionpublic void writeData(DataOutputStream dos) /保存数据throws java.io.IOException4.2核心类public class LPSprite public int x; /横坐标public int y; /纵坐标public int frameCnt; /Sprite 的帧计数器 public boolean isHidden; /Sprite 是否隐藏protected int timeCnt; /Sprite 的时间计数器protected int offset; /Sprite 的图片偏移public void action()/Sprite 的动作public void reInit(int x,int y) /重新初始化函数this.x=x;this.y=y;isHidden=false;public void writeData(DataOutStream dos) throws IOException /持久化操作接口、写数据、派生类重写时必须首先调用此函数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();/地图绘制的实现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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论