admin 管理员组文章数量: 1184232
2024年6月2日发(作者:js广告代码转html)
基于ANDROID系统的游戏APP设计毕业论文
目录
第1章 绪论 ........................................................... 1
1.1
选题背景及意义 ................................................. 1
1.2
Android手机游戏APP的市场现状 ................................. 2
1.3
本文主要容 ..................................................... 2
第2章 Android系统平台概况 ............................................ 3
2.1
Android操作系统 ............................................... 3
2.2
Android操作系统特性 ........................................... 3
2.3
Android操作系统框架结构 ....................................... 4
2.3.1 Application ............................................. 4
2.3.2 Application Framework ................................... 4
2.3.3 Libraries And Android RunTime ........................... 5
2.3.4 Linux Kernel ............................................ 5
2.4
Android应用程序构成 ........................................... 5
2.4.1 Activity ................................................ 5
2.4.2 Broadcast Receiver ...................................... 6
2.4.3 Service ................................................. 6
2.4.4 Content Provider ........................................ 6
2.5
Android应用程序的生命周期 ..................................... 6
第3章 系统的整体设计 ................................................. 8
3.1
数独游戏简介 ................................................... 8
3.2
游戏策划 ....................................................... 9
3.2.1 欢迎界面的策划 .......................................... 9
3.2.2 游戏界面的策划 .......................................... 9
3.2.3 相关资源 ............................................... 10
3.3
游戏的架构 .................................................... 10
WORD版本.
3.3.1 各类的介绍 ............................................. 10
3.3.2 游戏的框架简介 ......................................... 11
第4章 软件的实现 .................................................... 13
4.1
欢迎界面的实现 ................................................ 13
4.1.1 KLSDActivity实现 ....................................... 13
4.1.2 WelcomeView类的实现 .................................... 13
4.1.3 WelcomeViewDrawThread类和WelcomeViewGoThread类的实现 .. 14
4.1.4 HelpView类和AboutView类的实现 ......................... 16
4.2
游戏界面相关类的实现 .......................................... 17
4.2.1 GameView的实现 ......................................... 18
4.2.2 TimeThread的实现 ....................................... 18
4.3
数独算法类的实现 .............................................. 19
4.3.1 数独算法基本逻辑 ....................................... 20
4.3.2 检测填充结果 ........................................... 21
4.4
游戏的测试和运行 .............................................. 22
4.4.1 游戏测试概述 ........................................... 22
4.4.2 测试环境 ............................................... 23
4.4.3 游戏运行结果 ........................................... 23
结论 .................................................................. 27
致谢 .................................................................. 28
参考文献 .............................................................. 29
WORD版本.
第1章
绪论
1.1 选题背景及意义
2007年,Android手机操作系统横空出世,并以开源的特点迅速占领手机操作系
统的市场。据调查,在当今智能手机操作系统中,Android系统的智能手机所占的比
例已经高达到62%,越来越多的用户选择安卓手机。
占据着如此巨大的市场份额,所带来的利益也是极其诱人的,随着移动互联网的
发展以及智能手机的普及,对于手机APP发展越来越快,其中,手机游戏APP的开发更
加具有诱人的利益。手机游戏APP吸引用户最大的特点就是因为方便,用户可以随时
随地使用,正因为这个特点,手机游戏APP已成为用户最喜欢的移动应用之一,不管
在iPhone还是在Android,发展速度都极其迅速
[1]
。常见手机游戏APP的特征可概括如
下:
(1)潜在用户群巨大:据调查。目前全球有20亿人使用移动,并且每天这个数
字都在增加。甚至除了一些发达国家外,各国的手机用户都远远超过计算机用户。由
此可以想象,手机游戏的潜在价值是十分巨大的。
(2)移动性与便携性:相比于传统的控制台游戏,手机游戏APP具有可以随身
携带,用户可以随时随地进入游戏,去参加一些限时活动或者购买装备等特点。因为
这个特点使得手机游戏APP早已成为人们日常生活中用于消遣时间的选择。用户可以
在等车、休息时进行游戏。调查显示,适当的玩玩游戏可以让人释放压力,因而手机
游戏APP已慢慢变成人们日常生活中一种普遍的娱乐方式。
(3)支持网络:手机是一种网络设备,在某些时候可以让多个用户同时在线游
戏。而随着移动互联网的发展,用户越发渴望移动游戏,为了满足用户的这一要求,
Android平台游戏的开发将之运用在了实际中。
本文以数独游戏APP为例,详细介绍了在Android系统平台上开发的优势。
数独又被称之为九宫格,来源于中国古代,但那时的规则更加复杂,那时的规则
不是数字不能重复,而是要求每行、每列以及斜向上的各数字之和为15。《易经》
中的九宫图也是由此而来。数独真正被世人所了解是在2004年英国《泰晤士报》的
封面上刊登了一个数独的游戏。由此数独游戏开始广泛传播。
WORD版本.
数独的游戏规则十分简单,用户只需在空格处填上1-9的数字,并使该数字在每
行、每列以及每个小的九宫格都只能出现一次,这种推理性的游戏操作极其简单,不
需要数字运算,而且有助于开发大脑,锻炼思维,因而很受用户喜爱。
1.2 Android手机游戏APP的市场现状
Android是由Google开发的一种基于Linux平台的开源操作系统。它包含移动
手机工作的全部软件,集操作系统、界面展现及软件应用程序于一体,并且解决了以
往产业创新的专有权问题
[2]
。Google与30多家在技术和无线应用方面的知名企业共
同开发出了Android系统。并且通过与开发商、运营商以及制造商等合作伙伴建立良
好的合作伙伴关系,共同建立一个开放式,标准化的生态系统。
在Android系统上开发的游戏软件,无需进行市场划分,更加不需要为用户进行
量身定制等需求。因为用户的核心需求都是娱乐和打发时间,这样的要求依附于社会
发展层次,与地区限制等因素无关,甚至可以打破文化的限制。考虑到这一因素,游
戏在开发时都会考虑它的普遍性及其传染性,如何让推出的一款游戏点燃用户周围玩
家的激情,从而占领整个市场,这是每个商家需要考虑的问题。而在当今社会,每一
个使用Android手机的用户都有可能是游戏需求的潜在用户,而随着移动时代的到来,
Android手机的用户量也是每日剧增,在这种利益的驱使下,Android手机的市场越发
壮大,其所带来的潜在影响就是游戏市场将得到巨大的发展空间
[3]
。
1.3 本文主要容
本文由五个部分组成,各部分容如下:
第一章 绪论。详细介绍了本文的选题背景及意义,以及Android手机游戏的
市场现状。
第二章 Android系统平台概况。这一章主详细介绍Android智能手机系统的市
场现状、功能特征、特点以及体系结构等方面的容。
第三章 系统的整体设计。这一章主要介绍了对游戏APP的一系列策划,所要
实现的功能以及架构的介绍。
第四章 软件的实现。这一章对整个游戏APP的界面、游戏过程中可能会出现
的问题的处理以及游戏的修改和整合做了详细介绍。
总结。对本文所描述的加以总结并表达对未来的期望。
WORD版本.
第2章
Android系统平台概况
这一章将对Android开发平台做出详细的介绍,包括Android操作系统、特性、系
统框架、程序的各个模块以及系统的生命周期。
2.1 Android操作系统
Android手机操作系统是基于Linux平台实现的一种开放源码的手机操作系统,由
谷歌于2007年推出的,为了占据移动终端的头把交椅,谷歌不惜花费巨力将Android
打造成为真正意义上的开放源码的移动平台,在移动终端的基础上,让Android在拥
有移动手机所需要的一系列软件的基础上,能够更进一步加快移动互联网的前进步
伐,并且能够在原有基础上得到创新。
由于Android的前景及其存在的巨大利益,谷歌为此可以说是花费了巨大的精力
和成本。开发Android系统初期,通过和全球30多家在手机应用和移动开发项目上的
领军人物的合作,使得Android在一开始就有了一个良好的基础。后期为了依靠
Android系统的良好优势创建一个开放性、标准化的移动软件平台,谷歌更是与开发
商、制造商以及运营商等形成了长期友好的合作伙伴关系。为了让每一个Android系
统的移动手机用户可以在任何时间和地点都能够被提供所需要的信息
[4]
,谷歌甚至将
Android操作系统当做是公司企业战略之一。
2.2 Android操作系统特性
Android操作系统特性如下所示:
(1)框架及特性:Android操作系统有4大组件及各式的控件,用于软件开发,
其有两个主要的特性,分别是复用性和替代性。
(2)虚拟机Dalvik:在开发软件过程中,免不了需要检测软件运行情况,而这
就离不开虚拟机的作用,在Android操作系统中所使用的虚拟机是一种由谷歌开发的
Java虚拟机,不同于市面上所推行的其他虚拟机,谷歌自主开发的虚拟机更加适用于
Android系统,而且运行效率较其他的更快,资源占用率更小。
(3)SQLite数据库:在移动设备中存在大量的数据,如何管理这些数据是十分
重要的一个环节,而SQLite数据库的出现有效解决了这一问题,SQLite可以进行层次
化的存储数据并且它的占用存少,处理速度快,此外SQLite还可以支持事务处理。
WORD版本.
(4)多媒体:支持各种格式的音视频文件
(5)全球移动通讯系统:简称GSM,为了实现全球标准化网络,使得一部移动设
备不受区域限制而推出的第二代移动通信技术。
(6)蓝牙:蓝牙是一种在短距离实现语音和数据传输的无线连接技术。
(7)全球定位系统:简称GPS,是由覆盖全球的24颗卫星组成的卫星系统。
(8)开发环境:以Eclipse集成开发环境为核心,调试工具,设备模拟器,存及
性能检测为辅。
2.3 Android操作系统框架结构
Android系统操作平台主要分为四个部分,依次为:Application、Application
Framework、Libraries And Android RunTime、Linux Kernel。如图2.1所示。
图2.1
Android操作系统平台的架构模型
2.3.1 Application
与传统的操作系统不同,谷歌为了用户能够更好地体验Android系统,对于一些
传统的应用仍会保留。但与其特有的应用一样,所有应用都将基于Java语言进行编写。
但这并不妨碍用户的使用,因为所有应用都可以通过网络嵌入,在同等条件创建,可
以并行运行
[5]
。
2.3.2 Application Framework
Android移动设备上的每一个应用程序都是各个组件组成,而Android系统主要有
WORD版本.
4大组件,分别是Activity、Broadcast Receiver、Service以及Content Provider,
这些组件通过Application Framework提供的API组成了一个个应用程序的框架。有了
这样一个大的框架,再加上一些控件的添加,就组成了一个个移动设备中所使用的应
用程序。
2.3.3 Libraries And Android RunTime
Android之所以能被不同组件相互使用,主要是由于它有自己的一套核心库,通
过核心库的容,程序员在开发是可以省去不少麻烦。由于Android是基于Java语言开
发的,因而在Android核心库中包含了大部分Java语言核心库的容。Android系统中所
用到的虚拟机Dalvik就是以Linux kernel为基础实现的,Dalvik和JavaVM不同,
Dalvik执行的.dex格式的文件,而JavaVM执行的是标准的字节码。此外Dalvik是
Register-based的虚拟机,可以最大限度的实现优化,更加实用于移动设备,而
JavaVM是Stack-based虚拟机,远不如Dalvik。
2.3.4 Linux Kernel
正如每个人都需要一个大脑一样,每一个操作系统也需要一个核心,对于Android
操作系统而言使用Linux核来作为系统的核心处理事务。其中包括机制的安全、存及
进程的管理以及网络堆栈等。Android操作系统的运行离不开移动设备的驱动程序,
其中主要的有Display Driver、Flash Memory Driver、Camera Driver、Audio Driver、
Wi-Fi Driver、KeyBoard Driver、Bluetooth Driver以及Android所特有的驱动Binder
IPC驱动
[7]
等。
2.4 Android应用程序构成
与其他计算机开发平台不同,在Android平台上开发的程序都有一个唯一的入口
启动程序,正如前面所说到的,程序的开发是由各个组件之间的相互组合而成,
Android操作系统有四大组件,这些组件通过Intent来传递数据。在一个程序中并不
是都需要Activity、Service、Broadcast Receiver和Content Provider等全部的组
件,有时可能只需要几种组件相互组合就可以了。另外,正如每个公司都需要在工商
局注册一样,每一个组件的使用也需要在清单文件中注册
[8]
。清单文件是一个xml文
件,就如一个国家的法律一样,清单文件是每个程序都不可或缺的。
2.4.1 Activity
作为四大组件之一的Activity应该是程序员用的最多的一个组件,也是最好用的
WORD版本.
[6]
的一个组件。在一个程序中,每一个Activity就是一个手机界面。而在这个界面中程
序员可以添加很多视图,如:Button、EditText、ListView等。通常情况下一个应用
程序可能包含多个Activity,而每一个Activity之间也可以相互跳转。当然Activity
之间的跳转也是可以返回的,这种返回机制在多个Activity之间的跳转是非常有效
的。用户可以通过这种机制继续之前的操作。这些Activity之间的相互跳转都离不开
Intent的作用。Intent主要有两个数据结构组成,action及data。Action的种类很多,
常见的有:main、view、edit等,而action所需数据都是url的形式
[9]
。
2.4.2 Broadcast Receiver
当程序需要处理外部事件时,需要利用Broadcast Receiver来完成,用户并不能
看见Broadcast Receiver,用户只能通过NotificationManager来了解发生了什么事
件,Broadcast Receiver也需要注册才能使用,只不过这个注册可以是在清单文件也
可以在代码中进行
[10]
。只要完成注册,一旦事件发生,应用程序可以直接启动。
2.4.3 Service
Service也是程序的一种,它可以长时间运行,和Broadcast Receiver一样,
Service也没有用户界面,不仅没法交互,而且不能自己运行。只有通过Activity或
Context对象来调用
[11]
。比如说用户在使用音乐播放器时,突然想要上网,此时,用
户的手机虽然跳转到了网页界面,但是音乐播放器并没有停止工作,而是等待用户的
唤醒继续使用。而这正是由于Service在执行。如果用户有需要也可以强行停止
Service的运行。
2.4.4 Content Provider
不同于其他的操作系统,Android操作系统在文件类型、数据库类型以及其他类
型等数据存储方面是独立的,这就有效的避免了某些病毒或不正常程序运行所带来的
影响。虽然数据存储是独立的,但是却并不影响数据在程序之间的交换。为了方便数
据的共享,Android系统提供了Content Provider,一个程序如果想要获得另一个程
序的数据,只需在该程序中实现Content Provider接口,此时只要其他程序有访问权
限,就可以获取该程序的数据并对其进行修改
[12]
。
2.5 Android应用程序的生命周期
程序的运行是指从开始到结束的过程,每一个程序都有一个生命周期。不同于其
他系统,在Android平台上开发的程序的生命周期与自身无关,不受自身的约束,而
WORD版本.
是通过Android系统来决定的,一个程序的生命周期长短是由系统的负载和应用程序
来决定的。Android系统程序进程如图2.2所示。
关键优先级
前台进程
高优先级
可见进程服务进程
低优先级
后台进程空进程
图2.2
Android应用程序进程优先级
(1)前台进程:在程序运行过程中前台进程是极其重要的,是与用户进行交互所
必不可少的。前台进程主要有四种情况。正如上文提及到一样,系统在运行过程中可
能涉及多个进程同时运行的情况,这会导致系统存被极大的占用,此时如果设备的存
不足,则会导致某些进程无法继续运行,此时需要清除一些长时间未曾使用的进程以
释放存资源,保证其他进程的正常运行。
(2)可见进程:可见进程顾名思义就是指用户可以看见的页面,但是却不与用户
进行交互,对于程序的运行没有任何影响。此外与该进程相关的其他进程如果正被可
见进程调用,则该相关进程同样被视为可见进程。Android系统正常情况下不会存在
大量可见进程,但有时为了前台进程的正常运行,系统会清除一部分可见进程,释放
存,为前台进程提供资源。
(3)服务进程:服务进程就是指系统正在运行的程序。服务进程同样是不可见的,
一般情况下,服务进程会一直在后台运行,但有时为了前台进程和可见进程的正常运
行,系统也会结束一些服务进程,释放资源。
(4)后台进程:后台进程是指所有已启动的进程之外的进程,在Android系统的移
动设备中存在大量的后台进程,这些后台进程会占据大多的存资源,所以优势为了保
障其他进程的正常运行,系统会优先考虑结束后台进程。
(5)空进程:空进程是一个没有任何组件的进程,用户同样看不见,但在释放资
源时,空进程会第一个被清除,空进程与其他进程存储地址不同,空进程储存在系统
存中,设备被重新启动时,空进程依然会运行。
设备在运行过程中会涉及到释放资源方面的问题,当系统资源紧的时候,系统会
优先释放优先级低的进程,一个进程的优先级取决于该进程中组件的优先级最高的那
个
[13]
。如果一个进程需要获取另一个进程的数据,那么这两个进程会保持相同的优先
级。
WORD版本.
WORD版本.
第3章
系统的整体设计
3.1 数独游戏简介
数独的游戏规则很简单,用户在运行游戏之后,设备的界面上会出现一个9×9的
表格,总共81个格,其中有些格有数字,用户只需在其他空格处填上1-9的数字,并
且使得每个数字在每行、每列以及每个3×3的格子中都只有一个。游戏框架如图3.1
所示。
点击图标
开机动画
菜单界面
关于游戏帮助游戏开始游戏退出游戏
游戏区域功能区域计时区域
暂停换题提示退出
图3.1
游戏框架图
数独游戏是一款非常容易上手的游戏,下面我简单介绍一下该游戏的运行步骤。
(1)用户在自己的移动设备上点击游戏图标,首先进入眼帘的便是游戏的欢迎
界面,用户可以点击任意位置进入主菜单。
(2)在菜单界面有四个选项,用户可根据提示进行不同的操作。
(3)在进入游戏时,用户可以看见在下方有四个按钮以及一个计时区,用户可
以查看游戏运行时间,也可以通过点击按键进入不同的操作。
(4)当用户将设备界面上所有的空格全部填满时,系统会自动进行比对,如果
全部正确,则会跳转到胜利的界面,反之,弹出游戏失败。
(5)不管是胜利还是失败,用户都可以点击任意位置返回欢迎界面。
WORD版本.
(6)在主界面点击退出游戏即可结束游戏。
3.2 游戏策划
3.2.1 欢迎界面的策划
用户在运行游戏后,首先进入的是开机动画界面,这一功能的实现主要是利用图
片的刷帧效果。用户在开机动画界面任意点击即可进入游戏的主菜单界面,根据提示
点击相应位置即可实现相应的功能。如图3.2所示。
图3.2
菜单界面
这里选取480×320的手机屏幕分辨率,当y位于()时,程序开始游戏;当y位于
(180 230)时,程序会进入游戏介绍界面;当y位于(230 280)时,程序会跳转到
游戏帮助界面;当y位于(280 330)时,程序直接退出。
3.2.2 游戏界面的策划
当用户进入游戏时,在游戏界面下方会有四个功能键以及一个计时区。如图3.3
所示。
游戏区
计时区
暂停
提示
换题
退出
图3.3
游戏主界面
游戏主界面分为三个区域,游戏区域是用户需要操作的区域,计时区是用于提示
用户游戏进行了多久,四个按钮可以让用户实现相应操作。
WORD版本.
3.2.3 相关资源
程序自身并没有音乐及图片等资源文件,所需资源都需要程序员自行添加,程序
所需资源如表3.1所示。
表3.1
所用图片资源
图片名
g
g
go_
g
g
g
g
g
像素
21×21
21×21
150×80
150×80
150×80
150×80
21×21
50×30
50×30
25×25
31×31
×86
320×480
用途
输入数字
默认数字
游戏图标
游戏失败
恭喜过关
暂停中
实践中的0
按下提示
按下暂停
提示图标
时间冒号
退出提示
菜单单元
图片名
key_
small_background.p
ng
像素
100×100
50×30
50×30
24×24
50×30
50×30
50×30
50×30
320×480
100×100
320×480
320×480
320×244
用途
数字键盘
按下换题
未按下换题
选中单元格
未按下放弃
按下放弃
未按下提示
未按下暂停
背景
背景方框
关于背景
帮助背景
欢迎动画帧
在Android操作系统中,非代码类的文件存放于res文件夹下,图片等资源则存放
于drawable文件夹下。
3.3 游戏的架构
3.3.1 各类的介绍
1.共有类
KLSDActivity类继承父类Activity并重写里面的方法,是整个程序的核心和入
口,通过与其他类的交互获取消息,并通过对收到的消息的处理跳转到其他界面
[14]
。
这是整个程序唯一的公共类。
2.欢迎界面相关类
(1)WelcomeView类:游戏欢迎界面类,即用户运行游戏所展现的界面。
(2)WelcomeViewDrawThread类:该类是欢迎视频界面的刷帧线程。
WORD版本.
(3)WelcomeViewGoThread类:欢迎界面的服务线程。
(4)AboutView类:游戏介绍界面的绘制。
(5)HelpView类:游戏帮助界面。
3.游戏界面相关类
(1)GameView类:介绍游戏的规则及模型,同时生成游戏过程中的各个画面及
用户的交互。
(2)GameViewDrawThread类:执行刷帧操作。
(3)TimeThread类:刷新游戏运行时间。
(4)DrawKeyThread类:改变键盘透明度,执行渐变处理。
(5)ShuDuSuanFa类:存放数字的二维数组。
3.3.2 游戏的框架简介
游戏框架图如图3.4所示。
图3.4
游戏框架
下面将通过对程序的使用分别详细讲述每个类的作用,步骤如下。
(1)用户运行游戏后,在KLSDActivity中首先会初始化WelcomeView,之后设备
将会跳转到WelcomeView界面。然后通过WelcomeViewDrawThread与
WelcomeViewGoThread来生成欢迎界面及刷新界面。
(2)当用户进入游戏首页之后,通过点击提示的帮助按钮,系统会自动调用
HelpView类来显示帮助界面。同理,当用户点击关于按钮时,系统会通过AboutView
WORD版本.
类显示关于界面。
(3)当用户开始游戏时,系统进入GameVew类,同时GameViewDrawThread会被启
动并刷新界面。
(4)当用户在游戏过程中可以通过点击任意空白位置,系统会自动调用
DrawKeyThread线程来生成数字键盘。
(5)用户在开始游戏时,系统会在自动启动TimeThread线程,来更新时间。
(6)用户在游戏开始前,系统会通过ShuDuSuanFa类生成数独数组,生成的数
组将作为评判用户输入数字是否准确的标准。
WORD版本.
第4章
软件的实现
4.1 欢迎界面的实现
4.1.1 KLSDActivity实现
本设计所有类之间的调度都是通过主类KLSDActivity进行的,KLSDActivity不仅
作为整个程序的入口,而且也管理着整个程序中的类,其中包括WelcomeView
welcomeView、GameView gameView、AboutView aboutView、HelpView helpView以及
Handler myHandler。
上述类都是View的子类,每个类都有着各自的作用,WelcomeView类用于生成欢
迎界面,GameView类生成游戏界面,AboutView类生成引用界面,HelpView类生成帮
助界面,Handler myHandler类用于线程通信并更新控件
[15]
。
除了所管理的每个类,KLSDActivity的每个成员函数也是不可或缺的一个因素,
其中包括:
onCreat():此方法是Activity类的“大门”,调用此方法可以将游戏模式切换
成全屏模式并初始化欢迎界面。
initWelcomeView():此方法用于欢迎界面的切换。
initGameView():切换游戏界面。
initHelpView():初始化帮助界面。
initAboutView():初试化关于界面。
KLSDActivity类之所以能够管理其他类,控制每个类之间的切换以及使设备显示
特定的界面,都是依赖于Handler来实现的。
4.1.2 WelcomeView类的实现
WelcomeView类是程序用于开机动画界面的实现,其流程图如图4.1所示:
WORD版本.
开始
图片载入
文字载入
点击屏幕
是
菜单界面
否
结束
图4.1
WelcomeView类功能流程图
WelcomeView类用于实现欢迎界面。该类是SurfaceView类的子类,利用双缓冲机
制进行绘图。可以更为有效的控制界面的格式、大小以及在屏幕中的显示位置,通过
SurfaceHolder类中的getHolder方法获取
[16]
。在绘制屏幕时必然会使用到画布,而要
想使用画布必须先利用lockCanvas方法锁定画布,然后在画布上进行操作,当所需界
面在画布上绘制完成时,利用unlockCanvasAndPost方法解锁画布,才可以将所绘制
的界面展示在屏幕上。
为了更加方便的管理和使用动画界面所需的帧图片,其ID存放于BitmapID[]数组
中,在后续操作中只需对BitmapID[]数组进行增删操作即可。
作为WelcomeView类的构造器,public WelcomeView(KLSDActivity activity){}
可以初始化图片、动画线程以及刷帧线程,其中界面的绘制依赖于
onDraw()方法,屏幕的监听用onTouchEvent()方法,此方法以用户点击的坐标位置确
定用户点击的是哪里,并将消息发送回Handler类。
4.1.3 WelcomeViewDrawThread类和WelcomeViewGoThread类的实现
程序员为了使游戏更加吸引用户,在进入游戏时做了一段动画欢迎界面,为了实
现这一功能,新建了WelcomeViewDrawThread类,用于刷新动画界面,而动画界面的
生成则是依赖于WelcomeViewGoThread类,这两个类都是Thread类的子类,因而都必
须重写父类的run()方法才能实现所需功能。
WORD版本.
WelcomeViewDrawThread类的run()方法的代码如图4.2所示:
图4.2
WelcomeViewDrawThread类的run()方法
WelcomeViewDrawThread类的run()方法主要控制c的值,当c为空时,通过调用
WelcomeView类里的onDraw()方法,绘制完背景图片后,c值不为空,此时屏幕解锁,
画布被初始化,c值又为空,通过释放和更新屏幕显示的容,达到刷帧效果。
WelcomeViewGoThread类中run()方法代码如图4.3所示:
WORD版本.
图4.3
WelcomeViewGoThread类中run()方法
WelcomeViewGoThread类中的run()方法通过控制drawIndex的值,使drawIndex
实现累加以此判断是否达到数组的最大长度,如果到了,则判断drawIndex的数值是
否为5,如果等于5,则改变drawString的值,如果不等于5,则drawIndex减去10,再
次进入循环,以此达到闪动效果。
4.1.4 HelpView类和AboutView类的实现
游戏帮助和游戏说明的实现是通过HelpView类和AboutView类来实现的。这两个
类通过onDraw()方法来绘制界面且两者十分相似,因而只对其中一个进行分析,这里
选择HelpView类,其代码如图4.4所示:
WORD版本.
图4.4
HelpView类的onDraw()方法
作为帮助界面的构造器,public HelpView(KLSDActivity activity)需要先获得
surfaceHolder和activity,然后加入Callback的实现类并初始化图片资源。
通过onDraw()方法,绘制帮助界面的背景。通过onTouchEvent()方法对键盘进行监听,
系统通过用户点击屏幕的位置调用此方法来判断是否返回并将消息发送给Handler进
行处理。
4.2 游戏界面相关类的实现
游戏界面向用户展示了游戏区,计时区,及功能区,每个区域实现一个功能,其
流程图如图4.5所示:
WORD版本.
开始
生成数独
否
是
是
换题
填数区域
否
提示
否
是
计时提示暂停
是
填数暂停
否
检测
退出
结束
图4.5
游戏界面流程图
4.2.1 GameView的实现
GameView是用户正式进行游戏的界面,GameView在初始化时候完成一系列资源的
读取,利用GameViewDrawThread线程来进行对图片的刷帧操作,TimeThread线程对时
间进行即时更新
[17]
。当用户开始游戏时,系统会调用DrawKeyThread线程完成数字键
盘的绘制。
GameView作为SurfaceView的子类,同样需要实现onDraw()方法,GameView类中
的onDraw()用于游戏界面图片的绘制、时间显示、选题按钮提示以及数字框提示。当
用户点击屏幕时,系统会调用DrawKey()方法来绘制数字键盘并且通过对
surfaceCreated()和surfaceDestroyed()两个方法的调用来完成一系列相关线程的
启动及调用。
4.2.2 TimeThread的实现
TimeThread线程是用于记录用户进行游戏的时间长短,其代码如图4.6所示:
WORD版本.
图4.6
TimeThread线程的代码
TimeThread类相对而言要简单得多,系统只需要利用每秒钟更改
一下GameView的时间就可以了。作为时间线程的构造器public TimeThread(GameView
gameView)必须先引用GameView类,然后复写其中的run()方法,即可实现时间的实时
跟新。
4.3 数独算法类的实现
数独算法类是用于检测用户填入空白格的数字的正确与否,其流程图如图4.7
所示:
WORD版本.
开始
生成数独
填入数字
符合规则
是
游戏成功
否
结束
图4.7
WelcomeView类功能流程图
4.3.1 数独算法基本逻辑
ShuDuSuanFa类是一个数学计算的类,该类通过一系列的数学算法得到程序所需
要的数独数组,并通过相应的的接口给其他的类来用。
ShuDuSuanFa类的目的通过数学算法得到程序所需的数组。使得用户所填写的数
字满足九宫格的规则。该数学算法的检测规则是在以此使用0-9中的数字与九宫格中
的每一行、每一列以及每一个3×3的小方块进行比较,检测是否每一个数字都只出现
一次,如果满足条件,则再次产生一个数字继续进行对比,直至9个数字全部检测完
毕,如果9个数字检测完都满足条件,则游戏胜利,反之只要有一个数字不满足条件,
则游戏失败。
运用数独算法时,系统运用了回溯法,即先将所有可能解排列,在按照一定的条
件进行索引。针对这一问题,一般有两种解决方式,一是给定一个解,然后依次进行
查找,直到找到为止。二是先求出所有可能解,通过遍历的方式找到所需解。
回朔法是一种搜索方式,这种搜索方式只适用于一些大数量解得问题,在问题的
解空间树中,首先按照深度优先的策略,从根结点出发搜索解空间树
[18]
。当算法搜索
至解空间树的任意一点时,首先判断该结点是否包含问题的解。如果不包含,则跳过
对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深
度优先策略搜索。
WORD版本.
与其他搜索方式不同,回溯法得特点在于不必把问题的每一层的所有可能解都遍
历一遍,只要当前的可能解不满足约束条件就抛弃该解,寻求下一个可能解,而不必
求解其余的下层解。当当前层得所有可能解都不满足约束条件,则回溯到上一层,抛
弃上一层的当前可能解。
从对回朔法的分析可知数独问题的约束条件为:每个空格的数值围为1-9,
每一行数字不能重复,每一列数字不能重复,每一个3×3的格子数字不能重复。
由此可知,回溯法通过约束条件的筛选,排除掉所有不可能的解,最终获得问题的一
个或者全部解。
4.3.2 检测填充结果
根据数独游戏的规则,用户在填满全部的空白空格后,要使每一行、每一列以及
每一个3×3的小格子中的数字都只能出现一次,以此为基础来判定用户所填写的数字
是否满足游戏规则。
(1)列检测
首先调用checkLine()方法对每一列中数字进行比对,看是否有重复数字,通过
遍历0-9中的数字与每一列进行对比,如果有重复数字则跳转到游戏失败界面,反之
进入游戏胜利界面。其代码如图4.8所示:
图4.8
列检测代码
(2)行检测
与每一列数据的检测一样,对每一行的数据也需要检测,通过调用checkRow()
的方法行数据进行检测,其代码如图4.9所示:
WORD版本.
图4.9
行检测代码
(3)小九宫格检测
在检测了每行每列之后,程序仍需对每个3×3的九宫格进行检测,其原理与行列
检测一样,不同的是需要考虑小九宫格每个数字的位置,程序通过Row和Col来指定
九宫格中每一个数字的位置,Row和Col的围是0-2。其检测代码如图4.10所示:
图4.10
小九宫格监测代码
4.4 游戏的测试和运行
4.4.1 游戏测试概述
每一款游戏APP在制作完成之后,不可能立马就投入市场,而是需要经过一系列
的检测之后确保没有问题才会投放市场,为了检测本程序有无缺陷,我们需要使用真
WORD版本.
实的移动设备对其进行检测,找出程序中的缺陷并加以解决,完善产品的功能。考虑
到游戏的一些特性,其监测主要包含两个部分:
(1)传统的软件测试
在程序开发过程中程序员所做的监测,只能在确保程序在一些细节上没有问题,
各个模块可以正常使用,但作为一个整体而言,并不能测试出程序存在哪些问题。为
了保证程序的正常运行,还需要对程序进行整体的测试,这一阶段的测试主要分为两
个方面,一是黑盒测试,即将整个程序作为一个整体,不用考虑其他因素的影响,只
需对程序的输入输出数据进行处理即可,这也是一种高端测试。二是白盒测试,与黑
盒测试相反,白盒测试需要考虑各方面的细节,对程序的所有分支都需要进行测试,
工作量大,属于低端测试。测试人员在对程序进行测试时往往是将两者结合起来使用,
这样可以更为有效的完善程序。
(2)对游戏性能的测试
用户之所以喜爱一个游戏,很大程度上是因为游戏是一种对现实世界的模拟,用
户在现实世界中所受的压力,可以在游戏中得到释放,因而每一款游戏在包含游戏独
有的特点的同时,还包含了一部分人类社会的特性。考虑到这一因素,对于游戏的测
试免不了需要考虑游戏情节的测试、游戏文化的测试以及游戏世界的平衡测试。
目前在游戏开发完成后,对游戏性能的测试主要分为三种途径:一是通过游戏公
司部人员对程序进行测试,因为他们都是一些职业玩家,能够更好认识游戏,从而完
善游戏的功能;二是通过对外界用户的测试来找出游戏的不足,进而加以改进;三是
通过用户的反响来对游戏进行改进。
4.4.2 测试环境
程序的测试环境主要包含两种,一是通过虚拟机AVD的测试,二是利用真机进行
测试,测试时,只需将Android系统下的设备连接电脑,在选择运行模拟器是选择真
机运行即可将程序安装在移动设备上,点击设备上的程序图标即可运行该程序。
4.4.3 游戏运行结果
利用真机运行该程序时,首先需要下载本程序的apk文件至移动设备上,然后找
到该文件并完成安装,之后在设备的主界面里就可以找到APP的图标,如图4.11(a)
所示:
WORD版本.
(a)
图4.1
最终效果图
(b)
点击APP的图标,则进入游戏的欢迎动画界面,如图4.11(b)所示。
(c)
(d)
图4.12
最终效果图
点击屏幕任意位置,进入主菜单界面,如图4.12(c)所示
点击关于游戏按键,即可进入游戏说明界面。如图4.12(d)所示。
点击右下角的退出按钮退出游戏说明界面后,在主界面单击帮助游戏按钮,即可
进入游戏帮助界面,查看数独游戏的玩法,如图4.13(e)所示。
WORD版本.
(e)
(f)
图4.13
最终效果图
在主界面单击开始游戏按钮即可进入游戏界面,如图4.13(f)所示。
点击屏幕任意空白处,弹出数字键盘,如图4.14(g)所示。
点击暂停按钮时,进入暂停状态,如图4.14(h)所示。
点击切换按钮更换题目。
点击放弃按钮弹出确认对话框,根据用户选择继续操作,如图4.14(i)所示。
点击提示按钮,系统自动填写正确答案,如图4.14(j)所示。
当用户填完空格时,系统自动进行判断并跳转到相应界面。
WORD版本.
(g
)
(h)
(i)
图4.14
最终效果图
(j)
程序经测试及修改后画面流畅,性能稳定,经用户试玩,无非正常游戏状态出现。
WORD版本.
结论
整篇文章首先详细介绍了Android操作系统,Android手机操作系统的架构及应用
程序构成做了详细的论述,并对其生命周期做了分析。之后通过对Android游戏开发
平台的多线程技术以及图形处理技术做出了详细的分析。最后以数独游戏为例,通过
对数独游戏的开发,一步步分析Android系统的构成及其基本的框架,进一步总结
Android作为开发平台的好处。
在对数独游戏开发过程中,大到框架,小到各个模块的组做了详细介绍,针对各
个模块的具体功能的介绍更为详细。在游戏开发过程中所涉及到技术,如各个界面的
实现是通过Handler机制实现的,运行游戏时的欢迎动画界面,数独界面的生成以及
利用SurfaceView双缓冲绘图机制来完成视图界面等。
由于时间及资源等多方面问题,本文最终实现的基于Android平台的单机游戏的
研究还不够,为了进一步改进此游戏,另其更加适用于大众,现做出以下规划:
(1)加强对Android系统的认知和学习,继续深入了解Android平台开发的知识,
提高自己运用能力和对关键技术的掌握。
(2)要加大对Android系统的发展趋势和市场前景的关注,同时也要时刻关注
Android手机及游戏的发展趋势和发展前景。
(3)由于本人对Android系统的了解尚且不够全面,因而只能够完成了游戏的部分
设计和实现,对于数据库的存储,如何添加背景音乐,怎样将游戏加入到网络中实现
玩家排行榜等功能还需要进一步的学习来完善这些功能。
WORD版本.
致谢
本课题得以顺利完成,首先要向我的导师鹏老师致以衷心的感谢!在论文完成期
间,鹏老师一直对我孜孜教诲、严格要求,本文从选题、撰写、修改到定稿,鹏老师
都给予了精心指导和帮助。
这四年来,同学们在工作和学习生活中给予了我很大的帮助,从他们身上我不仅
学到了很多的知识和技能,还学会了很多为人处事的道理,在这里我向他们表示感谢。
还要感谢自动化专业的所有同学,和他们在一起愉快的相处了四年,在各方面他们都
给予了我帮助。还要深深感谢工学院电气与电子工程系的各位老师在生活上的关心和
学业上的帮助。
感谢我的家人和我的朋友在学习和生活上给予我多方面的关心,他们的鼓励与支
持,永远是我不断前进的动力。
最后衷心的感谢在百忙之中评审本论文并提出宝贵意见的各位专家和教授。
WORD版本.
参考文献
[1] 白.Java Web整合开发完全自学手册[M].:机械工业,2009.
[2] 洪成.Tomcat与Java Web开发技术详解[M].电子工业,2012.
[3] 斌.Java Web整合开发[M].:电子工业,2014.
[4] 王克宏.Java技术教程(基础篇)[M].:清华大学,2006.
[5] 孝祥.Java就业培训教程[M].:清华大学,2007.
[6] 余志龙.Google Android SDK开发例大全[M].:人民邮电,2009.
[7] 丰盛.android应用开发揭秘[M].:机械工业,2010.
[8] 郭宏志.Android应用开发详解[M].:电子工业,2013.
[9] 宁等.Android/iPhone开发完全讲义[M].:水利水电,2012.
[10] 苏亚光.Android应用案例开发大全[M].:人民邮电,2011.
[11] 兴华.Java开发实战经典(名师讲坛)[M].:清华大学,2009.
[12] 索依娜.Android核心技术与实例详解[M].:电子工业,2010.
[13] 海藩.软件工程导论[M].:清华大学,2013.
[14] 丹丹.Java从入门到精通[M].第二版.:清华大学,2010.
[15] 燕.Java2入门与实例教程[M].:中国铁道,2012.
[16] 苑.基于Android移动平台的警务查询系统[D].:大学,2009.
[17] 朱桂英.Android网络开发技术实战详解[M].:电子工业,2012.
[18] Ken ogramming Language[M].Florida:Post&Telecom
Press,2006.
WORD版本.
版权声明:本文标题:基于ANDROID系统的游戏APP设计毕业论文 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1717283906a704203.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论