超级玛丽详细设计文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1.导言 (2)
1.1编写目的 (2)
1.2项目围 (2)
1.3参考资料 (2)
1.4缩写说明 (2)
1.5术语定义 (2)
2.功能需求 (3)
2.1界面设计技术 (3)
2.2游戏功能划分 (3)
2.3功能划分的架构图 (3)
2.4具体的功能模块 (4)
2.5功能描述 (4)
2.6程序的总体架构 (4)
2.7程序的三层结构图 (4)
3.面向对象设计 (5)
3.1主要类图 (5)
3.2各个模块的方法或类名类表示 (6)
3.3地图绘制中的坐标说明 (6)
4.程序的详细设计 (7)
4.1主要人物玛丽的实现 (7)
4.2核心类 (7)
1.导言
1.1编写目的
该文档的目的是说明超级玛丽游戏的功能和设计方向、目标等描述游戏项目的整体框架的实现。其主要容包括:游戏项目的功能简介,接口设计,模块设计,界面设计。本文档预期读者包括:项目管理人员,编程人员,数据库设计人员,美工,测试人员。
1.2项目围
该文档定义了游戏的模块,结构单元,但未确定单元的实现方法,这部分容将在具体的代码设计中实现。
1.3参考资料
《java语言程序设计》清华大学郎波编著
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.0GameAPI
4)地图数据采用char类型,对每一个地图块的大小为16×16像素,采用单层
地图,以提高游戏的运行速度
5)居于多线程,实现进度条
2.2游戏功能划分
游戏的基本功能应该包括菜单处理,程序逻辑处理,持久性处理和挂起恢复处理。
◆关于菜单的处理,包括可以选择的进入游戏、保存、帮助和音效开关等。
◆程序的逻辑处理就是涵盖了程序中除菜单外几乎所有的功能。
◆持久性处理就是资源的载入和游戏的进度保存。
2.3功能划分的架构图
2.4具体的功能模块
1)游戏控制模块
2)查询记录模块
3)关卡选择模块
4)游戏设置模块
2.5功能描述
玩家打开程序,在游戏菜单页面有四个选项。
◆关卡选择:选择已玩过的关卡进行游戏;
◆开始游戏:从游戏的第一关进行游戏,玩家通过按键控制主人公马里奥进行
不同的操作;
◆查询记录:查询五个最高游戏分数,排名由上往下递减。
◆游戏设置(包括音乐设置和按键设置):玩家可以设置游戏进行时的音乐开
或关以及修改相应的控制键。
2.6程序的总体架构
本程序采用3层程序架构,业务表现层,业务逻辑层和数据持久层。
◆业务表现层。主要是游戏界面的绘制,通过指定的接口绘制,与游戏的逻辑
分离。
◆业务逻辑层。主要是游戏的人物和敌人的动作,碰撞的判断,这个与表现层
无关,需要表示层调用定义好的接口与逻辑层的通信
◆数据持久层。保存游戏中的数据,载入游戏中需要的资源,与程序逻辑层无
关,用XML文档存储数据
2.7程序的三层结构图
3.面向对象设计3.1主要类图
3.2各个模块的方法或类名类表示
3.3地图绘制中的坐标说明
4.程序的详细设计
部分源代码如下:
4.1主要人物玛丽的实现
package org.liky.mario;
import java.awt.image.BufferedImage;
public class Mario implements Runnable {
//坐标
private int x;
private int y;
//定义一个场景对象来保存mario当前所处的场景对象
private BackGround bg;
//加入线程
private Thread t=null;
//移动速度
private int xmove=0;
private int ymove=0;
//状态
private String status;
//显示的图片
private BufferedImage showImage;
//生命数和分数
private int life;
private int score;
//当前移动中显示的图片数
private int moving=0;
private int upTime=0;
//标记mario是否死亡
private boolean isDead=false;
//标记玩家是否完成了全部的游戏
private boolean isClear=false;
public Mario(int x,int y){
this.x=x;
this.y=y;
//初始化Mario图片
this.showImage=StaticValue.allMarioImage.get(0);
this.score=0;