1
HENAN POLYTECHNIC UNIVERSITY
课
程
设
计
论
文
题 题
目 目:
:
基于安卓的扫雷系统设计
任课教师:
:
王新良
学生姓名:
:
刚梦媛
专业班级:
:
电信 1804
学 学
号 号:
:
311822000701
2020 —2021
学年
第 1 学期
2
目录
1.设计背景.......................................................3 1.1 课题的背景和意义 ......................................... 3 1.2 国内手机游戏发展现状与趋势 ............................... 4 2.开发环境.......................................................5 2.1 JDK 安装 .................................................. 5
2.2 Eclipse 安装 .............................................. 5 2.3 Android SDK 安装 .......................................... 5 2.4 ADT 安装 .................................................. 5 2.5 Android 工程目录结构分析 .................................. 6 2.6 小结 .......................................................6 3.扫雷游戏系统需求分析 .......................................... 7 3.1 界面需求 .................................................. 7 3.2 功能需求 ...................................................7 3.3 性能需求 .................................................. 9 3.4 环境需求 ...................................................9 3.5 小结 ...................................................... 10 4.扫雷游戏系统详细设计 .......................................... 10
4.1 扫雷游戏模块分析 .......................................... 10
4.2 界面布局 .................................................. 11 4.3 响应事件 .................................................. 12 4.4 菜单选择 .................................................. 13 5.结论与展望 .....................................................16
1
绪
论
Android 系统于 2007 年在美国推出后,Android 凭借其良好的用户体验,低廉的成本和较高
3 的开放性吸引着越来越多的终端厂商采用。Android 出现之前,智能手机 OS 市场中 Symbian和 WM 两者占据大部分市场份额,但在移动互联网的快速发展,终端+应用的趋势逐渐成为主流的情况下,两者的劣势逐渐突出。Symbian 由于发展多年,底层架构较为陈旧且对触摸屏支持不佳,用户体验较差;再加上系统较为封闭,支持的应用较少。WM 系统同样较为封闭,对终端厂商来讲引入成本较为昂贵,娱乐性平平,多用于商务机型。Android 是以 Linux 为核心的手机操作平台,作为一款开放式操作系统,随着 Android 的快速发展,如今已允许开发者使用多种编程语言来开发 Android 应用程序,而不再是以前只能使用 Java 开发 Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开发式操作系统。
1.1 课题的背景和意义
自上世纪 80 年代第一部手机诞生以来,随着计算机技术的进步,手机也经历了从模拟器到 GSM、2.5G 再到今天的 3G 手机如此一个发展历程。特别是进入 21 世纪后手机的硬件性能得到很大的提高,当前主流手机普遍配有四核的微处理器和 2GB 容量的存储器。与之同步发展的还有支持手机运行的手机操作系统,从当初的单片机系统到后来的专用嵌入式系统,到后来开始为智能手机设计开发出可以更高效管理手机软硬件资源的操作系统,其中有不少属于开源项目的手机操作系统。目前全球的智能手机操作系统主要以 Google 公司开发的Android 系统、苹果公司开发的 iPhone 系统、诺基亚公司开发的 Symbian 系统、微软公司开发的 WindowsPhone 系统和 Linux 系统为代表。
手机产业的发展也带动了手机游戏产业的快速发展。游戏是人们日常生活的一个必不可少的娱乐项目,在人们的生活中有许多的游戏,但是不同的游戏会带给玩家不同的感受和生活理念。游戏平台经过从游戏机到电视游戏,然后到 PC 游戏,再到手机游戏,中间经历了很多技术的更新和变革。但随着新技术的发展和人们生活水平质量的提高,手机开始逐渐普及,因为手机是非常小巧便捷的,而且方便的特性成为人们日常生活中必备通讯工具。而基于手机平台的游戏也就拥有的市场空间是巨大的,也因随着 3g 的开通和应用,手机游戏必然会迎来新的一轮游戏热潮。而扫雷游戏作为一款经典的游戏,一直以来都预安装在我们的电脑里,随着手机产业的快速发展,越来越多的程序开发者开始涌进手机软件开发领域,扫雷游戏也由电脑走向了各个手机系统。在应用商店里,基于 Android 的扫雷游戏款式多样,创意新颖,使得选题更具挑战性。
1.2 国内手机游戏发展现状与趋势
手机游戏(Mobile Game 或 Wireless Game),是指消费者利用随身携带并具有无
4 线网络联机功能的智能移动终端设备,能随时随地来进行的游戏。手机游戏最大的特点是其随时随地进行游戏的便利性。这些年来,手机游戏市场有了很大的发展,手机游戏已成为使用率最高的手机娱乐应用,占到各种手机娱乐应用比例的 78.4%。在日本,手机游戏市场经历多年的稳定增长,市场规模已经超过了 850 亿日元。在美国,手机游戏作为美国手机用户最喜欢的移动应用之一,在 iPhone 和 Android 等智能终端推出后发展迅速。而在中国,根据移动互联网第三方数据挖掘和整合营销机构艾媒咨询(iiMedia Research)发布《2012中国手机游戏市场年度报告》[2]图 1.1 显示,2012 年中国手机游戏市场规模达到 58.7 亿元,较 2011 年增长 79.0%。其中,2012 年中国手机网络游戏市场规模达到 21.77 亿元。
图 1.1 2012 中国手机游戏市场年度报告
2012 年手机网游在数量与质量都有了较大的提升,手机网络游戏得到了快速发展。
部分精品手机网游在收入方面的优秀成绩也不断吸引着巨头与更多手机网络游戏开发者进入。预计 2013 年中国手机网络游戏市场将会有更多的精品出现。
随着智能手机性能的不断提升与迅速普及,以及各种优秀手机游戏的出现为市场发展奠定了基础。随着手机游戏平台的逐渐成熟和国内外游戏巨头纷纷布局手机游戏市场,中国手游市场将会继续保持高速发展,手机游戏将会是中国游戏产业新的增长引擎。受益于手机在游戏操控性和表现力上的优化,玩手机游戏已经成为了手机用户特别是智能机用户不可或缺的日常消遣活动之一,未来手机游戏用户规模将会继续增大。2012 年中国手机网络游戏用
5 户规模的增长,一方面是由于大量手机网游开发者在 Android 平台上的布局吸引了不少手机用户,另一方面是智能手机的迅速普及扩大了手机游戏用户的基数,部分用户转化为手机网游用户。得益于未来网络资费的下调和 WIFI 热点的进一步覆盖,中国手机网络游戏用户规模还将继续扩大。
2. 开发环境搭建
K 2.1 JDK 安装
下载 JDK 程序,按照软件安装提示一步步进行,需要设置的环境变量:
1.我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:
2.JAVA_HOME 值为:
D:\Program Files\Java\jdk1.6.0_43(安装 JDK 的目录); 3.CLASSPATH 值 为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;
4. Path:JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\wbem%
2.2 Eclipse 安装
下载解压即可使用。
K 2.3 Android SDK 安装
下载文件解压到任何路径。
(1)
运行 SDK Setup.exe,点击 Available Packages。如果没有出现可安装的包,请点击 Settings,选中 Misc 中的"Force https://..."这项,再点击 Available Packages。
(2)选择希望安装的 SDK 及其文档或者其它包,点击 Installation Selected、Accept All、Install Accepted,开始下载安装所选包。
(3)在用户变量中新建 PATH 值为:Android SDK 中的 tools 绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。
(4)重启电脑。
T 2.4 ADT 安装
(1)打开 Eclipse IDE,进入菜单中的 "Help" -> "Install New Software",点击Add...按钮,弹出对话框要求输入 Name 和 Location:Name 自己随便取,Location 输入http://dl-ssl.google.com/android/eclipse。
(2)确定返回后,在 work with 后的下拉列表中选择我们刚才添加的 ADT,我们会看到下面出有 Developer Tools,展开它会有 Android DDMS 和 Android Development Tool,勾选他们,然后就是按软件安装提示一步步按 next。
完成之后:选择 Window > Preferences...;在左边的面板选择 Android,然后在右侧点击Browse...并选中SDK路径,本机为:D:\AndroidDevelop\android-sdk-windows;点击Apply、OK,配置完成。
2.5 5
d Android 工程目录结构分析
(1)src 目录
6 src 是 source(源代码)的缩写,用户程序中的所有 Java 源代码文件都应该放到这个目录下。开发者创建一个 Android 应用程序所需要做的工作几乎都位于 src 目录和 res 目录下。
(2)gen 目录
该目录用来存放由 Android 开发工具所生成的目录。该目录下的所有文件都不是我们创建的,而是由 ADT 自动生成的,该目录下的 R.java 文件非常重要。
R.java 文件中默认有 attr、drawable、layout、string 等四个静态内部类,每个静态内部类分别对应一种资源,如 layout 静态内部类对应 layout 中的界面文件。其中每个静态内部类中的静态常量分别定义一条资源标识符,如“ public static final int main=0x7f030000;”对应的是 layout 目录下 main.xml 文件。
R.java 文件中内容的来源,也即是当开发者在 res/目录中任何一个子 目录中添加相应类型的文件之后,ADT 会在 R.java 文件中相应的匿名内部类当中自动生成一条静态 int 类型的常量,对添加的文件进行索引。如果在 layout 目录下在添加一个新的界面,那么在 public static final class layout 中也会添加相应的静态 int 常量。相反的,当我们再 res 目录下删除任何一个文件,其在 R.java 中对应的记录会被 ADT 自动删除。再比如说我们在strings.xml 添加一条记录,在 R.java 的 string 内部类中也会自动增加一条记录。
R.java 文件除了有自动标识资源的“索引”功能之外,还有另一个主要的功能,当 res 目录中的某个资源在应用中没有被使用到,在该应用被编译的时候系统就不会把对应的资源 编译到该应用的 APK 包中,这样可以节省 Android 手机的资源。
(3)assets 目录
该目录用来存放应用中用到的类似于视频文件、MP3 一些媒体文件。
(4)Android 2.2 目录
存放 Android 自身的 jar 包。
(5)res 目录
res 是 resource 的缩写,称该目录为资源目录,用于存放与工程项目相关的各种资源文件。其中包含了大部分用于描述软件界面布局的 XML 文件和所有的图片文件(界面布局中会用到的图标、图片和动画)等。
res 目录下有三个 dawable 文件夹——drawable-*dpi,区别只是将图标按分辨率高低来放入不同的目录,drawable-hdpi 用来存放高分辨率的图标,drawable-mdpi 用来存放中等分辨率的图标,drawable-ldpi 用来存放低分辨率的图标。程序运行时可以根据手机分辨率的高低选取相应目录下的图标。
res 目录下 values 文件夹 strings.xml 文件用来定义字符串和数值,在 Activity 中通过getResources().getString(resourceId)或 getResources().getText(resourceId)取得资源。
res 目录下 layout 文件夹 main.xml 文件,屏幕布局目录,可以在该文件内放置不同的布局结构和控件,来满足项目界面的需要。
(6)AndroidManifest.xml 文件
功能清单文件,这个文件在创建项目的时候由 ADT 自动生成。通过扩展名可以知道它是一个XML 文件,其中包含了大量关于程序本身的信息,列出了应用中使用到的所有组件。
7
(7)
default.properties 文件
一般不需要手工修改,该文件存放了项目对应的一些环境配置,如应用要求运行的最低Android 版本。
2.6 6
小结
此部分主要叙述了 Android 系统框架的基本结构概况,在这个基础之上,完成扫雷游戏程序框架的构思;分析了 Android 手机平台的优势;对基于 Android 扫雷游戏开发的工具平台做了简单的描述,加深了对开发流程有了基本的认识;Android 开发,第一步就是搭建环境,这是很关键的一步,环境的搭建成功就可以进入软件进行开发,环境搭建的好,开发过程中就减少了许多错误,提高开发效率;对工程开发目录的梳理,是我们明白开发的整个流程需要哪些东西,怎么使用开发工具自带的某些功能。
第 第 3 3 章
扫雷游戏系统需求分析
在系统开发过程中, 需求分析是最重要的一环,它是决定项目成功与否的标准。若系统开发之前未进行详细的需求分析,无法准确的定位用户需求,设计出包括所有面向用户、面向机器和其他软件系统的用户接口,则会降低系统的实用性,并且若在后期发现系统无法满足用户要求再去修改则需要耗费大量的人力、财力和物力。因此,做好需求分析是每个软件开发者的必修课和必备技能。
3.1 界面需求
(1)界面友好、舒适、整洁美观; (2)界面交互性强,提示信息良好。
3.2 功能需求
Android 手机系统是当前市场占有率最高的移动系统,根据媒体报道,2013 年第一季度Android 系统在中国市场的占有率达到了惊人的 86%,而现在市面上的 Android 系统移动设备,几乎都是使用电容屏取代过去的电阻屏甚至更加落后的键盘,电容屏大大的增加了手机操作的灵敏度,使得我们玩机时能够有如丝顺滑般感觉,使用户拥有更好的使用体验。
扫雷游戏是一款很经典的小游戏,最初的流行伴随着 1992 年发布的 windows 3.1,之后迅速成为了各种操作系统中必不可少的一款游戏,扫雷游戏目标是要求玩家在最短的时间内,并且在没有点击到地雷方块的情况下,只有把所有的地雷找出并作出标记才算成功,游戏时只要触碰到地雷的方块,游戏就结束。整个游戏过程充满紧张和快乐的气氛,不断的考验玩家的逻辑思维能力和临时判断能力,不失为学习工作之余放松大脑身心的好途径。
该扫雷游戏是以 Android 平台进行设计与幵发的,旨在实现一个典型的初学者级别扫雷游戏,完成扫雷游戏的基本功能,在游戏界面布局上采取优化,使玩家在游戏时可以造成视觉的冲击,达到应用界面友好、舒适,界面交互性强,提示信息良好的效果。
8 扫雷游戏界面如图 3.1 所示:
图 3.1 扫雷游戏界面
在这个界面中,由众多面积均等的小方块所组成的区域称之为雷区,雷区的大小通过获取屏幕的宽与高和设置图片大小判定,该雷区由 i=10 行,j=12 列组成。游戏开始时,系统会在雷区的某些小方块中随机布下地雷,安放好地雷的小方块称之为雷方块,其它称之为非雷方块,布下地雷数与当前关卡密切相关,游戏关卡为 5 关,第一关 20 个地雷,往后每关增加 10 个,只有完成当前所在关卡方可进入下一个关卡,当 5 关都通过的时候,重新从第一关开始。
在游戏开始后,雷区上方有两个显示器。右边的计数器显示用户扫雷所花费的累计时间,以秒为单位;左边的计数器显示当前关卡设置雷数。游戏过程中,如果判断到方块不是地雷,就可以通过单击这个方块,方块就会翻开,显示该方块上、下、左、右、上左、上右、下左、下右联系八个方块的雷数信息,其范围为 1 到 8,某一个具体数字表示与其紧邻的 8 个方块中有多少雷方块,玩家可以根据这些信息去判断是否可以打开某些方块。
每次进入游戏程序,通过点击雷区方块开始游戏,并计时,当触碰到雷方块时,游戏结束,可以通过点击手机菜单键,调出游戏选择菜单,进行重新开始游戏和退出游戏;在雷区,
9 有一些方块是空白的,当点击到这些方块的其中之一时,就会通过递归算法,找出已打开空白方块周围所有空白方块方块,并把它们打开,直到连在一起的空白方块全部打开,形成涟漪效果;每次点击非雷的方块后,都要检验游戏的状态,当剩下未翻开的方块数等于所在关卡设置雷数的时候,则表示闯关成功。
3.3 性能需求
系统性能需求与功能无关,然而却影响到用户对系统功能的使用感受,因为它 更倾向于关注系统实现的功能能否达到运行要求,即高效、安全和稳定。下面对基于 Android平台的扫雷游戏系统需达到的性能需求进行分析说明:
(1)正确性
基于 Android 平台的扫雷游戏能按照需求正确执行相关任务,并完成各模块的相同要求。一款游戏给玩家的最直观影响就是用户体验,能否根据玩家操作指令正确有效地执行相应功能,如果用户体验不好,就会丧失玩家继续玩下去的心情,因此扫雷游戏系统最重要的部分就是确保系统各项功能能正确稳定的运行。
(2)高效性
扫雷游戏必须在尽可能短的时间内完成用户的响应,尤其是扫雷游戏判断输赢是在最短的时间之内扫出所有的地雷,所以一分一秒都是十分重要的,玩家对响应时间的忍耐极限小于 1 秒,超过 1 秒,就会降低系统对顾客的吸引力。
(3)兼容性
目前市场上各种规格性能手机太多,而且数码产品更新周期太快,有很多 Android 应用程序由于不兼容手机而造成强制退出甚至死机以及重启,这样的程序最终会被用户抛弃,得不到最终的认可,因此扫雷游戏必须具备良好的兼容性,不易与其他软件起冲突。
3.4 环境需求
系统环境需求包含开发环境需求和运行环境需求,只有在满足上述要求的基础上才能将系统的最佳效果展示给用户。
(1)开发环境需求
开发环境需求包括硬件配置要求和软件配置要求两部分。
①硬件配置要求
CPU: P4 3.0 或以上;内存:1GB 或以上;硬盘空间:20GB 或以上;
显卡:需为 32 位以上且可支持 1024X768 像素分辨率,最好为独立显卡; ②软件配置要求
10 操作系统:支持的操作系统为 Windows XP 或 Windows 7。
(2)运行环境需求
基于 Android 平台的扫雷在开发完成之后,若想达到满意的运行效果,将系统功能发挥到最大,则运行环境需满足一定的要求。
手机:Android 智能手机;内存:256M 及以上 第 第 4 4 章
扫雷游戏系统详细设计
系统详细设计建立在需求分析的基础上,设计的主要目的在于确定扫雷游戏的体系结构和功能架构,并对系统中各功能进行详细设计,以此为基础来实现系统功能。扫雷游戏重点在于游戏界面的绘制,雷的布置,时间的计算,扫雷的实现,拓展一片区域,判断输赢。
4.1 扫雷游戏模块分析
相对于 Windows,基于 Android 平台下的扫雷游戏讲究操作快捷、方便和流畅,主要可分为四大模块即界面布局、响应事件、菜单选择。如图 4.1 所示:
图 4.1 扫雷游戏模块
图 4.2 扫雷游戏界面布局
4.2 2
界面布局
界面布局就是我们进入游戏后看到的界面,是给玩家的第一感官印象,为了吸引玩家,界面力求简洁清新,看上去能够使人心情舒适,为友好的进行游戏创造一个良好的氛围。界面布局由游戏框架、图片显示、文字显示三个子功能模块组成,如图 4.2 所示:
(1)游戏框架
雷区,由行数 i 等于 10 行,列数 j 等于 12 列,120 个网格组成,这些矩阵网格就构成了扫
11 雷游戏的游戏框架。设定屏幕左上角坐标(0,0)为屏幕原点,雷区左上角坐标为(nMineXOffset,nMineYOffset),设其为雷区起点,nMineXOffset 表示屏幕左边到雷区起点的距离,nMineYOffset 表示屏幕上边到雷区起点的距离。获取网格代码如下:
rt.left = j*this.npictureWidth + nMineXOffset;
rt.top = i*this.npictureHeight + nMineYOffset; rt.right = rt.left + this.npictureWidth; rt.bottom = rt.top + this.npictureHeight;
要获得一个网格,只要得到它的左上角和右下角坐标即可,所以从雷区起点起,将(nMineXOffset,nMineYOffset)作为第一个网格的左上角坐标,那么图片的宽和高加上雷区起点坐标的值就是第一个网格的右下角坐标,就可以得到第一个网格,到此,第一个网格四个角坐标都可以求出,再把第一个网格的右上角、左下角、右下角坐标分别作为下一个网格的左上角坐标,再将其加上图片的宽和高,就得到下一个网格的右下角坐标,以此类推,雷区所有网格坐标就可以全部求出,进而通过坐标把网格画出。
同时,为了容易区分每一个方块,在每一个方块之间画一条黑色的细线以便用户区分。
(2)图片显示
在游戏界面,把雷布置好之后,就在所有方块上贴上绿色小正方形图片。点击一个方块,就会把该方块翻开,显示成蓝色小正方形图片。蓝色小正方形图片分为两种,一种上面是空白的,表示空白方块图片,空白方块就是该方块周围不存在雷;另外一种有数字,用来表示被电击方块周围存在雷的个数,是以文本的形式在蓝色小正方形图片基础上画上周围存在雷的个数的数字信息,其范围为 1 到 8。表示雷的图片和程序图标相同,如图 4.3 所示。玩家通过点击一个未被点击过的方块开始游戏,如果该位置是雷,则该放开翻开,显示雷图片,同时,其它未被点击的方块也将全部翻开,显示相应的图片,游戏结束;如果该位置不是雷,通过被点击方块位置获取与周围图片的联系关系,得到周围存在雷数,当雷数为零时,被点击方块翻开,显示为空白方块图片,当雷数不为零时,被点击方块被翻开显示为有数字的蓝色小正方形图片,以便玩家根据此信息继续有效的进行游戏。在游戏过程中,每点击一个方块,都进行一次检验,如果没有被翻开的方块个数等于该关卡设置的雷个数时,闯关成功,游戏进入下一关。
(3)文字显示
游戏界面上关于该关卡设置雷数、游戏累计时间和游戏信息都是通过文本形式呈现。核心代码如下:
12 ptFrame.setTextSize(20);
pt.setTextSize(15);
ptFrame.setColor(Color.RED);
pt.setColor(Color.LTGRAY);
canvas.drawText("欢迎你使用本游戏!",screenWidth/4, nMineYOffset/3, pt);
canvas.drawText(“地雷”+Integer.toString(nTotalSaps), nMineXOffset+Mine_HEIGHT, screenHeight/9, ptFrame);
canvas.drawText("时间:"+Integer.toString(nTime), screenWidth/2+Mine_HEIGHT, screenHeight/9, ptFrame);
screenWidth,screenHeight 分别为屏幕宽与高,Mine_HEIGHT 为图片宽度。定义 ptFrame画笔属性为:字体大小为 20,颜色为红色,用来显示该关卡设置雷数和游戏累计时间,定义 pt 画笔属性为:字体大小为 15,颜色为黑色,用来显示游戏信息。游戏信息显示区域为:从屏幕上边线为起点,高度为 nMineYOffset/3,长度是以距离屏幕左边 screenWidth/4 处为起点,把文字全部显示出来()。地雷数显示区域为:游戏信息显示区域正下方,高度为screenHeight/9,长度是以 nMineXOffset+Mine_HEIGHT 处为起点,到 screenWidth/2 处止。游戏累计时间显示区域为:地雷数显示区域正右方,与地雷数显示区域等高,长度是以screenWidth/2 处为起点,累计时间信息显示完。
同时,在晋级游戏或游戏失败时,在屏幕上显示短暂的文本,时间为 1s,显示当前关卡,并对玩家进行提醒,如果游戏失败,提示玩家重新开始游戏,如果游戏成功,提示玩家进入下一级,而且显示下一级的关卡数。
4.3 3 响应事件
响应事件,就是玩家对游戏进行操作时,系统所作出的响应,由时间响应和点击相应组成。
(1)时间响应
开发游戏的最重要的事情就是跟踪时间,进入游戏后,点击雷区任何一个方块, 游戏开始,同时开始计时。通过引入了一个线程 TimerThread 来控制时间,TimerThread 继承于 Thread,与主线程同时运行,设置其休眠期为 1s,每个 1s 系统刷新一次,累计时间加1s,同时刷新界面。如果点到雷,TimerThread 线程停止,计时也停止,则游戏结束。
(2)触摸响应
当玩家点击一个方块,而且这个方块在此之前未被点击过,系统就会获取所点击点的坐
13 标(x,y),通过点坐标确定该点在雷区行与列的位置。这里使用 MotionEvent 对象实现,在用户触摸屏幕时创建,它包含了关于触摸位置详细信息,MotionEvent 被传递到程序 View对象的 onTouchEvent()方法中,以决定要执行的操作。获取点击点坐标代码如下:
int x = (int)event.getX();
int y = (int)event.getY();
通过获取点击点坐标转化所成在雷区的行与列,其代码如下:
nj = (pt.x-MineX)/pictureWidth; ni = (pt.y-nMineY)/pictureHeight;
ni、nj 分别代表点击点在雷区的行与列的二维数组,pt.x、pt.y 分别代表点击点 x、 y轴坐标,pictureWidth、pictureHeiht 分别代表图片的宽与高。
4.4 4
菜单选择
图 4.5 扫雷游戏选择菜单
在游戏界面,通过手机菜单键,调出扫雷游戏菜单选择键。开始可以重新开始游 戏,退出可以退出游戏程序。
4.2 扫雷游戏流程分析
(1)系统流程图
(2)游戏流程图
14
(3)雷的布置 设定一个 i*j 的数组,i 表示为行数,j 表示为列数,取它们的乘积为 nRange。随机抽取一个数 Math.random(),使它乘上一个尽可能大的数再取整(int),比如 10000。使(Math.random()*10000)%nRange,得到的余数 nSap 必小于 nRange。nSap%i 得到
15 所在行位置,nSap%j 得到所在位置。以 5*5 数组为例:
由上得到 nRange=5*5=25,假使随机抽取数 Math.random()为 0.5,则 0.5*10000=5000,5000%25=0,0/5=0,0%5=0,其数组为(0,0)就是表中 0 所在位置;假使随机抽取数 Math.random()为0.5432,则 0.5432*10000=5432,5432%25=7,7/5=1,7%5=2,其数组为(0,3)就是表中 3 所在位置,依次布雷。
(4)扫雷
当我们点击一个方块时,系统就会获取点击点的坐标,通过点坐标确定该点在雷区行与列的位置,然后获取其周围方块存在的雷数。获取周围方块部分代码如下:
if (sap.GetMineLeft() != null)
sap.GetMineLeft().nSaps++;
只要被电击方块的左边存在方块(不是边缘),且以保存雷数信息不为空,则雷数加 1,以此类推,可以得到上下左右四个方向的雷数。
if (sap.GetMineLeft() != null && sap.GetMineLeft().GetMineUp() != null) sap.GetMineLeft().GetMineUp().nSaps++;
当被点击方块的左边同时也是上边存在方块,且以保存雷数信息不为空,则雷数加 1,以此类推,可以得到左上,左下,右上,右下四个方向的雷数。把八个方向(雷区边缘可能是三个或者五个)的雷数都加起来,就可以得到被电击方块周围存在的雷数。
在这里自定义一个对象 Mine,用来存储每个方块的信息,比如它的矩形、所在的行与列和以及它与周围方块的联系信息等。每次我们点击一个方块,就从该对象中查询该方块的信息,如果是雷,翻开所有图片,游戏结束;如果不是雷,对它周围方块进行查询获取周围所含的雷数。
(5)拓展一片区域
玩家在点击一个方块后得到有关下一步的提示,如果翻开的方块是空的(不是雷,且没有显示雷数),用户就无法猜测地雷的情况并决定下一步操作。为了避免这种情况,我们引入一个“递归”的概念,“递归”(Recursion)简单的说,就是一个程序能被自己所定义的语句调用,递归在程序设计上是一种重要的数据结构形态,通过递归程序的编写,在程序代码上会变得相当简洁,不过如果设计不当,会造成无穷循环或堆迭溢满的情形。
16
在游戏过程中,当游戏者按下非雷方块时,方块会沿四周八个方向向外翻开非雷方块。
程序的执行方面必须判断:以点击方块为中心,检查周围八个方块是否为非地雷方块,若其中有一个方块是非地雷方块时,则又以其为中心,向外检查周围八个方块是否为非地雷方块,如此反复的执行即构成递归的使用条件。
前面已经提到,递归必须设计终止的条件判断,在本游戏的递归架构中,当判断图片的内容为数字时(即在非雷图片周围),即立即停止递归程序。
递归其实也不是万能的,以本游戏做测试,当地雷区范围越大,且地雷数目不多时(一翻开非地雷方块,几乎全部方块都会翻开),执行递归就会变的非常缓慢,甚至造成堆迭溢满(不足)的情形,所以在游戏设计上必须考虑地雷区的大小,以免造成执行时错误中断的情况发生。
(5)输赢处理
点击到是地雷的方块时,游戏失败,显示“你输了!请继续第 1 关”小弹窗,计时停止,同时发所有的方块翻开。翻开方块部分代码如下:
mine[i][j].bTouch = true;
if (!mine[i][j].bSap)mine[i][j].SetDrawable(drArr[0]); else mine[i][j].SetDrawable(drSap);
点击到雷的图片后,其它未被点击到的方块点击状态赋值为 true,表示这个方块已经被点击过,同时把不是雷的方块翻开为非雷图片,否则都显示为雷的图片。
游戏过程中,每点击一次,都要做一次检验,通过没有被电击的方块个数和该关卡设置雷数的关系来判断输赢,如果两者相等,闯关成功,进入下一级,同时下一个雷数加 10,否则游戏继续,直到两者相等为止。
5. 结论与展望
本文以 Android 平台为基本的出发点,介绍了在扫雷游戏开发过程中所涉及到的知识点,详细分析了扫雷游戏开发的设计理念,算法思路。通过学习与思考并实践,使本人对 Google Android 开发及 Java 等相关的技术初步了解。在游戏开发开发过程中,也遇到的很多问题,
17 但是通过向老师同学请教和网上搜索相关问题及其解决方案,最终得到了解决。
本文具体工作总结如下:
1.介绍了 Android 开发背景和发展趋势及其应用领域;
2.阐述了 Android 平台开发环境的搭建,对 Android 系统框架、平台特性、优势和开发工具进行了概括,并对 eclipse 下工程目录结构进行分析;
3.详细分析了本次研究的重点,基于 Android 平台扫雷游戏 app 开发,通过对扫雷游戏规则的了解,在开发平台的支撑下,使用 JAVA 编程,把自己的设计理念变成现实,完成了扫雷游戏的制作。
4.对 JAVA 语言和 Android 系统框架相关知识,手机游戏开发的技巧进行了系统的学习。
参考文献
[1] 李鸥等著 . 实战 d Android 应用开发 [M]. 北京:清华大学出版社, 2012.
[ [2 2] ] 郭宏志著d . Android 开发应用详解 [M]. 北京:电子工业出版社 , 2010.6.
[ [3 3 ] 杨兴凯a .Java 面对对象程序设计. . 大连理工大学出版社 .2006.
相关热词搜索: 安卓课设