详细设计说明
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FirstGame.java: 关卡一 SecondGame.java:关卡二 ThirdGame.java: 关卡三
2.4 流程设计
此游戏由三关组成,通过判断主人公在每个关卡是否把BOSS打掉
来确定是否过关,若主角把BOSS打掉则顺利过关,相反若没把BOSS打掉
主角死亡则闯关失败,直到闯关成功或游戏结束。在程序中主角通过碰
4.2 碰撞检测
根据游戏设定,敌方精灵不能与主角重合,则敌人每走一步都需要 检测一下主角是否在敌人Fra Baidu bibliotek射击范围之内,如果在敌人的射击范围之内
则发射子弹射击主角。Sprite类中提供了collidesWith函数和
defineCollisionRectangle函数,
用于判断是否与某个Sprite、
TiledLayer、Image的对象有图像上的重合(即游戏中的碰撞)。在程序中
手机游戏开发—《长征》
详细设计说 明
软件工程专修学院
团队名称:智我团队 所属学校:山东海天
团队成员:李运强、邹乐华、路丛
磊、刘鸿媛、宋慧
指导老师:岳茂顺
目录
第一章 引言 1.1 编写目的 1.2 背景 1.3 定义 1.4 参考资料
第二章 程序系统的结构设计 2.1 模块划分 2.2 结构划分 2.3 类划分及其关系 2.3.1 软件主要类及功能 2.4 流程设计
通关画面 失败画面
第三章 程序系统的模块设计
3.1 模块功能 3.1.1 界面模块
界面模块实现的是游戏的欢迎界面,开始界面和通关界面的显
示,当游戏玩家开始游戏时首先进入的是欢迎界面而不是直接进入游 戏,之后进入和主菜单,供游戏玩家来选择,玩家通过选择开始长征来 进入游戏,当游戏玩家躲过种种障碍,闯过三关后便显示通关界面。
Profile: 中文意思是简表,它是在Configuration之上的规范。简 表针对不同机器的特性定义了高级的API(应用程序接 口)。 MIDP: 全称是Mobile Information Device Profile。它是针对移动 设备定义的Profile。 MIDlet: MIDlet是在MIDP中定义的一种应用程序框架,它是被应 用管理软件(AMS)管理的。MIDlet是在支持MIDP规范的移 动信息设备上运行的应用程序,MIDlet不是一个单独的 文件,而是一个文件的集合,它除了必须包含一个继承 自javax.microedition.midlet.MIDlet的类之外,还包 括此类执行时间所需的其他类和资源文件(只要是非 class文件都成为资源文件)。
2.3.1 软件主要类及功能
Team.java: Logo1-标志类 Poem.java: Logo2-长征诗类 Open.java: Logo3-主角过场类
Menu.java: 主菜单类 Music.java:背景音乐类
RMS.java:存储功能类 LongMarchMIDlet.java:程序入口类
4.9.1 用户接口 4.10 游戏运行限制条件
4.11尚未解决的问题
第一章 引言 1.1 编写目的
编写详细设计说明书是软件开发过程中必不可少的部分,其目的是 为了使开发人员在完成概要设计说明书的基础上,完成概要设计规定的 各项功能的具体实现。经过这个阶段的设计工作,应该得出对目标系统 的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设 计语言书写的程序。详细设计的结果基本上决定了最终程序代码的质 量。详细设计的目标不仅仅是在逻辑上正确地实现每个模块的功能,更 重要的是设计出的处理过程应该尽可能简明易懂。详细设计是在确定功 能结构图的同时,进一步确定每一个模块的具体实现方法、设计系统的 物理模型等。 编写详细设计说明书的目的就是为程序员写出实际的程序代码提供 依据。它是软件详细设计阶段所有任务和所有相关人员(包括项目管理 人员、软件设计人员、软件测试人员、文档编制人员和质量审核人 员),所需要的参考资料。 详细设计是在确定功能结构图的同时,进一步确定每一模块的具体 实现方法、设计系统的物理模型等。 预期读者:项目管理人员、软件测试人员、文档编制人员、专家顾 问人员。
1.2 背景
软件系统名称:长征
任务提出者:齐鲁软件设计大赛组委会 开发者:山东海天软件工程专修学院智我团队 使用者:广大的游戏玩家
1.3 定义
Configuration:
中文意思是配置。它定义了硬件所必须具备的能力。 CLDC:
全称是Connected Limited Devices Configuration,中 文意思是有限制连接设备配置。它是在Configuration基 础上定义的Java的核心类库和虚拟机。
if(Math.abs(spRole.getX()spEnemy[enIndex].getX())<80&&Math.abs(spRole.getY()spEnemy[enIndex].getY())<20)
{ continue;
} } if(enemyTurn[enIndex]&&enemyLeft[enIndex])//enemy向 左转身 {
进入游戏帮助界面,显示游戏的玩法规则。 4) 游戏帮助:这里是说明怎么实现按键的控制,上下左右以及各
种功能按键的实现。 5) 关于游戏:这里是说明开发团队的信息,游戏名称以及游戏的
版本。 6) 退出游戏:退出整个游戏。
基本结构图如下:
开始长征
游戏玩家
选项 关于
帮助 继续 退出游戏
2.3 类划分及其关系
撞检测来改变主角发射子弹的战斗力,,程序中还对主角的战斗力和生
命值作出判断,当生命值为零时游戏结束。
程序流程图如下:
开始长征 继续 选项 帮助 关于 退出游戏
Y Y Y N N N
欢迎屏幕
Logo-team Logo-Poem Logo-open
主菜单
开始游戏
第一关
游戏通过
第二关
游戏通过
第三关
游戏通过
3.2.3 游戏主体模块
游戏主体模块包括的类有: LongMarchMIDlet.java:程序入口类 FirstGame.java: 关卡一 SecondGame.java: 关卡二 ThirdGame.java: 关卡三
3.3 模块的流程
游戏开始后进入界面模块的游戏欢迎界面,然后进入 开始界面,进入游戏后游戏主体模块,功能模块同时工作。游戏主体模 块按照游戏程序流程进行,第三关类并达到得分规定时返回界面模块运 行通关界面类。
角。
代码分析如下: /**
* @Method * * @Description * 决定 */
enemy的运动方法 enemy在一定范围内行走,主要由左右碰撞检测
public void enemyMove() {
for(enIndex=0;enIndex<11;enIndex++) {
if(eIsStop[enIndex]) {
2) 继续游戏:如果玩家在某种原因之下需要暂停游戏去忙其他事 情,我们设计了RMS存盘功能,游戏玩家可以随时暂停游戏保存下来, 下次打开游戏只需选择继续,就可以返回之前的动画。
3) 游戏设置:设置游戏的背景音乐开关,在J2ME中,处理音效需 要使用MMAPI的包。播放音效文件首先按照一定的格式读取音效文件并 将读取的内容传递给播放器,通过Player类中的setLoopCount方法设置 播放次数在此游戏中设置为循环播放,在经过player.start()播放音 乐。在声音大小的控制上通过定义changeVolume方法实现,游戏帮助:
第三章 程序系统的模块设计 3.1 模块功能 3.1.1 界面模块 3.1.2 功能模块 3.1.3 游戏主体模块 3.2 模块的类设计
3.2.1 Logo模块 3.2.2 功能模块 3.2.3 游戏主体模块 3.3 模块的流程
第四章 程序系统中的算法
4.1 主角移动的控制 4.2 碰撞检测 4.3 敌人智能算法 4.4 子弹智能跟踪算法 4.5 地图的生成 4.5 精灵随机位置的产生 4.6 输入项 4.7 输出项 4.8 流程逻辑 4.9 接口设计
我们使用collidesWith(TiledLayer t, boolean pixelLevel) 方法来检
测精灵间的冲突(即碰撞)。当主角与子弹精灵间发生冲突时,将以用
户各项值改变的形式告知用户。
4.3 敌人智能算法
首先定义敌人的攻击矩形区域,这里可以把敌人分为面对主角时发
射子
弹和敌人背对主角时发射子弹,当敌人直接面对主角时(主角的X坐
spEnemy[enIndex].setFrameSequence(enemyLframe); enemyTurn[enIndex]=false; spEnemy[enIndex].move(-7,0); } if(enemyTurn[enIndex]&&!enemyLeft[enIndex])//enemy 向右转身 { spEnemy[enIndex].setFrameSequence(enemyRframe); enemyTurn[enIndex]=false; spEnemy[enIndex].move(10,0); } if(!enemyTurn[enIndex]&&enemyLeft[enIndex])//enemy 向左行走 { spEnemy[enIndex].move(-3,0); spEnemy[enIndex].nextFrame(); if(!spEnemy[enIndex].collidesWith(tlOther,true)) {
1.4 参考资料
编号 1 2
书籍名 J2ME教程 手机游戏开发全书
主编 郭克华 李晓洁 王晓龙 马瑞
出版社 网上下载 清华大学出版社
第二章 程序系统的结构设计
2.1 模块划分
根据此游戏系统的具体功能将其划分为三个模块,主要包括:界
面模块,功能模块,游戏主体模块。这三个模块分工协作构成整个游戏 程序系统,完成系统的所有功能。
标小于
敌人的X坐标并且敌人正面面向左 或者是主角X坐标大于敌人X坐标
并且
敌人正面向右)并且在敌人的攻击范围之内,则直接发射子弹射击
敌人,当
敌人背对主角时(即主角X坐标小于敌人X坐标敌人正面向右则敌人
立即转
身发射主角或者是主角X坐标大于敌人X坐标敌人正面向左,这时敌
人则转
身射击主角)并且在敌人的巡视范围之内,则直接发射子弹射击主
3.2 模块的类设计
3.2.1 Logo模块
Logo模块包括的类有: Team.java: Logo1-标志类 Poem.java: Logo2-长征诗类
Open.java: Logo3-主角过场类
3.2.2 功能模块
功能模块包括的类有: Menu.java: 主菜单类 Music.java:背景音乐类 RMS.java:存储功能类
模块流程图如下:
开始长征 继续 选项 帮助 关于
欢迎屏幕
Logo-team Logo-Poem Logo-open
主菜单
退出游戏
Y Y Y N N N
开始游戏
第一关
游戏通过
第二关
游戏通过
第三关
游戏通过
通关画面 失败画面
第四章 程序系统中的算法
4.1 主角移动的控制
GameCanvas提供的getKeyStates函数可获取当前键盘上的信 息,并将获得的信息以位的形式返回用户所按键的状态。 LEFT_PRESSED,RIGHT_PRESSED,UP_PRESSED,DOWN_PRESSED,FIRE_PRESSED ,3键,分别对应左右上下ENTER键和数字3键,程序通过游戏玩家按下 的不同按键来判断主角的移动,上跳和射击,投掷手雷。
2.2 结构划分
此软件包括六部分:开始游戏,继续游戏,游戏设置,游戏帮 助,关于游戏,退出游戏,游戏用户可以通过访问不同的部分得到所需 要的信息。
下面是各部分的作用:
1) 开始游戏:进入游戏第一关,开始闯关。游戏玩家躲避种种障 碍直到三关全部通过,在闯关过程中根据游戏的进展会出现提示画面, 包括失败,过关以及最后的通关;在闯关过程中可以实现游戏的暂停, 继续和返回主菜单功能;如果任何一关闯关失败则返回游戏的当前菜单 界面。
3.1.2 功能模块
功能模块实现游戏中的基本功能,包括背景音乐的播放及开关的控 制
3.1.3 游戏主体模块
游戏主体模块也是游戏的主体部分,控制游戏的进展情况。实现游
戏的各个关卡以及相邻关卡的连接。游戏主体模块的运行完全按照程序 流程来进行,每一步都必须保证程序的运行无误。在游戏主体模块中还 要对程序中的数据进行加工处理,与程序相关的数据包括用户在运行此 游戏时的战斗力,生命值的存储。 战斗力,生命值,当生命值为零的情况下游戏结束,在程序中战斗 力会随着游戏的进展情况发生变化,时而增加时而减少并不确定,系统 会根据战斗力的不同来判断主角发射的子弹。而生命值只会减少不会增 加,只有主角打掉每关卡的BOSS,则进入下一关,直到三关全部通过。
2.4 流程设计
此游戏由三关组成,通过判断主人公在每个关卡是否把BOSS打掉
来确定是否过关,若主角把BOSS打掉则顺利过关,相反若没把BOSS打掉
主角死亡则闯关失败,直到闯关成功或游戏结束。在程序中主角通过碰
4.2 碰撞检测
根据游戏设定,敌方精灵不能与主角重合,则敌人每走一步都需要 检测一下主角是否在敌人Fra Baidu bibliotek射击范围之内,如果在敌人的射击范围之内
则发射子弹射击主角。Sprite类中提供了collidesWith函数和
defineCollisionRectangle函数,
用于判断是否与某个Sprite、
TiledLayer、Image的对象有图像上的重合(即游戏中的碰撞)。在程序中
手机游戏开发—《长征》
详细设计说 明
软件工程专修学院
团队名称:智我团队 所属学校:山东海天
团队成员:李运强、邹乐华、路丛
磊、刘鸿媛、宋慧
指导老师:岳茂顺
目录
第一章 引言 1.1 编写目的 1.2 背景 1.3 定义 1.4 参考资料
第二章 程序系统的结构设计 2.1 模块划分 2.2 结构划分 2.3 类划分及其关系 2.3.1 软件主要类及功能 2.4 流程设计
通关画面 失败画面
第三章 程序系统的模块设计
3.1 模块功能 3.1.1 界面模块
界面模块实现的是游戏的欢迎界面,开始界面和通关界面的显
示,当游戏玩家开始游戏时首先进入的是欢迎界面而不是直接进入游 戏,之后进入和主菜单,供游戏玩家来选择,玩家通过选择开始长征来 进入游戏,当游戏玩家躲过种种障碍,闯过三关后便显示通关界面。
Profile: 中文意思是简表,它是在Configuration之上的规范。简 表针对不同机器的特性定义了高级的API(应用程序接 口)。 MIDP: 全称是Mobile Information Device Profile。它是针对移动 设备定义的Profile。 MIDlet: MIDlet是在MIDP中定义的一种应用程序框架,它是被应 用管理软件(AMS)管理的。MIDlet是在支持MIDP规范的移 动信息设备上运行的应用程序,MIDlet不是一个单独的 文件,而是一个文件的集合,它除了必须包含一个继承 自javax.microedition.midlet.MIDlet的类之外,还包 括此类执行时间所需的其他类和资源文件(只要是非 class文件都成为资源文件)。
2.3.1 软件主要类及功能
Team.java: Logo1-标志类 Poem.java: Logo2-长征诗类 Open.java: Logo3-主角过场类
Menu.java: 主菜单类 Music.java:背景音乐类
RMS.java:存储功能类 LongMarchMIDlet.java:程序入口类
4.9.1 用户接口 4.10 游戏运行限制条件
4.11尚未解决的问题
第一章 引言 1.1 编写目的
编写详细设计说明书是软件开发过程中必不可少的部分,其目的是 为了使开发人员在完成概要设计说明书的基础上,完成概要设计规定的 各项功能的具体实现。经过这个阶段的设计工作,应该得出对目标系统 的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设 计语言书写的程序。详细设计的结果基本上决定了最终程序代码的质 量。详细设计的目标不仅仅是在逻辑上正确地实现每个模块的功能,更 重要的是设计出的处理过程应该尽可能简明易懂。详细设计是在确定功 能结构图的同时,进一步确定每一个模块的具体实现方法、设计系统的 物理模型等。 编写详细设计说明书的目的就是为程序员写出实际的程序代码提供 依据。它是软件详细设计阶段所有任务和所有相关人员(包括项目管理 人员、软件设计人员、软件测试人员、文档编制人员和质量审核人 员),所需要的参考资料。 详细设计是在确定功能结构图的同时,进一步确定每一模块的具体 实现方法、设计系统的物理模型等。 预期读者:项目管理人员、软件测试人员、文档编制人员、专家顾 问人员。
1.2 背景
软件系统名称:长征
任务提出者:齐鲁软件设计大赛组委会 开发者:山东海天软件工程专修学院智我团队 使用者:广大的游戏玩家
1.3 定义
Configuration:
中文意思是配置。它定义了硬件所必须具备的能力。 CLDC:
全称是Connected Limited Devices Configuration,中 文意思是有限制连接设备配置。它是在Configuration基 础上定义的Java的核心类库和虚拟机。
if(Math.abs(spRole.getX()spEnemy[enIndex].getX())<80&&Math.abs(spRole.getY()spEnemy[enIndex].getY())<20)
{ continue;
} } if(enemyTurn[enIndex]&&enemyLeft[enIndex])//enemy向 左转身 {
进入游戏帮助界面,显示游戏的玩法规则。 4) 游戏帮助:这里是说明怎么实现按键的控制,上下左右以及各
种功能按键的实现。 5) 关于游戏:这里是说明开发团队的信息,游戏名称以及游戏的
版本。 6) 退出游戏:退出整个游戏。
基本结构图如下:
开始长征
游戏玩家
选项 关于
帮助 继续 退出游戏
2.3 类划分及其关系
撞检测来改变主角发射子弹的战斗力,,程序中还对主角的战斗力和生
命值作出判断,当生命值为零时游戏结束。
程序流程图如下:
开始长征 继续 选项 帮助 关于 退出游戏
Y Y Y N N N
欢迎屏幕
Logo-team Logo-Poem Logo-open
主菜单
开始游戏
第一关
游戏通过
第二关
游戏通过
第三关
游戏通过
3.2.3 游戏主体模块
游戏主体模块包括的类有: LongMarchMIDlet.java:程序入口类 FirstGame.java: 关卡一 SecondGame.java: 关卡二 ThirdGame.java: 关卡三
3.3 模块的流程
游戏开始后进入界面模块的游戏欢迎界面,然后进入 开始界面,进入游戏后游戏主体模块,功能模块同时工作。游戏主体模 块按照游戏程序流程进行,第三关类并达到得分规定时返回界面模块运 行通关界面类。
角。
代码分析如下: /**
* @Method * * @Description * 决定 */
enemy的运动方法 enemy在一定范围内行走,主要由左右碰撞检测
public void enemyMove() {
for(enIndex=0;enIndex<11;enIndex++) {
if(eIsStop[enIndex]) {
2) 继续游戏:如果玩家在某种原因之下需要暂停游戏去忙其他事 情,我们设计了RMS存盘功能,游戏玩家可以随时暂停游戏保存下来, 下次打开游戏只需选择继续,就可以返回之前的动画。
3) 游戏设置:设置游戏的背景音乐开关,在J2ME中,处理音效需 要使用MMAPI的包。播放音效文件首先按照一定的格式读取音效文件并 将读取的内容传递给播放器,通过Player类中的setLoopCount方法设置 播放次数在此游戏中设置为循环播放,在经过player.start()播放音 乐。在声音大小的控制上通过定义changeVolume方法实现,游戏帮助:
第三章 程序系统的模块设计 3.1 模块功能 3.1.1 界面模块 3.1.2 功能模块 3.1.3 游戏主体模块 3.2 模块的类设计
3.2.1 Logo模块 3.2.2 功能模块 3.2.3 游戏主体模块 3.3 模块的流程
第四章 程序系统中的算法
4.1 主角移动的控制 4.2 碰撞检测 4.3 敌人智能算法 4.4 子弹智能跟踪算法 4.5 地图的生成 4.5 精灵随机位置的产生 4.6 输入项 4.7 输出项 4.8 流程逻辑 4.9 接口设计
我们使用collidesWith(TiledLayer t, boolean pixelLevel) 方法来检
测精灵间的冲突(即碰撞)。当主角与子弹精灵间发生冲突时,将以用
户各项值改变的形式告知用户。
4.3 敌人智能算法
首先定义敌人的攻击矩形区域,这里可以把敌人分为面对主角时发
射子
弹和敌人背对主角时发射子弹,当敌人直接面对主角时(主角的X坐
spEnemy[enIndex].setFrameSequence(enemyLframe); enemyTurn[enIndex]=false; spEnemy[enIndex].move(-7,0); } if(enemyTurn[enIndex]&&!enemyLeft[enIndex])//enemy 向右转身 { spEnemy[enIndex].setFrameSequence(enemyRframe); enemyTurn[enIndex]=false; spEnemy[enIndex].move(10,0); } if(!enemyTurn[enIndex]&&enemyLeft[enIndex])//enemy 向左行走 { spEnemy[enIndex].move(-3,0); spEnemy[enIndex].nextFrame(); if(!spEnemy[enIndex].collidesWith(tlOther,true)) {
1.4 参考资料
编号 1 2
书籍名 J2ME教程 手机游戏开发全书
主编 郭克华 李晓洁 王晓龙 马瑞
出版社 网上下载 清华大学出版社
第二章 程序系统的结构设计
2.1 模块划分
根据此游戏系统的具体功能将其划分为三个模块,主要包括:界
面模块,功能模块,游戏主体模块。这三个模块分工协作构成整个游戏 程序系统,完成系统的所有功能。
标小于
敌人的X坐标并且敌人正面面向左 或者是主角X坐标大于敌人X坐标
并且
敌人正面向右)并且在敌人的攻击范围之内,则直接发射子弹射击
敌人,当
敌人背对主角时(即主角X坐标小于敌人X坐标敌人正面向右则敌人
立即转
身发射主角或者是主角X坐标大于敌人X坐标敌人正面向左,这时敌
人则转
身射击主角)并且在敌人的巡视范围之内,则直接发射子弹射击主
3.2 模块的类设计
3.2.1 Logo模块
Logo模块包括的类有: Team.java: Logo1-标志类 Poem.java: Logo2-长征诗类
Open.java: Logo3-主角过场类
3.2.2 功能模块
功能模块包括的类有: Menu.java: 主菜单类 Music.java:背景音乐类 RMS.java:存储功能类
模块流程图如下:
开始长征 继续 选项 帮助 关于
欢迎屏幕
Logo-team Logo-Poem Logo-open
主菜单
退出游戏
Y Y Y N N N
开始游戏
第一关
游戏通过
第二关
游戏通过
第三关
游戏通过
通关画面 失败画面
第四章 程序系统中的算法
4.1 主角移动的控制
GameCanvas提供的getKeyStates函数可获取当前键盘上的信 息,并将获得的信息以位的形式返回用户所按键的状态。 LEFT_PRESSED,RIGHT_PRESSED,UP_PRESSED,DOWN_PRESSED,FIRE_PRESSED ,3键,分别对应左右上下ENTER键和数字3键,程序通过游戏玩家按下 的不同按键来判断主角的移动,上跳和射击,投掷手雷。
2.2 结构划分
此软件包括六部分:开始游戏,继续游戏,游戏设置,游戏帮 助,关于游戏,退出游戏,游戏用户可以通过访问不同的部分得到所需 要的信息。
下面是各部分的作用:
1) 开始游戏:进入游戏第一关,开始闯关。游戏玩家躲避种种障 碍直到三关全部通过,在闯关过程中根据游戏的进展会出现提示画面, 包括失败,过关以及最后的通关;在闯关过程中可以实现游戏的暂停, 继续和返回主菜单功能;如果任何一关闯关失败则返回游戏的当前菜单 界面。
3.1.2 功能模块
功能模块实现游戏中的基本功能,包括背景音乐的播放及开关的控 制
3.1.3 游戏主体模块
游戏主体模块也是游戏的主体部分,控制游戏的进展情况。实现游
戏的各个关卡以及相邻关卡的连接。游戏主体模块的运行完全按照程序 流程来进行,每一步都必须保证程序的运行无误。在游戏主体模块中还 要对程序中的数据进行加工处理,与程序相关的数据包括用户在运行此 游戏时的战斗力,生命值的存储。 战斗力,生命值,当生命值为零的情况下游戏结束,在程序中战斗 力会随着游戏的进展情况发生变化,时而增加时而减少并不确定,系统 会根据战斗力的不同来判断主角发射的子弹。而生命值只会减少不会增 加,只有主角打掉每关卡的BOSS,则进入下一关,直到三关全部通过。