基于Android系统的游戏APP设计.doc_第1页
基于Android系统的游戏APP设计.doc_第2页
基于Android系统的游戏APP设计.doc_第3页
基于Android系统的游戏APP设计.doc_第4页
基于Android系统的游戏APP设计.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业设计(论文本科毕业设计(论文) 题目题目:基于 Android 系统的游戏 APP 设计 院院 系系:工学院电气与电子工程系 专专 业业:自动化 班班 级级:自动化 1202 姓姓 名名:王学松 学学 号号:201202022007 指导教师指导教师:张俊超 杨鹏 烟台南山学院教务处烟台南山学院教务处 二二一六年六月一六年六月 烟台南山学院毕业设计(论文)原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行研 究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何 其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要 贡献的个人和集体,均已在论文中作了明确的说明并表示了谢意。本声 明的法律结果由本人承担。 论文作者签名: 年 月 日 烟台南山学院关于毕业设计(论文)使用授权的说明 本人完全了解烟台南山学院有关保留、使用学士学位论文的规定, 即:学校有权保留、送交论文的复印件,允许论文被查阅,学校可以公 布论文的全部或部分内容,可以采用影印或其他复制手段保存论文。 指导教师签名: 论文作者签名: 年 月 日 年 月 烟台南山学院本科毕业设计(论文)第 页 基于 Android 系统的游戏 APP 设计 摘 要 随着移动互联网的不断发展,我们的生活发生了巨大的改变,智能手机已经成 为我们日常生活所必不可少的一个工具,而在整个手机操作系统中,Android 以一种 开放源码操作系统为基础的系统迅速霸占了手机操作系统市场,因而在 Android 系 统的环境下开发极其重要。Android 系统是完全开放性的系统构架,不仅开发和调试 环境方便快捷,而且对于用户来说,具有极强的扩展性,用户可体验各种丰富的组 件、多媒体功能和各类浏览器。对于从事软件开发工作的人,在 Android 平台下开 发软件非常有吸引力。 Android 是以 Java 为基础的一种语言,本文详细介绍了如何在 Android 平台上 开发编写程序,在分析软件开发技术原理的基础上,在 Android 平台上为用户开发了 一款数独游戏。而在对 Android 系统进行进一步需求分析时,明确了系统的各项性 能要求,而且对于数独游戏的启动动画、主界面设计、屏幕的绘制、时间的控制以 及如何布局等进行了一系列的设计,最终为用户实现了一个操作简单、内容丰富的 益智休闲游戏。 关键词 Android 数独游戏 智能机 烟台南山学院本科毕业设计(论文) 第 I 页 The Design of Game APP Based on Android ABSTRACT With the continuous development of mobile Internet,great changes have taken place in our lives,smartphones have become an indispensable a tool of our daily lives,and in the mobile phone operating system,Android is an open source operating system based system quickly occupied mobile operating system market,thus in the Android system under the environment of development is extremely important.The Android system is completely open system architecture,not only convenient and quick development and debugging environment,and for users,have extremely strong extensibility,the user can experience a rich variety of components,multimedia capabilities,and all kinds of browsers.For people who work in the software development,developing software in the Android platform is very attractive. Android is based on Java language,this paper introduces in detail how to write a program on the Android platform development,on the basis of analyzing the principle of software development technology,in the Android platform for users to develop a sudoku game.And in further to the Android system requirements analysis,clear all the performance requirements of the system,and to start the animation,sudoku main interface design and drawing of the screen,time control and how to layout and so on a series of design,finally realizes a simple operation for the user,content rich puzzle casual games. Key Words Android Sudoku Game Smart phone 烟台南山学院本科毕业设计(论文) 目录 第 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 RunTime5 2.3.4 Linux Kernel.5 2.4 Android 应用程序构成 5 2.4.1 Activity .5 2.4.2 Broadcast Receiver6 2.4.3 Service6 2.4.4 Content Provider6 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 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 烟台南山学院本科毕业设计(论文)第 0 页 第 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 年英国泰晤士报的 封面上刊登了一个数独的游戏。由此数独游戏开始广泛传播。 烟台南山学院本科毕业设计(论文)第 1 页 数独的游戏规则十分简单,用户只需在空格处填上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 的界面、游戏过程中可能会出现 的问题的处理以及游戏的修改和整合做了详细介绍。 总结。对本文所描述的加以总结并表达对未来的期望 。 烟台南山学院本科毕业设计(论文)第 2 页 第 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还可以支持事务处 烟台南山学院本科毕业设计(论文)第 3 页 理。 (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。 烟台南山学院本科毕业设计(论文)第 4 页 2.3.2 Application Framework Android移动设备上的每一个应用程序都是各个组件组成,而Android系统主要 有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-based6的虚拟机,可以最大限度的实现优化,更加实用于移动设备,而 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文件, 就如一个国家的法律一样,清单文件是每个程序都不可或缺的。 烟台南山学院本科毕业设计(论文)第 5 页 2.4.1 Activity 作为四大组件之一的Activity应该是程序员用的最多的一个组件,也是最好用的 的一个组件。在一个程序中,每一个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 应用程序的生命周期 程序的运行是指从开始到结束的过程,每一个程序都有一个生命周期。不同于 烟台南山学院本科毕业设计(论文)第 6 页 其他系统,在Android平台上开发的程序的生命周期与自身无关,不受自身的约束, 而是通过Android系统来决定的,一个程序的生命周期长短是由系统的负载和应用程 序来决定的。Android系统程序进程如图2.2所示。 前台进程可见进程服务进程后台进程空进程 关键优先级高优先级低优先级 图2.2 Android应用程序进程优先级 (1)前台进程:在程序运行过程中前台进程是极其重要的,是与用户进行交互所 必不可少的。前台进程主要有四种情况。正如上文提及到一样,系统在运行过程中 可能涉及多个进程同时运行的情况,这会导致系统内存被极大的占用,此时如果设 备的内存不足,则会导致某些进程无法继续运行,此时需要清除一些长时间未曾使 用的进程以释放内存资源,保证其他进程的正常运行。 (2)可见进程:可见进程顾名思义就是指用户可以看见的页面,但是却不与用户 进行交互,对于程序的运行没有任何影响。此外与该进程相关的其他进程如果正被 可见进程调用,则该相关进程同样被视为可见进程。Android系统正常情况下不会存 在大量可见进程,但有时为了前台进程的正常运行,系统会清除一部分可见进程, 释放内存,为前台进程提供资源。 (3)服务进程:服务进程就是指系统正在运行的程序。服务进程同样是不可见的, 一般情况下,服务进程会一直在后台运行,但有时为了前台进程和可见进程的正常 运行,系统也会结束一些服务进程,释放资源。 (4)后台进程:后台进程是指所有已启动的进程之外的进程,在Android系统的移 动设备中存在大量的后台进程,这些后台进程会占据大多的内存资源,所以优势为 了保障其他进程的正常运行,系统会优先考虑结束后台进程。 (5)空进程:空进程是一个没有任何组件的进程,用户同样看不见,但在释放资 源时,空进程会第一个被清除,空进程与其他进程存储地址不同,空进程储存在系 统内存中,设备被重新启动时,空进程依然会运行。 设备在运行过程中会涉及到释放资源方面的问题,当系统资源紧张的时候,系 统会优先释放优先级低的进程,一个进程的优先级取决于该进程中组件的优先级最 高的那个13。如果一个进程需要获取另一个进程的数据,那么这两个进程会保持相 烟台南山学院本科毕业设计(论文)第 7 页 同的优先级。 烟台南山学院本科毕业设计(论文)第 8 页 第 3 章 系统的整体设计 3.1 数独游戏简介 数独的游戏规则很简单,用户在运行游戏之后,设备的界面上会出现一个99的 表格,总共81个格,其中有些格有数字,用户只需在其他空格处填上1-9的数字,并 且使得每个数字在每行、每列以及每个33的格子中都只有一个。游戏框架如图3.1 所示。 点击图标 开机动画 计时区域 提示暂停 游戏区域 退出游戏 功能区域 开始游戏 菜单界面 帮助游戏关于游戏 退出换题 图3.1 游戏框架图 数独游戏是一款非常容易上手的游戏,下面我简单介绍一下该游戏的运行步骤。 (1)用户在自己的移动设备上点击游戏图标,首先进入眼帘的便是游戏的欢迎 界面,用户可以点击任意位置进入主菜单。 (2)在菜单界面有四个选项,用户可根据提示进行不同的操作。 (3)在进入游戏时,用户可以看见在下方有四个按钮以及一个计时区,用户可 以查看游戏运行时间,也可以通过点击按键进入不同的操作。 (4)当用户将设备界面上所有的空格全部填满时,系统会自动进行比对,如果 全部正确,则会跳转到胜利的界面,反之,弹出游戏失败。 烟台南山学院本科毕业设计(论文)第 9 页 (5)不管是胜利还是失败,用户都可以点击任意位置返回欢迎界面。 (6)在主界面点击退出游戏即可结束游戏。 3.2 游戏策划 3.2.1 欢迎界面的策划 用户在运行游戏后,首先进入的是开机动画界面,这一功能的实现主要是利用 图片的刷帧效果。用户在开机动画界面任意点击即可进入游戏的主菜单界面,根据 提示点击相应位置即可实现相应的功能。如图3.2所示。 图3.2 菜单界面 这里选取480320的手机屏幕分辨率,当y位于(135 180)时,程序开始游戏; 当y位于(180 230)时,程序会进入游戏介绍界面;当y位于(230 280)时,程序会 跳转到游戏帮助界面;当y位于(280 330)时,程序直接退出。 3.2.2 游戏界面的策划 当用户进入游戏时,在游戏界面下方会有四个功能键以及一个计时区。如图3.3 所示。 游戏区 计时区 暂停 提示 换题 退出 图3.3 游戏主界面 游戏主界面分为三个区域,游戏区域是用户需要操作的区域,计时区是用于提 烟台南山学院本科毕业设计(论文)第 10 页 示用户游戏进行了多久,四个按钮可以让用户实现相应操作。 3.2.3 相关资源 程序自身并没有音乐及图片等资源文件,所需资源都需要程序员自行添加,程 序所需资源如表3.1所示。 表3.1 所用图片资源 图片名像素用途图片名像素用途 a1-a9.png2121输入数字key_background.png100100数字键盘 b1-b9.png2121默认数字change2.png5030按下换题 icon.png15080游戏图标change1.png5030未按下换题 fail.png15080游戏失败select.png2424选中单元格 win.png15080恭喜过关drop1.png5030未按下放弃 go_on.png15080暂停中drop2.png5030按下放弃 time0.png2121实践中的 0help1.png5030未按下提示 help2.png5030按下提示stop1.png5030未按下暂停 stop2.png5030按下暂停background.jpg320480背景 heart.png2525提示图标small_background.png100100背景方框 time.png3131时间冒号about.jpg320480关于背景 exit.png20086退出提示help.jpg320480帮助背景 menu.jpg320480菜单单元w1-w30.gif320244欢迎动画帧 在Android操作系统中,非代码类的文件存放于res文件夹下,图片等资源则存放 于drawable文件夹下。 3.3 游戏的架构 3.3.1 各类的介绍 1共有类 KLSDActivity类继承父类Activity并重写里面的方法,是整个程序的核心和入口, 通过与其他类的交互获取消息,并通过对收到的消息的处理跳转到其他界面14。这 是整个程序唯一的公共类。 2.欢迎界面相关类 (1)WelcomeView类:游戏欢迎界面类,即用户运行游戏所展现的界面。 烟台南山学院本科毕业设计(论文)第 11 页 (2)WelcomeViewDrawThread类:该类是欢迎视频界面的刷帧线程。 (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)当用户进入游戏首页之后,通过点击提示的帮助按钮,系统会自动调用 烟台南山学院本科毕业设计(论文)第 12 页 HelpView类来显示帮助界面。同理,当用户点击关于按钮时,系统会通过 AboutView类显示关于界面。 (3)当用户开始游戏时,系统进入GameVew类,同时GameViewDrawThread会 被启动并刷新界面。 (4)当用户在游戏过程中可以通过点击任意空白位置,系统会自动调用 DrawKeyThread线程来生成数字键盘。 (5)用户在开始游戏时,系统会在自动启动TimeThread线程,来更新时间。 (6)用户在游戏开始前,系统会通过 ShuDuSuanFa 类生成数独数组,生成的 数组将作为评判用户输入数字是否准确的标准。 烟台南山学院本科毕业设计(论文)第 13 页 第 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所示: 烟台南山学院本科毕业设计(论文)第 14 页 开始 图片载入 文字载入 点击屏幕 菜单界面 结束 是 否 图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()方法才能实现所需功能。 烟台南山学院本科毕业设计(论文)第 15 页 WelcomeViewDrawThread类的run()方法的代码如图4.2所示: 图4.2 WelcomeViewDrawThread类的run()方法 WelcomeViewDrawThread类的run()方法主要控制c的值,当c为空时,通过调用 WelcomeView类里的onDraw()方法,绘制完背景图片后,c值不为空,此时屏幕解锁, 画布被初始化,c值又为空,通过释放和更新屏幕显示的内容,达到刷帧效果。 WelcomeViewGoThread类中run()方法代码如图4.3所示: 烟台南山学院本科毕业设计(论文)第 16 页 图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所示: 烟台南山学院本科毕业设计(论文)第 17 页 图4.4 HelpView类的onDraw()方法 作为帮助界面的构造器,public HelpView(KLSDActivity activity)需要先获得 surfaceHolder和activity,然后加入Callback的实现类并初始化图片资源。 通过onDraw()方法,绘制帮助界面的背景。通过onTouchEvent()方法对键盘进行监听, 系统通过用户点击屏幕的位置调用此方法来判断是否返回并将消息发送给Handler进 行处理。 4.2 游戏界面相关类的实现 游戏界面向用户展示了游戏区,计时区,及功能区,每个区域实现一个功能, 其流程图如图 4.5 所示: 烟台南山学院本科毕业设计(论文)第 18 页 开始 生成数独 填数区域 换题 提示 提示暂停计时 暂停填数 检测 退出 结束 是 否 是 否 是 否 是 否 图 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所示: 烟台南山学院本科毕业设计(论文)第 19 页 图4.6 TimeThread线程的代码 TimeThread类相对而言要简单得多,系统只需要利用gameView.time每秒钟更改 一下GameView的时间就可以了。作为时间线程的构造器public TimeThread(GameView gameView)必须先引用GameView类,然后复写其中的run()方 法,即可实现时间的实时跟新。 4.3 数独算法类的实现 数独算法类是用于检测用户填入空白格的数字的正确与否,其流程图如图 4.7 所示: 烟台南山学院本科毕业设计(论文)第 20 页 开始 生成数独 填入数字 符合规则 游戏成功 结束 是 否 图 4.7 WelcomeView 类功能流程图 4.3.1 数独算法基本逻辑 ShuDuSuanFa类是一个数学计算的类,该类通过一系列的数学算法得到程序所 需要的数独数组,并通过相应的的接口给其他的类来用。 ShuDuSuanFa类的目的通过数学算法得到程序所需的数组。使得用户所填写的 数字满足九宫格的规则。该数学算法的检测规则是在以此使用0-9中的数字与九宫格 中的每一行、每一列以及每一个33的小方块进行比较,检测是否每一个数字都只出 现一次,如果满足条件,则再次产生一个数字继续进行对比,直至9个数字全部检测 完毕,如果9个数字检测完都满足条件,则游戏胜利,反之只要有一个数字不满足条 件,则游戏失败。 运用数独算法时,系统运用了回溯法,即先将所有可能解排列,在按照一定的 条件进行索引。针对这一问题,一般有两种解决方式,一是给定一个解,然后依次 进行查找,直到找到为止。二是先求出所有可能解,通过遍历的方式找到所需解。 回朔法是一种搜索方式,这种搜索方式只适用于一些大数量解得问题,在问题 的解空间树中,首先按照深度优先的策略,从根结点出发搜索解空间树18。当算法 搜索至解空间树的任意一点时,首先判断该结点是否包含问题的解。如果不包含, 则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树, 继续按深度优先策略搜索。 烟台南山学院本科毕业设计(论文)第 21 页 与其他搜索方式不同,回溯法得特点在于不必把问题的每一层的所有可能解都 遍历一遍,只要当前的可能解不满足约束条件就抛弃该解,寻求下一个可能解,而 不必求解其余的下层解。当当前层得所有可能解都不满足约束条件,则回溯到上一 层,抛弃上一层的当前可能解。 从对回朔法的分析可知数独问题的约束条件为:每个空格的数值范围为 1-9, 每一行数字不能重复,每一列数字不能重复,每一个33的格子数字不能重复。 由此可知,回溯法通过约束条件的筛选,排除掉所有不可能的解,最终获得问题的 一个或者全部解。 4.3.2 检测填充结果 根据数独游戏的规则,用户在填满全部的空白空格后,要使每一行、每一列以 及每一个 33 的小格子中的数字都只能出现一次,以此为基础来判定用户所填写的 数字是否满足游戏规则。 (1)列检测 首先调用 checkLine()方法对每一列中数字进行比对,看是否有重复数字,通过 遍历 0-9 中的数字与每一列进行对比,如果有重复数字则跳转到游戏失败界面,反 之进入游戏胜利界面。其代码如图 4.8 所示: 图4.8 列检测代码 (2)行检测 与每一列数据的检测一样,对每一行的数据也需要检测,通过调用 checkRow() 的方法行数据进行检测,其代码如图 4.9 所示: 烟台南山学院本科毕业设计(论文)第 22 页 图4.9 行检测代码 (3)小九宫格检测 在检测了每行每列之后,程序仍需对每个 33 的九宫格进行检测,其原理与行 列检测一样,不同的是需要考虑小九宫格内每个数字的位置,程序通过 Row 和 Col 来指定九宫格中每一个数字的位置,Row 和 Col 的范围是 0-2。其检测代码如图 4.10 所示: 图4.10 小九宫格监测代码 4.4 游戏的测试和运行 4.4.1 游戏测试概述 每一款游戏 APP 在制作完成之后,不可能立马就投入市场,而是需要经过一系 烟台南山学院本科毕业设计(论文)第 23 页 列的检测之后确保没有问题才会投放市场,为了检测本程序有无缺陷,我们需要使 用真实的移动设备对其进行检测,找出程序中的缺陷并加以解决,完善产品的功能。 考虑到游戏的一些特性,其监测主要包含两个部分: (1)传统的软件测试 在程序开发过程中程序员所做的监测,只能在确保程序在一些细节上没有问题, 各个模块可以正常使用,但作为一个整体而言,并不能测试出程序存在哪些问题。 为了保证程序的正常运行,还需要对程序进行整体的测试,这一阶段的测试主要分 为两个方面,一是黑盒测试,即将整个程序作为一个整体,不用考虑其他因素的影 响,只需对程序的输入输出数据进行处理即可,这也是一种高端测试。二是白盒测 试,与黑盒测试相反,白盒测试需要考虑各方面的细节,对程序的所有分支都需要 进行测试,工作量大,属于低端测试。测试人员在对程序进行测试时往往是将两者 结合起来使用,这样可以更为有效的完善程序。 (2)对游戏性能的测试 用户之所以喜爱一个游戏,很大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论