软件工程课程设计 连连看.docx
《软件工程课程设计 连连看.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计 连连看.docx(21页珍藏版)》请在冰豆网上搜索。
软件工程课程设计连连看
连连看软件需求分析说明书
变更记录
日期
版本
变更说明
作者
2015-01-06
1.0
初始版本
王海涛
签字确认
系统模块
对应章节
对应部门
负责人签字
1概述
1.1目的
本需求规格说明书编写的目的是为了清晰地说明本次开发《连连看软件》要实现的所有功能。
同时对软件所需实现的功能模块做了全面的描述。
它是后续开发工作和验收工作的依据文件。
1.2背景
待开发的软件系统的名称:
连连看游戏;
开发者:
软件1214班邢玮;
用户:
连连看游戏玩家;
本说明书的预期读者为:
用户,程序开发人员。
1.3术语定义
直连消除:
两个相同的图标在同一行或同一列,并且中间没有其它图标,可以消除;
一折连消除:
两个相同的图标仅经过一个转弯,可以消除;
二折连消除:
两个相同的图标经过两个转弯,可以消除;
1.4参考资料
(1)Java核心技术
1.5任务概述
1.5.1目标
打开连连看软件,用户可以选择游戏难度,点击相应的按钮进行游戏,系统向用户发出当前难度提示,用户点击确定后进入游戏界面,系统开始计时,游戏开始。
当时间结束时,游戏结束。
用户选择两个一样的图标进行消除,系统会自动判断用户所选择的图标是否满足直连、一折连、二折连消除,若满足,则消除这两个图标。
当用户消除所有的图标,返回本次游戏用时和得分。
用户可以单击任意一个图标两次来重置所有的图标。
在游戏的主界面,用户可以查看用户的由高到低三次游戏成绩,也可以查看开发人员的信息。
在游戏开后的任意时刻,用户都可以选择回到主界面或者退出程序。
1.5.2用户的特点
连连看软件的用户很广泛,所有明白连连看游戏规则的人都可以进行游戏
1.5.3假定和约束
本产品由个人来完成,要求在两周之内来完成,目前是单机版,不支持多人游戏。
1.6运行环境
简要说明本产品的运行环境(包括硬件环境和支持环境)的规定。
1.6.1软件环境
名称
版本
语种
操作系统
Windows
7及以上
语言
Java
运行环境
JDK,JRE
1.7.0及以上
1.6.2硬件环境
硬件配置
最低配置
推荐配置
客户端
1CPU:
P41.0G
1CPU:
P42.0G
Mem:
512M
Mem:
1G
HD:
40G
HD:
120G
1.6.3接口
用户界面
1.7需求规定
1.7.1对功能的需求
1.7.1.1系统功能层次模块图
1.7.1.2客户端模块功能的描述
1.7.1.2.1主界面
客户端显示
1.简单难度
2.中等难度
3.困难难度
4.历史成绩
5.关于作者
6.退出
1.7.1.2.2简单游戏
客户端向用户提示:
“在150秒内完成所有消除”
在用户点击确定后,游戏开始。
系统向用户显示剩余时间,在用户不点击任何图标的情况下,时间和分数每一秒都会减少一个单位。
用户每消除一对图标,时间就会增加一秒,分数也会增加。
用户双击同一个图标,使所有图标重置。
当所有图标都消除之后,系统返回通关成功的信息:
通关时间和成绩。
若时间结束时,还有未消除的图标,则系统向用户返回游戏结束信息:
“游戏时间结束”。
用户点击确定后,系统返回排行榜信息
1.7.1.2.3中等游戏
客户端向用户提示:
“在150秒内完成所有消除,向左并拢”
在用户点击确定后,游戏开始。
系统向用户显示剩余时间,在用户不点击任何图标的情况下,时间和分数每一秒都会减少一个单位。
用户每消除一对图标,时间就会增加一秒,分数也会增加,且所有的图标都会向左并拢。
用户双击同一个图标,使所有图标重置。
当所有图标都消除之后,系统返回通关成功的信息:
通关时间和成绩。
若时间结束时,还有未消除的图标,则系统向用户返回游戏结束信息:
“游戏时间结束”。
用户点击确定后,系统返回排行榜信息
1.7.1.2.4困难游戏
客户端向用户提示:
“在150秒内完成所有消除,每消除一对重置一次”
在用户点击确定后,游戏开始。
系统向用户显示剩余时间,在用户不点击任何图标的情况下,时间和分数每一秒都会减少一个单位。
用户每消除一对图标,时间就会增加一秒,分数也会增加,而且所有的图标都会重置一次。
用户双击同一个图标,使所有图标重置。
当所有图标都消除之后,系统返回通关成功的信息:
通关时间和成绩。
若时间结束时,还有未消除的图标,则系统向用户返回游戏结束信息:
“游戏时间结束”。
用户点击确定后,系统返回排行榜信息。
1.7.1.2.5历史成绩
用户点击“历史成绩”按钮,系统显示迄今为止的三次最好成绩。
1.7.1.2.6关于作者
用户点击“关于作者”按钮,系统向用户显示本软件开发者的信息。
1.7.1.2.7退出游戏
用户点击“退出游戏”按钮,程序自动退出。
1.7.2对非功能性的需求
1.7.2.1对性能的规定
1.7.2.1.1精度
所有数据均为整型
1.7.2.1.2时间特性要求
及时响应
1.7.2.1.3灵活性
无
1.7.2.2输入输出要求
鼠标操作即可
1.7.2.3数据管理能力要求
由高到低存放用户的8次记录
1.7.2.4故障处理要求
针对玩家异常操作,进行异常处理:
1.两次点击同一个图标,重置界面;
2.点击两个不同的图标a,b,再次点击其它图标时,会判断与b的连通性;
3.点击不连通的图标,不进行操作。
1.7.2.5其他专门要求
连连看系统设计说明书
变更记录
日期
版本
变更说明
作者
2015-01-06
1.0
初始版本
邢玮
2009-01-07
1.1
添加了一些算法
邢玮
签字确认
系统模块
对应章节
对应部门
负责人签字
2引言
2.1编写目的
本说明书目的在于明确说明系统各功能的实现方式,指导开发员进行编码。
本说明书的预期读者为开发者和测试等。
2.2背景
待开发软件系统的名称:
连连看软件
此软件系统任务开发者:
邢玮
此软件系统任务用户:
不详
2.3基线
连连看需求分析说明书v1.0
2.4范围
无
2.5定义
连连看:
玩家点击两个相同的图标,系统判断能否消除。
判断规则:
直连消除:
两个相同的图标在同一行或同一列,并且中间没有其它图标,可以消除;
一折连消除:
两个相同的图标仅经过一个转弯,可以消除;
二折连消除:
两个相同的图标经过两个转弯,可以消除;
2.6参考资料
属于本项目的其他已发表的文件。
本文件中引用的其他文献、资料以及软件开发标准。
3总体设计
3.1概述
3.1.1功能描述
系统包括的范围一个客户端和服务器端,实现实时信息传递。
3.1.2运行环境
3.1.2.1软件环境
名称
版本
语种
操作系统
Windows
7及以上
语言
Java
运行环境
JDK,JRE
1.7.0及以上
3.1.2.2硬件环境
硬件配置
最低配置
推荐配置
客户端
1CPU:
P41.0G
1CPU:
P42.0G
Mem:
512M
Mem:
1G
HD:
40G
HD:
120G
3.2设计思想
3.2.1总的业务流程
连连看总的流程是:
1、玩家选择游戏难度(简单游戏、中等游戏、困难游戏),系统向玩家提示所选择的游戏规则,并开始倒计时,游戏开始:
(1).简单游戏:
玩家选择两个相同的图标,系统判断是否满足消除条件。
玩家可以选择点击任意一个图标两次来重置游戏界面。
当玩家在时间结束前消除所有的图标,通关成功。
若时间结束时玩家没有消除所有图标,则系统返回游戏结束信息。
最后系统向玩家显示游戏成绩。
玩家可选择退出游戏或返回主界面;
(2).中等游戏:
玩家选择两个相同的图标,系统判断是否满足消除条件,每当一对图标被消除后,所有可向左移动的图标均向左并拢。
玩家可以选择点击任意一个图标两次来重置游戏界面。
当玩家在时间结束前消除所有的图标,通关成功。
若时间结束时玩家没有消除所有图标,则系统返回游戏结束信息。
最后系统向玩家显示游戏成绩。
玩家可选择退出游戏或返回主界面;
(3).困难游戏:
玩家选择两个相同的图标,系统判断是否满足消除条件,每当一对图标被消除后,整个游戏界面会被刷新一次。
玩家可以选择点击任意一个图标两次来重置游戏界面。
当玩家在时间结束前消除所有的图标,通关成功。
若时间结束时玩家没有消除所有图标,则系统返回游戏结束信息。
最后系统向玩家显示游戏成绩。
玩家可选择退出游戏或返回主界面;
2、历史成绩:
系统向玩家显示迄今为止的三次最好成绩。
3、关于作者:
系统向玩家显示软件开发者信息。
4、退出游戏:
系统自动结束本程序的线程。
3.2.2系统功能框架
系统功能层次图
3.2.3关键技术与算法
3.2.3.1判断图标消除的算法
直连:
判断两点是否在同一水平线或铅直线,若在则判断两点间是否存在非0节点,不存在则可以直连,否则不能直连。
一折连:
先判断两节点是否为对角相邻关系(x_0=x_1(+/-)1||y_0=y_1(+/-)1),若是则判断相邻两节点是否为0,有一个为0则可以一折连;若不为对角相邻关系,则分别判断两点与其所在水平线与铅直线之间的交点((x_0,y_1)与(x_1,y_0))与两点是否可实现直连,若有一点可以双向直连,则两节点可以一折连;
二折连:
遍历其中一个节点水平线和铅直线上所有值为0的节点(x_1,i||i,y_1),并判断(x_1,i||i,y_1)与(x_0,y_0)能否一折连,与(x_1,y_1)能否直连。
均能则可以二折连,否则判断下一节点。
若均不成功,则不能二折连。
3.2.3.2线程控制
时间控制,时间变量每秒减一,为0退出游戏并弹出结束界面
3.2.3.3JFrame可视化界面
在界面上添加按键二维数组,其值为图标名称。
为0则无图标。
3.2.3.4打包生成随机数矩阵算法
获取最大值max,最小值min,生成组数sum以及每个数出现次数num,
建立随机数组point[sum],
从min到max循环(循环变量i),每次生成4个0~sum的随机数tmp,并且当point[tmp]==0时,point[tmp]=i;否则重新生成改组随机数,最后得到随机数组为point[sum],其值为min~max,没个数出现num次。
3.2.3.5界面重置算法
遍历游戏界面矩阵,将值不为0的节点的值存入数组num[]中,
创建数组point[];循环for(i=0;num[i]!
=0;i++){生成随机数tmp,判断point[tmp]是否为0,为0则point[tmp]=num[i],否则重新生成随机数,且i--}
返回数组point[],遍历游戏界面矩阵,将point[]的值依次赋予值不为0的节点,并刷新界面图标
3.2.3.6图标消除算法(当两图标可连通时执行)
简单游戏将矩阵对应节点值置为0,并且对应按键执行setVisible(false);
中等游戏将矩阵