飞机大战概要设计
文档规格说明书
1. 引言部分
1.1目的
该文档描述的是飞机大战的概要设计,主要内容包括飞机大战功能简介等。
本文档预期的读者包括全体小组成员及指导教师。
1.2 范围
1.2.1 项目目标
开发一个能为生活增添乐趣,填补空闲无聊时间、丰富我们的生活的小游戏,满足我们休闲娱乐的要求。
1.2.2 主要项目需求
该游戏主要功能包括:
操控战机
发射炮弹
攻击敌机
收集道具
1.2.3 项目设计约束、限制
该游戏支持鼠标或键盘操控。
1.3缩写
无
1.4参考资料
[1]软件工程方法与实践第3版 主编 窦万峰 机械工业出版
2.数据设计
本部分主要描述软件所涉及的外部数据的结构描述。如果数据以数据库文件呈现,则要描述表的名称和表字段结构;如果数据以外部文件的形式呈现,则要描述文件的内部结构。
2.1数据对象和形成的数据结构
该游戏系统涉及的主要数据结构如下:
存档功能:用来记录玩家当前的游戏进度。其数据结构是一个javascript对象类型。
战机:描述战机的基本信息,包括移动的最大最小速度、子弹数量等。其数据结构是一个javascript对象类型。
道具:随着经验的加成到一定值后而生成的物品,用来各提升角色属性值,使角色战力提高。其数据结构是一个javascript对象类型。
敌机:战机在游戏中遇到的敌军战机,包括普通战机和Boss战舰,击败后可获得经验加成。其数据结构是一个javascript对象类型。
游戏基本设置:包括游戏的开始,暂停等功能信息。数据结构是一个javascript对象类型。
系统信息:有关开始界面的相关音乐、背景设置。数据结构是一个javascript对象类型。
2.2文件和数据库结构
描述文件的数据结构或者库表的结构
2.2.1外部文件结构
包括游戏所需的插图、音乐、保存文档、标志、配置文件、各类数据文档(道具、敌机等)。该游戏主要的外部文件有:
背景音乐文档achievement.mp3、buttet.mp3、game_music.mp3、enemy_down.mp3
插图文档shoot.png、shoot_background.png
游戏标志btnbg.png
游戏配置文件project.json
各类数据文档data.json
2.2.2全局数据
该游戏系统的全局变量有:
游戏进行时间Totaltime。
公共事件处理器PublicEventProcessor。
变量计数器VariableCounter
游戏全局基本数据结构定义如下:
properties: {
按钮;
分数;
子弹;
碰撞;
暂停;
战机;
敌机;
音效;
}
2.2.3文件和数据交叉索引
背景音乐文档用在系统地图事件初始化功能中;
背景图片文档用在战斗事件功能中;
游戏标志文档用在数据库初始化功能中;
游戏配置文件用在游戏战斗事件功能中;
各类数据文档用在数据库初始化功能中。
3. 体系结构设计
这一部分主要描述软件的逻辑组成接口,即软件结构图的绘制。
3.1数据和控制流复审
对需求规格说明或产品规格说明中要实现的功能进行归纳分析,对涉及的数据和控制流进行汇总和归并,为概要设计做准备。
一般对数据流图的精化分析包括两个方面的内容,一是审查整个数据流图,查看有没有遗漏的地方,并补充和完善;二是分析每一个数据流图,去掉一些细节的内容,这里去掉数据存储和外部用户。
对于面对面结对编程系统,我们补充了一个总体数据流图,如下图所示。
图1:飞机大作战系统总体数据流图
对部分数据流图的精华如下:
2:游戏初始化操控战机数据流
图3:游戏产生并使用道具数据流图
图4:游戏生产敌机数据流图
3.2得出程序结构
根据复审的数据流图,逐步得出软件的逻辑组成结构。利用优化思想,对软件结构图进行优化设计,得出模块层次结构适中的软件结构图。如下图,是优化过的系统结构图。
图3:飞机大作战游戏系统结构图
4.界面设计
这一部分主要给出界面设计的总体要求和界面序列,以及界面设计规约。
4.1人机界面规约
给出界面风格、约定和操作要求,设计出用户的所有界面。
飞机大战的界面主要包括下面几种。
游戏加载界面:该界面用于显示游戏的加载进度。
游戏开始界面:该界面作为游戏的起始界面,只有开始游戏一个按键。点开 始游戏即可进行游戏;该界面还显示了游戏名称,下方是不断有飞机划过。
系统总控界面:系统总控界面是系统的主界面,主要完成与用户的交互任务,接收用户的请求,并调用相应的模块。另外总控界面应能够显示用户的角色信息和驾驭者的工作时间,以及显示强制交换的系统时间等。
系统设置界面:系统设置界面主要设置系统的运行参数。
游戏界面:用户通过鼠标操作飞机进行游戏,不可触碰其他飞行物,可通过攻击来消灭其他飞行物。
游戏结束界面:若触碰了其他飞行物,游戏结束。该界面显示了最终得分。可选择重新开始、历史成绩、离开游戏。
4.2人机界面设计规约
给出界面序列关系,以及每个界面的操作规则和处理规则。
Ø 游戏总控制界面序列:启动游戏 — 启动新游戏 — 进入游戏 —(游戏存档)— 结束游戏。
5.接口设计
5.1外部接口设计
与外部系统或设备的连接关系和通信方式。
5.1.1外部数据接口
暂无
5.1.2外部系统或设备接口
与外部系统或接口的连接方式和通信方式。本系统与外部接口仅仅是硬件的接口要求,鼠标、键盘的要求是USB接口连接。
5.2内部接口设计规约
内部接口是软件逻辑模块之间的调用接口。内部接口设计规约定义内部模块之间的调用关系和传递的数据结构。
5.2.1内部模块接口调用关系
内部模块的接口调用关系可参看图B-8,为了便于讨论,我们给每一个模块一个编号,并对结构图进一步进行优化。它们的接口调用关系如下。
图B-9 飞机大战系统结构图(带编号)
系统总模块:SceneManager.run.
总控模块:SceneManager.program.
1.1初始化模块:SceneManager.init.
1.2 画面制作模块:ImageManager.make.
1.3 记录分数:DataManager.score.
1.4 显示成绩:DataManager.outcome.
1.2.1 制作敌机:ImageManager.oppo.
1.2.2 制作战机:ImageManager.regu.
1.2.3 制作子弹:ImageManager.bull.
1.2.4 制作道具:ImageManager.prop.
1.2.2.2 操控战机:TouchInput.fight.
5.2.2接口数据结构
描述接口的每个参数数据结构、参数顺序和默认值。
主要数据结构有user、Managers等。
6.模块过程设计
6.1 处理说明
游戏程序加载模块:设置基本的参数,对各个子系统模块进行初始化操作。
游戏界面设计模块:设置游戏界面等等。
游戏对象绘制模块:对战机、敌机、炮弹等进行设计。
游戏动作执行模块:进行攻击,移动等等。
游戏规则调用模块:对玩家当前所做出的动作做出相应的反应,判断是否射中,击毁敌机等等。
6.2使用的模块
系统程序加载模块在启动时,会初始化其他各个模块。
其余各个模块在游戏进行时,会相互调用。
7.需求交叉索引
描述需求与模块的关系、存在交叉的部分,即共享模块的调用关系。
●游戏开始:1-1 开始游戏。
●设置音效:1-2 音效设置。
●显示成绩:1-3 查看当前分数。
●结束游戏:1-4 退出游戏。
8.测试部分
本部分描述测试的原则与方法,以及测试策略和计划。
8.1测试方针
针对主要功能优先测试,查看是否游戏顺利进行,得分是否正确等等。测试方法黑盒测试方式与白盒测试方式相结合。
8.2集成策略
本项目采用自顶向下的方式进行测试。
一层一层往下测试。
8.3特殊考虑
注意击中敌机与得分设置,和键盘或鼠标的稳定性。