文档编号:XXXXX-JS-0003
Just jump应用游戏项目
系统设计说明书
小组
2012年04月
修改记录
版本 | 变更原因 | 变更内容简述 | 编制/修订者 | 批准者 | 发布日期 |
1.0 | 需求分析不够详细 | 对系统的需求分析说明说里的各个需求进行了简单介绍 | 2012.04 | ||
1.1 | 包名描述不够清晰 | 采用CSCI专业术语,将包名统一拟为JJ-CSCI-CSCI- N | 2012.04 | ||
1.2 | 系统构架划分有误 | 由于系统只由一台主机组成,可以省略该系统结构图,并用文字进行了简单描述 | 2012.04 | ||
1.1 编写目的
1. 进一步加深对研究与开发实践课程的理解。
2. 对计算机编程语言综合运用能力的强化。
3. 对当前软件项目开发的实践。
4. 进一步细化软件设计得出的软件概貌,把它加工成在程序细节上非常接近于原程序的软件表示直接翻译成用具体的程序语言书写的程序
5. 确定了如何概要地实现所要求的软件,从而在编码阶段可以把这个描述
6. 对软件开发环境的进一步了解。
7. 加强成员间的进一步合作能力。
8. 对项目的统一建模的进一步了解。
9. 对软件开发进一步认识
1.2 项目背景
随着手机的发展,现在手机的功能越来越多,越来越强大。手机游戏开发行业也应运而生,而现在手机游戏的发展亦可以和掌上喜媲美,具有很强的娱乐性和交互性
目前最流行的手机游戏语言是JAVA,由于大多数的手机内置了JAVA的运行环境,加之JAVA语言的跨板性和可移植性,因此我们小组使用了JAVA语言编写“just jump”手机应用小游戏
“just jump”手机应用小游戏的原型是“涂鸦跳跃”,“涂鸦跳跃”作为一款休闲游戏,一年多时间里其在App store内的下载量就突破了500万次,广受好评。我们小组对“涂鸦跳跃”进行了改编和完善,使其更具有可玩性,易上手性和娱乐性,能进一步满足游戏爱好者的需求
项目名称:just jump
任务来源:研究与开发实验
交办单位:计算机学院 小组
承办单位:四川大学计算机学院
开发团队:计算机学院小组
用 户 :广大的游戏爱好者
1.3 术语及定义
J2ME:及Java ME(Java Platform, Micro Edition),是为机顶盒,移动电话和PDA之类嵌入式消费电子设备提供的Java语言跳板, 包括虚拟机和一系列标准化的Java API。
1.4 参考文献
《Java ME 手机应用开发大全》 黄正环编著 科学出版社 2010年版
《Java 手机游戏设计基础》 作者:李涛 清华大学出版社 2009年版
下面给出系统中出现的每个接口的规格说明,其中每个接口要求有如下内容:
(1)输入
(2)处理过程
(3)输出
(4)接口交互过程
(5)消息和通信协议
(6)性能要求
(7)故障处理
(8)其它要求
根据用户手机界面尺寸大小下载相对应的游戏规格
从各方面完善该游戏编程,做到正确性、健壮性、可靠性、性能、易用性、安全性、可扩展性、兼容性、可移植性等等产品质量需求。
● 软件开发性和可扩展性
JAVA程序具有很强的通用性和跳板移植性,本身就具有很强的可扩展性,所以在设计开发时,考虑到可扩展性,因此遵循一定的设计原则,以易于扩展和维护
● 软件易用性及易维护性
软件设计时要考虑到软件的易用性,不能给用带来使用的负担和记性的负担.同时系统还必须是易于维护的.所以要设计的简洁。
● 软件的标准性
依照J2ME开发标准;同时要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性.
● 数据录入和处理的正确性和及时性
软件运行时对数据的处理必须有正确的信息才能反馈;
● 数据的一致性及完整性
在必须数据不完整的情况下,应不予处理,并进行保存。
● 数据的共享与独立
用户特点:使用支持JAVA应用程序的手机的人群。主要针对年轻人群。
3 需求与规定
1、功能需求:根据系统实现的功能,将系统的功能划分为游戏帮助、游戏设置、游戏进行、游戏排行和游戏反馈等5个模块;
2、性能需求:
(1)数据精确度:要求用户按提示录入对应选择按钮,系统按照用户的操作进行相应操作,如键入信息发生错误,则有系统提示错误;
(2)时间特性:以系统时间为标准进行事务处理,达到实时要求,能实时反馈。
如响应时间、更新处理时间、数据转换与传输时间、运行时间等;
(3)适应性:界面设计简单,便于用户操作;
3、运行需求:
(1)数据录入和处理的正确性和及时性,软件运行时对数据的处理必须有正确的信息才能反馈;
(2)数据的一致性及完整性,在必须数据不完整的情况下,应不予处理,并进行保存;
(3)数据的共享与独立
4、其他需求
(1)软件开发性和可扩展性
JVVA程序具有很强的通用性和跳板移植性,本身就具有很强的可扩展性,所以在设计开发时,考虑到可扩展性,因此遵循一定的设计原则,以易于扩展和维护;
(2)软件易用性及易维护性
软件设计时要考虑到软件的易用性,不能给用带来使用的负担和记性的负担.同时系统还必须是易于维护的.所以要设计的简洁。
(3)软件的标准性
依照J2ME开发标准;同时要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性.
4 运行环境
手机具有支持JAVA语言开发软件的运行平台,任何操作系统都可。
手机具有Intel、Marvell、高通或德州仪器等类型CPU、至少2G内存,要求手机具有较高分辨率,有无触屏功能都可。
以上要求易于手机操作系统对游戏程序的运行有好的响应和大的交易吞吐量,使大家能够清晰顺畅的玩游戏,触屏与否显示了个人的操作习惯,我们尊重每个人的选择。
Just Jump软件只有一个主机系统组成,在手机JAVA平台上实现游戏运行,信息存储等功能
Just jump游戏软件由消息处理系统、场景显示、运动系统三大主要部分。其中又以消息处理系统为核心模块,其余部分紧紧围绕它运行。由于只有一台用户机器,所以只有一个模块,即用户模块。
消息系统:处理游戏中不同的状态,游戏根据不同的状态作出不同判断。
场景显示:随游戏的进行显示背景以及音乐的变换。
运动系统:根据用户输入完成游戏角色的不同运动姿态。
∙ 6 逻辑结构设计
∙
∙
图6-1 系统顶层软件结构图
如图6-1所示,系统由4个顶层软件模块组成:
● JJ-CSCI-CSCI-1:用户设置包。用户通过该包的类进行基本信息的录入和游戏等级,音效,场景等的选择
● JJ-CSCI-CSCI-2:游戏处理包。负责对输入输出请求的处理,以及计算最高分等。
● JJ-CSCI-CSCI-3: 音频图像包。实现音乐文件的存储和管理已经图像文件的存储和管理。
● JJ-CSCI-CSCI-4:信息存储包。负责对角色信息,高分排行,暂停状态等信息的暂时存储。
<1>JJ-CSCI-CSCI-1模块分解图
表6.1-1 全系统JJ-CSCI列表
Just-jump | |
模块名称、标识 | 功能简述 |
JJ-CSCI-1 | 用户设置(进程) |
JJ-CSCI-1-1 | 用户信息处理(进程) |
JJ-CSCI-2 | 游戏处理包 |
JJ-CSCI-2-1 | 角色运动(进程) |
JJ-CSCI-2-2 | 场景控制(进程) |
JJ-CSCI-2-3 | 场景变化(进程) |
JJ-CSCI-2-4 | 最高分计算(进程) |
JJ-CSCI-3-1 | 用户信息记录 |
JJ-CSCI-3-2 | 用户得分记录 |
JJ-CSCI-3-3 | 游戏状态存储 |
JJ-CSCI-4 | 音频图像包 |
参见图6-1、图6-2、图6-3、6-4.图6.1-1。
用户设置。
用户设置软件主要完成对用户的设置功能。
◆ 用户名的设置。
◆ 玩家性别的设置。
◆ 玩家形象的设置。
在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。网页用户界面应作到可靠性、简单性、易学习和使用。
软件接口
主要使用java间的函数调用。
硬件接口
在输入方面,对于键盘的输入。
内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。具体参数的结构将在下面数据结构设计的内容中说明。接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。
角色控制。
角色控制软件主要完成对角色运功的控制功能。
◆ 实现对角色运动状态的控制。
◆ 实现角色生命值等状态的更新。
在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。网页用户界面应作到可靠性、简单性、易学习和使用。
软件接口
主要使用java间的函数调用。
硬件接口
在输入方面,对于键盘的输入。
内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。具体参数的结构将在下面数据结构设计的内容中说明。接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。
在just_jump存储文件中有两个表:user和rank和pause。User是用来存储用户名和角色信息的。Rank是用来存储记录排行。Pause表是用来存储暂停时的状态的存储表。下面是分别介绍三个存储列表。
1. uer表:
用户名 | username |
用户现在得分 | currentScore |
性别 | sex |
形象 | image |
生命值 | lifeRate |
2.Rank表
第一名 | 用户名 | uername1 |
分数 | score1 | |
第二名 | 用户名 | uername2 |
分数 | score2 | |
第三名 | 用户名 | uername3 |
分数 | score3 | |
第四名 | 用户名 | uername4 |
分数 | score4 | |
2. pause表
用户(与user表连接) | user |
背景 | background |
音乐 | music |
速度 | velocity |
障碍物分布 | item |
每一个表对应一个文件夹。其中pause表中用户user是连接的user表中整个user的信息。所以表uer也是一个特殊的数据结构:
class User {
char username[20];
int currentscore;
char[4] sex;
int image;
int liferate;
}
同样在rank表中障碍物分布是一个自定义的特殊的数据结构:
Item: item[0..100]
class Item {
int article; //障碍物序号,不同的障碍物对应不同的序号
clsaa Point(int x,int y);//内部函数实现定位,x为横坐标,y为纵坐标
Point point; //障碍物位置
}
在表rank中,rank是一个长度为4的数组。Rank为元素单位,也是自定义的特殊的数据结构:
Rank: rank[0..4]
class Rank {
char username; //用户名
int score; //分数
}
下面我们逐个对每个表的物理结构进行分析:
1. uer表
char(20):username
int:currentscore
char(4):sex
int:image
int:liferate
2. rank表
Rank:rank[0..3]
3. pause表
int:background
int: music
int:velocity
User:user
由于我们项目是java手机小游戏,是一个相对比较小规模的设计。所以我们只需要一台安装有java平台的手机就可以完成用户的所以操作需求。所以我们这里的服务器,客户机,存储设备实际上都是同一部手机,是为了方便了解不同硬件部分的组件构成而设置的这样一个部署图。
用户通过设置模块设置好游戏场景和角色进入just jump游戏,通过显示模块显示出来。再通过控制模块控制角色运动并且用存储模块记录角色信息等内容。
运行控制将严格按照各模块间函数调用关系来实现。在各事务中心模块中,需对运行控制进行正确的判断,选择正确的运行控制路径。
1. 通过显示单元玩家注册用户名,设置单元初始化用户信息,存入存储单元中。
2. 玩家通过对话框,按钮使用设置单元设置难度、音效、背景、角色信息。
3. 点击“帮助”按钮进入帮助界面,帮助界面主要描述游戏的操作方法与游戏规则。
4. 几点“开始游戏”按钮,开始游戏,通过方向键,空格键操作角色。此过程由控制单元实现。
5. 游戏结束后,显示最后得分。并将最后得分与历史最高分作比较,如果高于最高分,则储存本次得分为最高分。否则最高分不变。并且显示“再玩一次”和“退出”。如果点击“再玩一次”,则转到4。
流程图如下所示
9.31根目录如下:
9.3-1 JJ-CSCI目录结构
Just-jump目录描述 | |
文件夹名称 | 功能简述 |
Src | 用来存储java语言编写的源代码。 |
Verified | 存放各种类以及声音,图片文件。 |
Res | 存放声音,图片文件 |
.Setting | 初始化文件夹 |
Bin | 目录用来存放编译的结果 |
表9.3-2 JJ-CSCI目录描述
● 缓存以及缓存层(caching layer)
在数据层和应用层之间增加数据缓存层,提供全局数据服务。可以大大减少数据库往返次数。与读取数据库和读取大文件(如XML文件)比,读取内存的速度无疑要快的多。所以对经常要访问的数据进行缓存是非常好的实践方法。因为现在系统往往内存很大,可以充分利用大内存,而共享内存更能实现数据并发访问。
● 多线程(multi-threading)
多线程对单CPU系统还只是顺序利用CPU时间和改善用户体验,多CPU系统才是真正的并行。要注意的是多线程不要争抢访问同一资源而导致部分串行操作,要做到真正的并行操作多线程并不容易。另外,在多线程间同步一个庞大的资源,过多创建线程又没有实现线程池也会导致系统性能下降。
● 数据库优化(database optimization)
如果应用程序使用了数据库,可以采取许多步骤来消除访问和写入数据时的瓶颈:
1) 标识潜在的索引,但不要创建过多的索引。
2) 如果使用 SQL Server,则使用 SQL Server 的事件探查器和索引优化向导。
3) 监视处理器的使用;理想范围是:75-80% 处理器时间。
4) 使用查询分析器分析查询计划以优化查询。
5) 使用存储过程优化性能。
6) 标准化写入的大量数据 —写入较少的数据。
7) 取消标准化读取的大量数据 —读取较少的数据。
● 文件系统优化
有时候系统性能不好,但当你关闭写log的功能,性能一下子提高很多。因为频繁的打开关闭大log文件时I/O开销非常大,同样记录log到数据库也一样。所以,release版尽量减少写log,或干脆移到裸设备上。
频繁打开关闭文件对系统性能下降程度是惊人的,可以通过一些变通办法来减少文件的频繁操作。
● 代码性能设计
在编程实现上,代码性能设计也很重要,一些昂贵的操作会占用大量的资源和CPU时间。
● 语言的选择
框架是Java的,但其核心独立模块是C++封装的,这样可以达到最佳的性能。
∙ 11 系统出错处理设计
(1)设置有可能出现错误,软件或手机问题,即不能进行正常的游戏。
(2) 显示有可能出现错误,软件或手机显示问题,即帮助、积分等内容不能进行正常显示。
(3)手机控制可能出现问题,如手机响应问题、按键反应速度慢等。
(4)软件控制可能出现问题,如左右运动软件或暂停软件发生错误等。
(5)信息存储可能发生错误,导致玩家信息或积分信息等没有记录或记录错误。
(1)将玩家输入的信息和游戏结束后要保存的信息备份,如果发生错误则调用备份信息。
(2)重新启动软件。
当用户每次结束游戏时,系统自动检测有无软件的更改和异常;系统定期检测数据库更新状况和软件更新及修补情况。
为了系统运行的稳定、可靠和维护方面的考虑,系统专门设计的出错处理模块主要包括:
(1)系统对于各种软件和数据库定期检测;
(2)系统的错误日志记录,用以针对性的解决常见问题;
(3)软件应捕获的错误,各种输入、存储、控制异常,并在异常发生后显示错误信息并相应的显示解决办法。
非界面程序使用windows下的source insight编辑.
界面程序使用Qt Creater 2.0.1编辑.
操作系统: windows xp sp3 / windows 7
编译器: javac
SDK: qt-4.7.1
配置管理工具使用Firefly。
随着科技的快速发展,很多手机都有了重力感应功能。对此,我们可以在今后的开发中考虑到添加重力感应模式。即把左右方向键隐藏,用左右摇摆手机达到控制游戏的目的。
本文来源:https://www.2haoxitong.net/k/doc/9668fe54312b3169a451a4cf.html
文档为doc格式