基于Java实现Android 蛤蛤连连看有APP【100010567】
蛤蛤连连看
需求分析
1 Introduction 简介
1.1 Purpose 目的
为了进一步了解“连连看”各项功能的实现过程,包括:开始游戏、退出游戏、播放音乐、英雄榜和游戏到计时。此外,巩固和提高自己的对 MFC 项目开发实践能力。尝试着添加自己喜欢的图片来做一个类似的小游戏,在学习之余可用来休闲和娱乐一下。一方面自己增加程序设计学习兴趣,寻找成就感,另一方面为今后步入社会打下基础。
1.2 Scope 范围
1.2.1 Name 软件名称
蛤蛤连连看
1.2.2 Functions 软件功能
在时间内完成图片消除。应用内内置了暂停功能、图片重排、消除提示功能、以及连接消除功能。并且分为了无尽模式与闯关模式。
1.2.3 Applications 软件应用
“连连看”游戏是不分男女老少,适合大众的集休闲、趣味、益智和娱乐于一体的经典小游戏。该游戏速度节奏快,画面清晰可爱,适合以女生为主体的细心的玩家,游戏中多样式的图片,也给人以美的享受。同时,游戏中的等级划分使玩家在各个游戏水平都可以寻找到挑战的目标,长期的保持游戏的新鲜感。
通过对连连看游戏功能的分析,实际操作以及查阅相关的资料,我们可以知道其主要的工作步骤,以此为蓝本,设计出与之相关的源代码来实现它的各项功能。在各类游戏迅速增长的今天,一个好的、真正给大众带来欢乐的游戏是不会被淘汰的。连连看直至如今依旧被接受,它存在的价值已经被肯定了。
2 High Level Design 概要设计
2.1 Level 1 Design Description 第 1 层设计描述
2.1.1 System Architecture 系统结构
2.1.1.1 Description of the Architecture 系统结构描述
2.1.2 Decomposition Description 分解描述
主要分为无尽模式和闯关模式两个子系统。
下面有些许多模块功能是重合的可以进行复用。主要有时间限制模块、消除棋子模块、游戏升级模块、提示消除模块、棋子重排模块、界面及游戏逻辑交互模块、界面模块及素材模块。
2.2.2.1 时间限制模块
1、简介
对时间进行倒计时统计
2、功能列表
① 经典模式倒计时模块
② 无尽模式无计时模块
2.1.2.1.1 功能一名
1 功能设计描述
1、设定一个时间定时器
2、每一次时间间隔到,当前限制时间减少 1s。
3、如果限制时间变为 0s,说明游戏结束,弹出结束对话框。
4、无尽模式可基于经典倒计时进行修改。
(1)类
1)setTimeOut
对时间进行倒计时,生成一个时钟表,然后进行倒计时,当时间到达后进行提醒功能。暂停时,时钟暂停计时,而在新关卡时进行刷新时间。
2.2.2.2 消除棋子模块
1、简介
核心模块,对正确配对的棋子进行消除,其中包含了几个子功能。主要是对该功能的分解以及辅助。
2 类
1)棋子选取模块、
点击棋子会进行选中,而当有两个模块进行选中的时候则会调用类型比较模块进行判断。同时如果配对不成功,也会对选取状态进行消除。
2)路径查找模块
在线格内对路径进行查找比较,寻找最短的直线路径能否通过两次转弯内到达。若达到则调用棋子消除模块,若无法到达,则两个棋子的选中模块均取消。
3)类型比较模块
比较选中的棋子的类型,如果相同则调用路径查找模块,若不同则取消两个棋子的选取状态。
4)棋子消除
相同类型的棋子从棋盘中消除
5)动效模块
对连线消除及选中效果进行渲染。
3 功能实现
2.2.2.3 游戏升级模块
1、简介
闯关后游戏难度会发生变化,这种难度的变化主要体现在棋盘大小的变化及时间限制的变化。
2、功能列表
① 游戏难度参数初始化模块
② 游戏难度升级模块能
2.2.2.3.1 难度变化
1 功能设计描述
主要运用该模块对游戏难度进行调整,这样设计是使得后期测试及改进比较方便
(1)类
1)initDifficulty
难度初始化,主要是对初始棋盘的生成,以及根据游戏类型来对时间进行限制
2)updateDifficulty
难度升级,每次过关后都会调用,根据关卡数据以及类型数据生成新的棋盘。
2.2.2.4 提示消除模块
1、简介
点击提示按钮后,会对能够进行消除的方块进行匹配,然后进行特殊的连线提醒,具有动效而不消除。
2、功能列表
① 棋子对提示模块
② 棋子对路径提示模块的功能
3、功能设计描述
① 查找棋盘中相同类型的棋子
② 在相同棋子中查找满足路径要求的可消除的棋子对
③ 给出其中一对棋子的提示框以及路径线
2.2.2.5 棋子重排模块
1、简介
该模块主要是对界面布局进行重排,主要在三种情况下调用,界面初始化,无可能连线结果以及用户主动选择的时候,对界面对所有的图片进行重排而只改变位置而不改变数量。
2、功能列表
① 数组随机乱序模块
② 重新渲染界面模块
3、功能描述
① 保存当前棋盘状态数组到临时数组
② 循环的从临时数组随机取出数据到棋盘数组并渲染出新的界面
2.2.2.6 界面及游戏逻辑交互模块
1、简介
该模块主要负责游戏交互逻辑,以及一些界面,解决一些冲突问题来保证游戏的进入和正常运行。
2、功能列表
①Handler 信息交流模块
② 界面渲染模块
3、功能设计描述
① 建立 Handler 进行信息的交互,保证用户点击事件以及系统内置事件对界面的逻辑影响正确
② 需在算法模块和界面模块完成后进行
③ 游戏界面布局保证主游戏内容部分不与计时区域以及按钮区域冲突。
④ 保证同一模式下的游戏素材图标为同一类型
⑤ 各界面背景及棋子主题同一
4、文件列表
如下表所示。
名称 | 类型 | 存放位置 | 说明 |
---|---|---|---|
GameView.java | Java | LinkGame\app\src\main\java\com\plter\linkgame\game\ | 负责视图的源码文件 |
2.2.2.7 素材模块
1、简介
包含各种素材,为消除提供物质基础。
2、文件列表
如下表所示。
名称 | 类型 | 存放位置 | 说明 |
---|---|---|---|
sc.png | PNG | Linkgame\app\src\main\assets | 提供消除的素的 |
3 UI Design 界面设计
3.1 界面
1、界面原图
首页界面,主要是图标和首页 UI,分为两种模式。下面附带文字提示语
2、闯关界面
在闯关完成时给予相应提示。如果使用暂停功能则对屏幕部分进行遮挡
3、游戏结束页面
在完成游戏或者挑战失败时会提示上述两个页面。
4、闯关界面图
在闯关时有许多不同的小 UI 需要对它们进行消除。
这里面还包含许多资源的放置。
4 Error Design 出错处理设计
当连连看棋子过多的时候,对棋盘数量的限定防止边界溢出。
对于不能消除的方块要进行判断,避免错误消除。
对频繁点击进行限制,防止在短时间进行重复操作。
系统设计
1 Introduction 简介
1.1 Purpose 目的
该需要规格说明书主要说明连连看项目中包含的功能和性能所要求的描述,该说明书的预期的读者为用户、项目管理人员、测试人员、设计人员、开发人员。
这份软件规格说明书中主要描述该项目中的功能需求,明确要求开发的软件应该具有的功能、性能与界面,可以让系统分析人员和软件开发人员可以清楚的了解用户的需求
1.2 Scope 范围
该说明书主要包括所有的功能模块的需求、以及软件和硬件的要求,对用户的范围以及游戏的难度等都做了一个要求
2 General description 总体概述
2.1 Software perspective 软件概述
2.1.1 About the Project 项目介绍
不管在哪个个小游戏网站,“连连看”游戏总是排在受玩家欢迎排名的前几位。因为它是不分男女老少,适合大众的集休闲、趣味、益智和娱乐于一体的经典小游戏。该游戏速度节奏快,画面清晰可爱,适合以女生为主体的细心的玩家,游戏中多样式的图片,也给人以美的享受。同时,游戏中的等级划分使玩家在各个游戏水平都可以寻找到挑战的目标,长期的保持游戏的新鲜感。
通过对连连看游戏功能的分析,实际操作以及查阅相关的资料,我们可以知道其主要的工作步骤,以此为蓝本,设计出与之相关的源代码来实现它的各项功能。在各类游戏迅速增长的今天,一个好的、真正给大众带来欢乐的游戏是不会被淘汰的。连连看直至如今依旧被接受,它存在的价值已经被肯定了。
2.1.2 Environment of Product 产品环境介绍
我们是基于 Android Studio 进行游戏的开发的,我们在开发过程中依赖了很多的包以及组件,通过这些组件组合在一起,我们可以完整的开发出这个项目。我们使用安卓开发,产品的外形、以及内部的界面都是我们精心挑选的图画
2.2 Software function 软件功能
连连看游戏一共有两种模式,分别是经典模式与无限模式。经典模式中有着时间的限制,时间会按照秒数来不断的减少,当时间没有时,如果还有棋子没有消除的话,就会提示游戏失败,游戏失败的话需要从第一关重新玩,没有选择关卡的机制。当顺利通关时就会提示进入下一关,当通过所有的关卡的时候就会提示顺利闯关。
2.3 User characteristics 用户特征
由于本游戏设计的比较简单,老少皆宜,其中高中生和大学生居多
3 Specific Requirements 具体需求
3.1 系统用例
由于连连看游戏很简单,所以只有用户进行经典模式游戏和无限游戏两种用例
用例一:
用户进入游戏,点击选择经典模式,然后进行游戏,当游戏通过或者游戏失败的时候都会进行友好的提示,用户要么全部通过所有关卡,或者就是中间失败,失败之后必须从第一关重新游戏。
用例二:
用户进入游戏,点击无限模式,由于无限游戏没有时间的限制,所以游戏一般情况下都可以顺利通关
3.2 子功能模块
1、子功能功能简介
游戏中有几个不同小功能,分别是重排、提示和暂停,这些都是在游戏过程中设置的子功能。
游戏一共有两个模式,分别是经典模式和无限模式,子功能包含了几个不同的模块、这些模块加在一起共同完成了这个游戏。
2、子功能模块
时间限制模块:
1、设定一个时间定时器
2、每一次时间间隔到,当前限制时间减少 1s。
3、如果限制时间变为 0s,说明游戏结束,弹出结束对话框。
4、无尽模式可基于经典倒计时进行修改。
消除棋子模块:
1、设定棋子的点击状态
2、处于点击状态的棋子限定在 2 个之内
3、对两个被选中的棋子进行类型判断
4、对棋子路径进行三级测试(横向判断、纵向判断)来确定路径是否可行
5、当类型及路径皆可行时,棋子进行消除
6、棋子消除时,调用动效显示消除路径
7、判断棋盘中是否有可行消除棋子对,若无则自动进行重排
游戏升级模块
1、游戏等级难度各参数初始化
2、保存当前游戏难度等级
3、每次过关都调用更高一级难度,当无更高级难度,提示已通关
提示消除模块
1、查找棋盘中相同类型的棋子
2、在相同棋子中查找满足路径要求的可消除的棋子对
3、给出其中一对棋子的提示框以及路径线
棋子重排模块
1、保存当前棋盘状态数组到临时数组
2、循环的从临时数组随机取出数据到棋盘数组并渲染出新的界面
3.2.1 Functional Requirements1 子功能 1:重排功能
1 介绍
重排功能:在玩的过程中,如果发现目前没有很好的选择的时候,可以按重排按钮,这个时候可以对目前的棋子重新排列,方便更好的消除棋子,然后通关。
2、输入:无输入内容,只需要点击一下重排按钮即可
3、处理:当进行重排功能的时候,会把当前所有的棋子放入一个随机数组中,然后在重新进行分配,这些分配都是随机的,所以有可能让相同的棋子更好的组合在一起啊,方便消除。
4 输出
进行重排之后,当前的排列会发生变化,然后随机出现一个新的排列,重排的时间是很短的,可以瞬间进行重排,便于更好的消除棋子。
3.2.2 Functional Requirements1 子功能 2:提示功能
1 介绍
在游戏的过程中,当发现没有很好的消除目标时,但是这个时候并未自动重排,可以点击提示按钮,系统会自动提示可以消除哪些棋子,这个时候就可以点击消除了。
2 输入:点击界面上的提示按钮
3 处理:系统会自动对这些棋子进行选择,然后发现第一对相同的棋子,然后会出现一根线连接可以消除的两个棋子。
4 输出:系统自动提示哪两个棋子可以消除。
4 Performance Requirements 性能需求
4.1 时间性能需求
当进入游戏,并且点击进入经典模式和无限模式的时候时间不能太短,不然的话用户体验不会,还有重排以及提示功能的时候也要把时间限制的很短,这样才可以更好的提高游戏的体验性。
4.2 系统开放性需求
系统可以在不同的平台上都可以很好的安装和移植,而且我们可以增加很多不同的功能,让系统有很好的可扩展性。
4.3 界面友好性需求
以上的图片就是我们游戏中的截图,个人感觉我们的界面设置的还是很有意思,看起来很舒服,而且我们的游戏玩起来非常有意思,难度逐渐递增,最后一关难度很大,没有长时间的练习一般人无法通过。
4.4 系统可用性需求
系统在不同的安卓手机上都可以很好的安装并且使用,并没有出现问题。iOS 的用户无法安装我们的游戏。
5 Overall Design Constraints 总体设计约束
开发人员必须按照我们提前设计好的内容进行游戏的开发,不能随心所欲的修改项目中的内容,在游戏的难度设置方面,开发人员必须按照之前商定好的难度进行设计,不能让游戏过难或者过于简单,这样会降低游戏的体验。在界面设计方面,设计人员最好能够设计出体验良好的界面,让人看起来很舒服,开发人员必须严格按照设计人员的设计来完成开发。
项目组的所有人员在项目期间要确保能够按照时间计划来顺利的完成项目,最好不要出现拖延的情况,如有特殊情况必须提前说明,方便进行工作的交接,确保项目能够顺利的进行
5.1 Hardware Limitations 硬件约束
本项目在不同的安卓平台山都要能够正确的安装、运行,对平台的硬件配置没有大的要求,一般的智能机即可安装本游戏,并且可以很好的体验游戏。而且由于游戏比较简单,所以安装包很小,需要的内存并不多,一般的手机都有足够的内存来安装该游戏。在时间方面,点击游戏图标进入游戏,以及再游戏中按提示按钮和重排功能的时候时间必须都限制的很短,这样用户的游戏体验才可以更好。
5.2 Technology Limitations 技术限制
UI 界面的设计,首先我们需要把关卡和时间置顶,然后把重排、提示、暂停三个按钮置底,然后中间的棋子还需要在嵌套一层才可以。
棋子的消除:首先我们要进行类型的判断,类型的判断之后还要进行连线的判断,由于连线最多可以由三条线端组成,所以我们可以分成三级判定,每一级都要判定,判定还包括纵向判定和横向判定。
UI 界面和实际的逻辑算法是分离的,因此我们需要使用两个线程来同时处理这两个方面,使用 hanlder 来进行数据的交互。
6 Software Quality Attributes 软件质量特性
详细说明项目任何其他的质量特性。该特性对客户和开发者都非常重要。考虑的方面包括:适应性,可用性,正确性,灵活性,交互工作能力,可维护性,可移植性,可靠性,可重用性,鲁棒性,可测试性和可用性等。定量的详细描述这些特性,尽可能的可验证。对不同属性之间的重要性加以阐述,如:易用性比易学性更重要。
每一个属性单独使用一个小节描述,可根据需要进行增减,如增加可维护性小节等。
6.1 Reliability 可靠性
适应性:在现有的基础上我们可以进行游戏的扩充们可以增加游戏的难度以及乐趣,还可以增加游戏的关卡和模式,可以保证游戏能够很好的可扩展性,可以在原来的系统中增加新的功能,可方便的增加,而不影响原系统的架构。适用于多个不同版本的安卓平台。
容错性:在网络拥塞、系统崩溃、内存不足的情况下,不造成该游戏的功能失效,可正常关闭及重启。
可恢复性:本游戏为单机游戏,不需要联网,只要手机不出现问题,不会出现突然退出的情况。
6.2 Usability 易用性
易用性:我们游戏具备良好的界面设计,使用户清晰易用,而且由于我们设计的比较简洁,所以可以很快的学会使用。而且我们界面设计的没有输入的框,可以阻止用户输入非法数据或进行非法操作,对于复杂的流程处理,应该提供向导功 能并注释。可随时给用户提供使用帮助。我们界面设计的只有几个按钮,可以很好的操作,进入游戏可以选择经典模式或者是无尽模式,然后直接开始游戏,下面有重排、提示、暂停三个按钮对应相应的操作,当游戏通关或者是游戏失败之后都会进行良好的提示。
7 Requirements Classification 需求分级
Requirement ID 需求 ID | Requirement Name 需求名称 | Classification 需求分级 |
---|---|---|
3.2.1 | 重排功能需求 | A |
3.2.1 | 提示功能需求 | B |
4.1 | 时间性能需求 | B |
4.2 | 系统开放性需求 | A |
4.3 | 界面友好性需求 | B |
4.4 | 系统可用性需求 | A |
重要性分类如下:
A. 必须的 绝对基本的特性;如果不包含,产品就会被取消。
B. 重要的 不是基本的特性,但这些特性会影响产品的生存能力。
C. 最好有的 期望的特性;但省略一个或多个这样的特性不会影响产品的生存能力。
♻️ 资源
大小: 17.2MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87404245
相关文章
- [Android]中文API(一)android包下的那些类
- [Android]android自动化测试十六之calabash-android
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- 《android开发艺术探索》读书笔记(十一)--Android的线程和线程池
- 1、Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco
- java.lang.OutOfMemoryError: Java heap space 解决方法
- 《android开发艺术探索》读书笔记(十)--Android的消息机制
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
- SAP Authenticator Android app
- 不会性能优化?你还差这一份《Android互联网公司性能优化项目实战》合集
- Android面试涨薪攻略指南:Android面试必知必会Java知识点
- android 延长开机动画,当FallbackHome消失时结束开机动画
- android系统电源管理分析
- Android反射设置和获取系统属性
- Android【报错】java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.Bu
- Android的kotlin的报错提示:java.lang.ArrayIndexOutOfBoundsException: length=0; index=-1
- Android 10.0 SystemUI下拉状态栏UI定制化开发系列(二)
- Android JNI学习(二)——Java与Native相互调用
- Java Logger(java日志)
- Android Java 与 C++ 恒调用,路径、文件名、延长的最大长度
- android开发中json与java对象相互转换
- java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in
- 【java】Java 中泛型的实现原理
- android Kotlin int类型和Long类型转换
- android开发,Android Studio在创建安卓虚拟设备(AVD)时,报错:Unknown Error
- 迁移到Android后android.support.v4.content.FileProvider运行崩溃