开源软件名称:WeirdDot
开源软件地址:https://gitee.com/echo-kai/weird-dot
开源软件介绍:
WeirdDot项目需求规格说明书1. 引言1.1. 编写目的本文档的目的是详细地介绍WeirdDot所包含的需求, 以便客户能够确认产品的确切需求以及开发人员能够根据需求设计编码,以下叙述将结合文字描述、数据流图、ER图等来描述WeirdDot的功能、性能、用户界面、运行环境、外部接口以及针对用户操作给出的各种响应。本文档的预期读者有客户、项目经理、开发人员以及跟该项目相关的其他竞争人员。 1.2. 范围本文档规定了应用程序的功能规范需求。 2. 总体概述2.1. 软件概述2.1.1. 项目介绍WeirdDot是一款基于JavaScript实现的小游戏合集,该游戏使用简约统一的画风对几款小游戏进行整合和改编,该游戏合集适合比较喜欢简约风格游戏并且喜欢休闲类游戏的用户。本应用程序功能包括选择游戏、开始游戏、返回上一步、提示下一步、回到主界面。具有以下特点: - 确保应用程序具有良好的系统性能,友好的用户界面。
- 较高的处理效率,便于使用和维护
- 采用成熟技术开发,使系统具有较高的技术水平和较长的生命周期
2.2. 软件功能2.2.1. 结构图2.2.2. 功能模块图2.3. 角色3. 功能需求3.1. 主界面模块3.1.1. 选择游戏用户需要选择一个游戏或者更换游戏时可以进行此操作。 3.2. 游戏模块- 简介提供了用户在进行游戏过程中可以进行的各种操作
- 功能列表
3.2.1. 开始游戏用户进入游戏后需要开始游戏以及重新开始下一轮可以使用此操作 3.2.2. 执行游戏动作用户在游戏过程中需要进行包括落子或者滑动时会执行此操作 3.2.3. 返回主界面用户在游戏过程中期望回到主菜单选择另一个游戏时可以执行此操作 3.2.4. 返回上一步用户在游戏过程中期望回到上一步操作是可以执行此操作 4. 性能需求本项目性能需求有: 5. 接口需求5.1. 用户接口交互界面采用浏览器显示,适配性较高。 5.2. 软件接口本应用程序可运行在主流浏览器上。 5.3. 通讯接口Internet接入协议:TCP/IP、HTTP 6. 总体设计约束6.1 标准符合性本应用程序的开发在源代码上遵循JavaScript编程规范及其开发标准 7.软件质量特性7.1. 可靠性- 容错性:用户不合理的操作,不会造成应用程序不可用或应用程序崩溃(会)。客户端在不同的操作系统下或不同的硬件配置下,都能正常工作,也不会因为用户在系统装了不同的软件,造成本产品的工作不正常。.
- 可掌性:提交给用户的最终产品在6个月的运行期间,不能有致命错误,严重错误不超过5次,一般错误不超过15次。
- 可恢复性:当应用程序出现故障或机器硬件出现断电等情况,应用程序应该能自动恢复数据和安全性等方面的功能。
7.2. 易用性- 易懂性:用户能够容易的理解该应用程序的功能及其适用性。
- 易学性:该应用程序简单易学,容易.上手。
- 易操作性:本应用程序除了鼠标操作外,还可通过快捷键进行相关的操作。
7.3. 可维护性本应用程序未实现的功能正在进行完善中,另版本可进行升级。 7.4. 可测试性产品的单元模块和最终产品的功能都是可验证和可测试的。 7.5. 可用性本应用程序可用性强,只要能够使用浏览器访问相应页面即可使用。 8. 团队分工- 何凯:需求分析文档1.0
- 何凯:主界面开发
- 何凯、yanghai:围住神经猫游戏开发
- 滕昶、陆春浩:五子棋游戏开发
- 吴文龙、廖宇阳:2048游戏开发
软件设计说明书1. 围住神经猫1.1. 流程图1.2. 类图1.3. 时序图1.4. UI图2. 五子棋2.1 时序图2.2 UI图2.3 补充说明2.3.1 初始化界面2.3.2 下棋- 调用NextStep(location):
位置有两个参数, 通过获取光标位置获得, 下一步的横轴和纵轴。实现思路如下: - 调用anyWin():判断新下的一点在四个方向上是否有任一方向形成五连子,来判断是否达成获胜条件,如果任意一方获胜,则结束游戏
- 调用aiNextStep(), 生成ai的下一步
- 调用anyWin(),判断是否达成获胜条件,如果任意一方获胜,则结束游戏
- 将玩家和ai上一步的位置存入数组lastStep[]
- 如果玩家按下悔棋按钮,则调用withDraw()撤回上一步的棋子
- 调用 resReturn返回下棋结果
重复以上步骤,直至游戏结束
2.3.3 ai算法- 调用评分算法assese(), 判断当前局势。对每一个可下的点进行评估,选出评分最高的点,作为下一步的落点。
2.3.4 重新开始- 调用refreshGame():
设置棋盘为空,lastStep[]为空,等待用户下第一步
2.3.5 结束游戏- 调用refreshGame()
- 调用showResult():显示结束界面,展示胜者
3. 20483.1 时序图3.1.1 初始化界面调用gameInit() :给最大分值和游戏分值绑定数据变量,刷新颜色,随机生成两个新元素。 3.1.2 元素移动调用move(direction) :移动有四个方向:上、下、左、右。实现思路如下:如果触发向左移动 遍历所有非空元素 调用itemMove(currentItem, direction) : 如果当前元素在第一个位置 不动 如果当前元素不在第一个位置 如果当前元素左侧是空元素 向左移动 如果当前元素左侧是非空元素 如果左侧元素和当前元素的内容不同 不动 如果左侧元素和当前元素的内容相同 向左合并,增加合并后的分值*10 根据是否有元素移动来决定是否产生新元素。其余方向以此类推。 3.1.3 刷新界面调用refreshGame() :所有元素设为空元素,游戏分数清零,随机生成两个新元素。 3.1.4 结束游戏调用isGameOver() :获取所有非空元素,如果所有元素都非空,循环遍历所有元素,如果存在元素四周有元素和该元素数值相同,则游戏未结束;如果所有元素四周的元素和该元素数值都不相同,则游戏结束,弹出游戏结束窗口,窗口可以选择“关闭”或“再玩一次”。 3.2 UI图 |
请发表评论