基于android数独游戏设计_毕业设计论文.doc

上传人:good****022 文档编号:116654231 上传时间:2022-07-06 格式:DOC 页数:47 大小:2.59MB
返回 下载 相关 举报
基于android数独游戏设计_毕业设计论文.doc_第1页
第1页 / 共47页
基于android数独游戏设计_毕业设计论文.doc_第2页
第2页 / 共47页
基于android数独游戏设计_毕业设计论文.doc_第3页
第3页 / 共47页
点击查看更多>>
资源描述
毕业设计(论文) 题题 目目: 基于 Android 数独游戏设计 I 基于 Android 数独游戏设计 摘摘 要要 移动互联网时代的到来极大的改变了我们的生活,而 Android 是一种以 Linux 为基 础的开放源码操作系统迅速占领了智能机操作系统,所以在 android 环境下开发显得尤 为必要。Android 是开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各 种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此, 对于软件从业人员来说,Android 平台具有无限的吸引力。 本文就在分析讨论 Android 手机软件开发技术原理的基础上,为用户开发出基于 Android 平台的数独游戏的软件。通过对 Android 系统架构和应用开发进行初步研究, 设计一款数独游戏。在对系统进行详细需求分析的基础上,确定了系统的功能和性能要 求,对游戏的开机动画,菜单界面、屏幕绘制、时间控制、布局算法等进行了设计。 本文详细介绍了在 Android 平台上以 Java 为语言编写游戏的过程,最终实现了一个 界面友好、操作简单的手机益智游戏。 关关键键词词:Android 数独 智能机 II The design of Sudoku game based on Android Abstract Arrival of the mobile Internet era has greatly changed our lives, and Android is a Linux- based system quickly occupied the smartphone operation system, Android development is particularly necessary under the circumstances. Androids biggest feature is its open architecture, not only has a very good development and debugging environment, but also supports a variety of scalable user experience, including rich graphical components, multimedia support, and powerful browser. Therefore, for software professionals, Android platform has unlimited appeal. In this thesis, the analysis and discussion of Android mobile phone software development technology provide users with better platform to the Sudoku based on Android meteorological software. Through the Android system structure and application development for preliminary research, we designed a Sudoku game. In the system based on the analysis of the detailed requirements, we design the game in the game menu interface, the screen rendering, time control and layout algorithm. This thesis describes the whole development process of Android based smart phone game using Google Android SDK. Finally, we have the software with friendly interface and simple operation. Key Words: Android ; Sudoku ; Smartphone III 目 录 摘 要I Abstract.II 第一章 绪论.1 1.1 研究背景1 1.1.1 手机游戏的发展以及特征1 1.1.2 数独游戏背景2 1.2 Android 手机游戏的市场价值.2 1.3 本文主要工作及章节结构.3 第二章 Android 平台概述.4 2.1 Android 系统简介4 2.2 Android 系统特性4 2.3 Android 操作系统框架结构.5 2.3.1 应用程序6 2.3.2 应用程序框架6 2.3.3 库与运行环境7 2.3.4 内核7 2.4 Android 应用程序构成.8 2.4.1Activity8 2.4.2 Broadcast Receiver9 2.4.3 Service10 2.4.4 Content Provider10 2.5 Android 应用程序的生命周期.11 第三章 数独游戏的设计.13 3.1 游戏功能简介13 3.2 游戏策划以及准备工作14 3.3 游戏的架构.16 3.3.1 各类的介绍16 3.3.2 游戏的框架简介18 IV 第四章 基于 Android 平台数独游戏的实现.19 4.1 欢迎界面的设计和实现.19 4.1.1 主类 KLSDActivity 实现19 4.1.2 欢迎界面 WelcomeView 类的实现20 4.1.3 WelcomeViewDrawThread 类和 WelcomeViewGoThread 类的实现21 4.1.4 HelpView 类和 AboutView 类的实现22 4.2 游戏界面相关类的实现.23 4.2.1 游戏界面 GameView 的实现24 4.2.2 时间线程 TimeThread 的实现25 4.3 数独算法类的实现.25 4.3.1 数独算法基本逻辑26 4.3.2 检测填充结果27 4.4 游戏的测试和运行.29 4.4.1 游戏测试概述29 4.4.2 测试环境30 4.4.3 游戏运行结果31 第五章 总结和展望.35 5.1 总结.35 5.2 展望.35 参考文献.36 致 谢.37 南京工业大学本科生毕业设计(论文) 1 第一章 绪论 1.11.1 研究背景研究背景 1.1.1 手机游戏的发展以及特征 手机游戏,是指用户运行在移动终端的应用程序,具有网络连接功能,能 够满足用户随时随地进行游行的需求,它需要一定的硬件环境和一定的系统环 境作为其运行的基础。手机游戏吸引用户最大的特点就是其便利性,由于其是 移动终端,所以用户可以随时随地进行游戏。正是因为其便利性,手机游戏市 场有了很大的发展。在美国,手机游戏作为美国手机用户最喜欢的移动应用之 一,在iPhone和Android等智能终端推出后发展迅速。 手机游戏常见的特征可以总结如下: 1.庞大的潜在用户群:全球在使用的移动电话已经超过 10 亿部,而且这个 数字每天都在不断增加。在除美国之外的各个发达国家,手机用户都比计算机 用户多。手机游戏潜在的市场比其他任何平台,比如 PlayStation 和 GameBoy 都要大。 2.便携性与移动性:在控制台游戏时代,GameBoy 热销的一个原因就是便 携性人们可以随时随地沉浸在自己喜欢的游戏中,还可以随时随地抢购自 己喜欢的装备或宠物。和游戏控制台或者 PC 相比,手机虽然可能不是一个理想 的游戏设备,但毕竟人们总是随时随身携带,这样手机游戏很可能成为人们消 遣时间的首选。手机便携性、移动性的特征更能满足用户随时随地玩游戏的需 求,用户利用排队、等车的时间进行游戏,手机游戏碎片化的特性凸显。调查 显示,29.8%的用户在用手机玩游戏以后电脑端玩游戏的时间减少,手机游戏已 经开始抢夺电脑游戏时间。22.4%的用户手机游戏时间越来越长,仅有 10%的用 户时间变短,手机游戏已逐渐成为一种普遍的娱乐方式。 3.支持网络:因为手机是网络设备,在一定限制因素下可以实现多人在线 游戏。随着移动网络的发展,移动游戏也越来越多的被大家接受,对于之前长 期通知市场的掌机来说造成了不少的冲击。市场研究公司 IDC 和 App Annie 报 第一章 绪论 2 告显示 2013 年第一季度 iOS 和 Android 平台游戏业务营收是掌机的 3 倍。 1.1.2 数独游戏背景 数独的前身为“九宫格” ,最早起源于中国。但当时的算法比现在的更为复 杂,要求纵向、横向、斜向上的三个数字之和等于 15,而不是数字不能重复。 儒家典籍易经中的“九宫图”也是来源于此。 到了 18 世纪末,瑞士数学家莱昂哈德欧文又发明了一种叫做“拉丁方块” 的游戏,之后不久,美国的一家数字逻辑游戏杂志开始刊登这类游戏,使此类 游戏得到良好发展,之后又在日本得到了广泛的传播。2004 年,第一个“数独” 游戏被刊登上了英国泰晤士报的封面,此时开始数独游戏才真正为世界所 知晓。 数独游戏的规则很简单,只需要在空格处填写19的数字,并保证每个数字 在每个九宫格内只出现一次,而一般的游戏过程是系统随机生成一个棋局,然 后玩家需要在空白处填上相应的数字使其满足游戏规则。由于此类游戏操作简 单,不需要特定的语言基础,也不需要进行数字运算且可玩性高、锻炼思维、 开发大脑,所以很快风靡全球。 1.21.2 AndroidAndroid 手机游戏的市场价值手机游戏的市场价值 Android 是 Google 开发的基于 Linux 平台的开源手机操作系统。它包括操 作系统、用户界面和应用程序移动电话工作所需的全部软件,而且不存在 任何以往阻碍移动产业创新的专有权障碍2。Google 与开放手机联盟合作开发 了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。Google 通过与运营商、设备 制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标 准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。 Android平台上的游戏相比应用软件,不需要进行严格的市场细分,不需要 针对目标用户量身定制。这是因为游戏玩家的核心需求是统一的,那就是:娱 乐与打发时间(乃至更高层面的竞技需求和群体认同需求),这种需求附着于特 南京工业大学本科生毕业设计(论文) 3 定的社会发展阶段,不受地域的限制,甚至于能够穿透文化壁垒。因此,绝大 多数种类的游戏都具备传染性与普适性,每一个售出的游戏都将会点燃周围潜 在玩家的激情,最终吞噬整个需求市场。由此可知,几乎每一个Android手机用 户都是游戏的需求者,都是潜在的顾客,现今的1000多万Android用户不过是冰 山一角,随着Android手机市场进一步壮大,游戏的市场容量将具备更大的增长 空间3。 1.31.3 本文主要工作及章节结构本文主要工作及章节结构 整篇论文共分为六个部分,其主要内容安排如下: 第一章 引言。介绍论文的研究背景、目的和意义。包括课题的背景资料 简介、国内外研究现状和发展趋势、深入地介绍了课题研究的价值。 第二章 Android 平台概述。这部分主要是介绍了智能手机系统现状、 Android 的功能特征、Android 系统的特点以及 Android 的体系结构。 第三章 数独游戏的设计。对游戏相关策划,功能以及架构进行介绍。 第四章 数独游戏的实现。这部分主要介绍了游戏的界面、游戏中的逻辑 处理以及该游戏今后的改进和优化。 第五章 总结和展望。对整篇论文加以总结与回顾以及对未来的展望。 第二章 Android 平台概述 4 第二章 Android 平台概述 本章将介绍Android 这个基于Linux开发平台,首先我们会介绍 Android 操作系统,然后讲述其特性,接着讲述其系统框架,其次我们会重点介绍其应 用程序的构成模块,最后会介绍其生命周期。 2.12.1 AndroidAndroid 系统简介系统简介 Android 是谷歌公司发布的手机操作系统,它是基于Linux 平台的开源手 机操作系统,谷歌公司将要把其打造为基于移动终端的真正开放的移动软件平 台,不仅拥有移动电话所需要的工作软件,而且在专利权方面能够不侵犯他 人权利去推动移动互联网的创新。 谷歌公司为了开发Android,与开放手机联盟进行了合作,手机开放联盟由 全球30 多家移动开发和手机应用的领先企业组成。谷歌公司不仅仅和运营商达 成了合作关系、而且与设备制造商以及开发商保持长期合作,目的就在于利用 其优势建立移动软件平台,其特点是标准化、开放式的。Android是谷歌公司未 来企业战略的一部分,其目的是为了在任何时候任何地点能够提供信息 4。 2.22.2 AndroidAndroid 系统特性系统特性 Android系统特性如下所示: 1.应用框架:Android系统组件,用于开发流程,两个特性:可重用性和可 替代性。 2.Dalvik 虚拟机:在Android系统中, Dalvik虚拟机是一种Java 虚拟机, 是Google公司自主开发,其代号为Dalvik,占用资源比较小,运行效率比较高。 3.集成浏览器:引擎 WebKit,其特性是开源。 4.优化图形:强大的自定义二维图形库。基于OpenGL ES 1.0 标准的3D 图 形功能,在移动3D 开发中有着至关重要的地位。 5.SQLite 数据库:SQLite 提供结构化的数据存储。它是一款轻型免费的 南京工业大学本科生毕业设计(论文) 5 且开源的数据库,设计目标是嵌入式的。它具备占用资源低、需要的内存空间 少、处理速度较快,并且还支持事务处理功能等优点。 6.多媒体支持:支持各种通用的音视频和静态图像格式 (MPEG4、MP3、JPG、PNG、GIF、AAC、H.264、AMR)。 7.GSM 技术:(依赖硬件)Global System for Mobile Communications,全 球移动通讯系统,俗称全球通,是第二代移动通信技术,其开发目的是让全球各 地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。 8.蓝牙,EDGE,3G,and Wi-Fi:(依赖硬件)蓝牙和Wi-Fi 都是一种短距离 的无线连接技术,在短距离内可以实现话音和数据的无线传输。EDGE(Enhanced Data Rate for GSM Evolution),是增强型数据速率GSM 演进技术。 9.Camera,GPS,Compass,and Accelerometer:(依赖硬件)GPS(Global Positioning System),即全球定位系统。它是一个由覆盖全球的24 颗卫星组 成的卫星系统。Compass是一个开放源代码的Java 搜索引擎框架。 10.强大的开发环境:包括一个设备模拟器,调试工具,内存和性能检测, 以及Eclipse 11.IDE 的开发插件。Eclipse集成开发环境。 2.32.3 AndroidAndroid 操作系统框架结构操作系统框架结构 Android 作为一个开源的移动设备的平台,其软件层次结构自上而下分为 四个层次,分别是:应用程序(Application)、应用程序框架(Application Framework)、各种库(Libraries)和Android 运行环境(RunTime)、Linux 内核 (Linux Kernel)。 第二章 Android 平台概述 6 图 2.1 Google 手机操作系统平台-Android 的架构模型 2.3.1 应用程序 突破传统思维,提供更好的用户体验。Android 将会移植一系列的核心应 用,包括E-mail 客户端,SMS 程序,日历,GPS 地图,浏览器,联系人等等。 所有的应用程序都是由Java语言完成的。应用程序是无界限的,可以在平 等条件下创建,还可以轻松地嵌入Web,可以并行运行5。 2.3.2 应用程序框架 Android 应用程序由一个或多个组件组成,Android 的应用程序框架为应 用程序层的开发者提供APIs,它实际上是一个应用程序的框架。由于上层的应 用程序是以Java 构建的,因此本层次提供的首先包含了UI 程序中所需要的各 种控件: 例如:Views(视图组件)包括lists(列表),grids(栅格),text boxes(文 本框),buttons(按钮)等。甚至一个嵌入式的Web 浏览器。 一个 Android 的应用程序可以利用应用程序框架中的以下几个部分: Activity(活动),Broadcast Receiver(广播接收者),Service(服务), Content Provider(内容提供者) 南京工业大学本科生毕业设计(论文) 7 2.3.3 库与运行环境 Android 包含一套C/C+库,能被系统中不同的组件使用。这些功能通过 Android应用框架展现给开发人员。下面列出一些核心库: (1)System C library:从BSD 继承来的标准C 系统函数库,也是系统中最 为底层的库,是专门为基于嵌入式Linux 的设备制定的。 (2)Media Framework:该库支持多种常用的音频、视频格式的回放和录制, 同时支持静态图片文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG 和PNG 等。 (3)Surface Manager:用于管理不同应用对图形显示子系统和2D 和3D 图 形层的访问。 (4)WebKit:一个时尚的web 浏览器引擎,为Android 浏览器和内嵌的web view 提供实现。 (5)SGL:隐藏的2D 图形引擎。 (6)3D libraries:基于OpenGL ES 1.0 APIs 实现的库,该库可以使用硬 件3D 加速,或者高度优化的3D 软加速。 (7)FreeType:位图和向量模式的字体绘制。 (8)SQLite:一个强大的,轻量的关系型数据库引擎,用于所有的应用。 Android 运行时Android 包含一组核心库,提供了Java 语言核心库内的大 部分功能。Android运行环境主要指的是虚拟机技术Dalvik。Dalvik虚拟机 依赖Linux kernel来实现一些潜在功能,例如线程和底层内存管理。Dalvik虚 拟机和一般Java虚拟机(JavaVM)不同,它执行的不是Java标准的字节码而是 Dalvik可执行格式(.dex)中执行文件,该格式的文件经过优化占用很小的内存。 在执行的过程中,每一个应用程序即一个进程(Linux 的一个Process) 。二者 最大的区别在于Java VM 是以基于栈的虚拟机(Stack-based),而Dalvik是基于 寄存器的虚拟机(Register-based)6。显然,后者最大的好处在于可以根据硬 件实现更大的优化,这更适合移动设备的特点。每个Android应用程序都在 Dalvik VM的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中。 第二章 Android 平台概述 8 2.3.4 内核 Android使用Linux2.6 内核来提供系统的核心服务,例如:安全机制,内 存管理,进程管理,网络堆栈。Android更多的是需要一些与移动设备相关的驱 动程序。其主要的驱动有:显示驱动(Display Driver)、Flash内存驱动(Flash Memory Driver)、照相机驱动(Camera Driver)、音频驱动(Audio Driver)、 Wi-Fi驱动(Camera Driver)、键盘驱动(KeyBoard Driver)、蓝牙驱动 (Bluetooth Driver)、Binder IPC驱动(Android一个特殊的驱动程序,具有单 独的设备节点,提供进程间通讯的功能)7。 2.42.4 AndroidAndroid 应用程序构成应用程序构成 Android应用程序与其他很多计算机平台的应用程序不同,他们没有唯一的 启动入口,一个Android应用程序是由多个不同组件组合而成,组件间通过 Intent实现通信。Android系统的基本组件包括Activity、Service、Broadcast Receiver和Content Provider等,要实现组件间通信,还需要Intent消息组件。 并不是每个Android应用程序都必须具备这四个组件,很多时候只需要这四种中 的某几种就可以了。除此之外,应用程序的所有组件还都必须在 AndroidManifest.xml中声明8。这是一个XML配置文件,这个配置文件用于定 义应用程序的组件、组件的功能及必要条件等。这个配置文件是任何一个 Android应用程序所必需的。 2.4.1 Activity Activity 可以说是开发人员最常用的组件,同时也属于Android 最基本的 组成部分之一。Android 程序中,一般一个Activity 代表手机屏幕上的一屏。 举例来说,如果将手机比作一个浏览器,那么一个Activity 就相当于一个网页。 在Activity 中,可以添加多个视图,然后为这些视图添加一些事件处理。这些 视图可以是按钮、文本框、列表等。可以看到,Activity 的概念和网页的概念 相当类似。一般一个Android 应用是由多个Activity 组成,同时这些Activity 南京工业大学本科生毕业设计(论文) 9 相互之间可以进行跳转,例如,按下某个Activity 中的Button 按钮后,可能 会跳转到一个其他的Activity。不过和网页跳转稍有不同,Activity之间的跳 转可以有返回值,例如,在Activity A 跳转到Activity B 后,那么当 Activity B运行结束时,可能会返回给Activity A 一个值。在多个Activity 交流的过程中,这种返回机制是相当实用的。当用户进入一个新的屏幕时,之 前的屏幕会转入暂停状态,并且保存在历史堆栈中。正是由于历史堆栈的存在, 用户可以通过返回操作,返回到之前打开过的所有屏幕。Android默认的是将应 用程序从开始到当前的每一个屏幕都保存到堆栈中,不过与此同时,Android还 提供了很方便的机制,让开发人员自定义某个屏幕是否需要保存到历史堆栈。 Activity 的跳转实现,必须借助于Intent 类。因此Intent 在Android 应用中 占据的地位是极其重要的。简单来说,一个Intent 就是对一个将要执行的操作 请求的抽象描述。 Intent 的描述,主要包含有两个数据结构:动作(action)和动作对应的数 据(data)。动作有很多种,系统中最常见的动作类型有:MAIN(表明该Activity 是应用程序的入口)、VIEW、PICK、EDIT 等等;而动作对应的数据一般以URI 的形式表示,例如:要查看某一个网页,则需要创建Intent,它的动作类型为 VIEW,对应的数据应该是该网页的网址。值得一提的是,有一个类叫 IntentFilter,它是Intent的相关类。如果说Intent是一个有效的操作请求, 那么一个IntentFiler则用于描述一个Activity(或者Intent Receiver等)能够 接收哪些Intent的请求。比如系统浏览器的Activity用于查看某一个网页,那 么它用于接收Intent的IntentFilter,要定义类型为VIEW的动作并且能够过滤 表示一个网页网址的 URI。通常IntentFilter要被注册在AndroidManifest.xml文件中。 Activity 之间的跳转正是通过解析各种Intent 来实现的。例如一个Activity 调用startActivity(intent)方法,希望跳转到其他的Activity 时,会触发系 统的Intent 解析过程,在所有安装的应用程序中已注册的IntentFilter 中查 找,并最终挑选出能够匹配Intent 的Activity。然后这个新的Activity 因为 接收到Intent 的请求而开始运行,完成Activity 的跳转。这种跳转机制提供 了两个关键好处: 第二章 Android 平台概述 10 (1)操作请求被Intent 封装起来,方便Activity 重复利用。 (2)相互跳转的多个Activity 之间实现了松耦合。只要IntentFilier 保持 不变,一个ctivity 可以随意修改,而不用担心其他Activity 找不到它。 2.4.2 Broadcast Receiver 应用程序可以通过Broadcast Receiver 监听一个外部的事件,并做出响应。 例如,当应用程序需要对电话呼入这个外部事件做出反应时,可以利用 Broadcast Receiver 进行处理。再如,当一个后台下载任务成功的事件发生时, 需要提示用户下载完成,仍然可以利用Broadcast Receiver 来进行处理。 Broadcast Receiver不能生成UI,也就是说对于用户来说是透明的,用户 是看不到的。Broadcast Receiver只能通过NotificationManager来通知用户这 些事件发生了。Broadcast Receiver既可以在AndroidManifest.xml中注册,也 可以在运行时的代码中使用Context.registerReceiver()进行注册。注册完成 之后,当事件来临的时候,即使程序没有启动,系统依然可以根据定义,自动 启动程序。各种应用也可以通过使用Context.sendBroadcast()将它们自己的 Intent Broadcast广播给其他应用程序。 2.4.3 Service Service是一种程序,它可以运行很长时间,但是它却没有用户界面,不可 交互,而且不能自己运行。它需要通过某一个Activity或者其他的Context对象 来调用12。最常见的例子,比如说用户正在运行一个音乐播放器的程序,此时 如果想浏览网页,那么,在用户导航到Android的浏览器以后,虽然进入了浏览 器屏幕,但是歌曲的播放并没有停止,而是在后台继续播放着。其实播放的动 作正是由播放音乐的Service执行着。当然,如果需要的话,Service也是可以 停止。通过startService(Intent service)可以启动一个Service,通过 Context.bindService()可以绑定一个Service。 2.4.4 Content Provider 对于数据存储,Android与其他的操作系统有一点不太一样,即数据在 南京工业大学本科生毕业设计(论文) 11 Android程序中都是私有的,这些数据包括文件类型和数据库类型以及其他类型 的数据。这样系统和应用程序的数据就各自独立起来,以避免受到某些不正常 程序或是病毒的影响。不过这并不代表各应用程序之间就因此而无法进行数据 交换了。当某个应用程序希望与其它的应用共享其数据时,Android提供的 Content Provider就可以发挥作用了。在实现Content Provider的抽象接口以 后,程序便可以将自己的数据暴露出去,其他程序只要有权限,就可以通过这 一套标准而统一的接口,读取或是删除该程序的数据13。 2.52.5 AndroidAndroid 应用程序的生命周期应用程序的生命周期 Android 应用程序一个完整的生命周期是从应用程序的创建到结束的全过 程,与其他系统不同,Android 应用程序的生命周期是不受进程本身控制的, 而是由Android 系统来决定的,Android 系统会根据应用程序对用户的重要性 及当前系统的负载来决定生命周期的长短。Android 系统的各个进程重要程度 如图2.2 所示。 前台进程可见进程服务进程后台进程空进程 关键优先级高优先级低优先级 图 2.2 Android 应用程序进程优先级 (1)前台进程,是Android 系统中最重要的进程,是与用户正在进行交互的 进程。有以下四种情况:Activity 正在与用户进行交互;进程被Activity 调 用,而且这个进程正在与用户进行交互;进程服务正在执行声明中的回调函数, 如onCreate()、onStart()、onDestroy();进程的Broadcast Receiver 在执行 onReceive()函数。Android 系统在多个前台进程同时运行时,可能会出现资源 不足的情况,此时会清除部分前台进程,以保证主要的用户界面能够及时响应。 (2)可见进程,是指部分应用程序界面能够被用户看见,却不在前台与用户 进行交互,不影响界面事件的进程。如果应用程序进程包含一个服务,且这个 服务正被用户可见的Activity 调用,则此进程同样被视为可见进程。Android 进程一般存在少量的可见进程,只有在特殊情况下,Android 系统才会为保证 第二章 Android 平台概述 12 前台进程的资源而清除可见进程。 (3)服务进程,服务进程是指包含已启动服务的进程。该进程没有用户界面 并在后台长期运行。除非Android 系统不能保证前台进程和可见进程所必要的 资源,否则不会强行清除服务进程。 (4)后台进程,后台进程是指不包括任何已经启动的服务,而且没有任何用 户可见的Activity 的进程。Android 系统中一般存在数量较多的后台进程,在 系统资源紧张时系统将会优先清除用户较长时间没有见到的后台进程。 (5)空进程,空进程是不包含任何活跃组件的进程,空进程在系统紧张时会 被首先清除。但为了提高Android 应用程序的启动速度,Android 系统会将空 进程保存在系统内存用,在用户重新启动该程序时,空进程会被重新使用。 当两个应用程序具有相同的优先级时,处于较低优先级且运行时间最长的 进程将会首先被终止。进程的优先级也受到进程间依赖性的影响,如果一个应 用程序依赖于第二个应用程序所提供的服务或者内容提供器,那么第二个应用 程序至少会拥有与它所支持的这个应用程序相同的优先级。进程的优先级取决 于所有组件中优先级最高的部分,进程的优先级会根据其他进程的依赖关系而 变化。 南京工业大学本科生毕业设计(论文) 13 第三章 数独游戏的设计 3.13.1 游戏功能简介游戏功能简介 数独游戏的规则很简单,只需在空格处填入 19 的数字,并保证每个数 字在每个九宫格内只能出现一次,且每个数字在每一行、每一列也只能出现一 次,而一般的游戏过程是系统随机生成一个棋局,然后玩家需要在空白处填上 相应的数字使其满足游戏规则。游戏框架如下图所示: 点击图标 开机动画 计时区域 提示暂停 游戏区域 退出游戏 功能区域 开始游戏 菜单界面 帮助游戏关于游戏 退出换题 图3.1 游戏框架图 该游戏的运行步骤如下。 1.启动游戏后首先进入的便是欢迎界面的动画,在欢迎界面中,“点击屏 幕继续”闪动,达到提示的效果。 2.在游戏界面点击屏幕,便进入菜单界面。 3.在菜单界面单击“关于游戏”菜单可进入“关于”界面,在“关于”界 面中介绍了该游戏的目标平台及开发日期。 4.在菜单界面单击“帮助游戏”菜单可进入“帮助”界面,在“帮助”界 第三章 数独游戏的设计 14 面介绍了游戏的基本规则。 5.在菜单界面单击“开始游戏”菜单可进入游戏界面。 6.当在游戏过程中单击“暂停”按钮时,便进入暂停状态。 7在游戏过程中随时可以通过“换题”按钮来更换题目。 8.当玩家单击“放弃”按钮时,会提示玩家是否真的需要退出游戏,然后 根据玩家的选择进行操作。 9.当玩家单击“提示”按钮时,界面上会出现一个红心表示当前可以提示 玩家输入数字,此时再单击空白处,便会自动填上正确答案。 10.当玩家将界面中所有的空白全部填满数字时,系统会自动判断所填写的 数字正确与否,当有错误时,会出现游戏失败界面;当全部填写正确时,会出 现游戏胜利界面。 11.在胜利或者失败状态时,玩家可以通过点击屏幕任意位置返回欢迎界面。 12.在菜单界面单击“退出游戏”便可退出该游戏。 3.2 游戏策划以及准备工作游戏策划以及准备工作 3.2.1欢迎界面的策划 欢迎界面的主要实现的是开机动画以及菜单选项的功能。在开机动画上准 备实现动态效果,利用图片刷帧进行实现。 在菜单界面实现游戏的功能选择,菜单界面就是一张图片,鼠标点击相应 的区域实现相应的功能。在这里运用到坐标系,如下图所示 南京工业大学本科生毕业设计(论文) 15 图3.2 菜单界面 手机屏幕分辨率是480320,所以横纵坐标如图所示。 当点击的区域坐落于60welcomeView.bitmapsID.length-1) welcomeView.drawIndex = welcomeView.bitmapsID.length-10; if(welcomeView.drawIndex%5 = 0) welcomeView.drawString = !welcomeView.drawString; try Thread.sleep(sleepSpan);/睡眠 catch(Exception e) e.printStackTrace();/打印异常信息 分析该类的run() 方法,控制drawIndex的值,每次循环将欢迎界面的 drawIndex 加1,然后判断是否到达数组的最后,当到达最后时,将其减10,然 后继续进行循环。同时,判断drawIndex是否为5,这样每循环5次改变 drawString的值,从而实现文字的闪动效果。 4.1.4 HelpView 类和 AboutView 类的实现 游戏中关于游戏帮助和游戏说明,我们分别通过HelpView类和AboutView类 的实现。HelpView类和AboutView类都是通过onDraw()方法来绘制界面。由于这 两个类在很大程度上是相似的,所以下面只分析HelpView类,代码如下所示: public HelpView(KLSDActivity activity) super(activity); this.activity = activity;/得到activity的引用 surfaceHolder = this.getHolder();/获得surfaceHolder getHolder().addCallback(this);/添加Callback接口的实现 helpBitmap = BitmapFactory.decodeResource(getResources(), 南京工业大学本科生毕业设计(论文) 23 R.drawable.help); public void onDraw(Canvas canvas) /绘制方法 canvas.drawColor(Color.WHITE);/背景色 canvas.drawBitmap(helpBitmap, 0, 0, null);/绘制图片 public boolean onTouchEvent(MotionEvent event) /键盘监听方法 if(event.getAction() = MotionEvent.ACTION_DOWN)/屏幕被按下 double x = event.getX(); double y = event.getY();/得到坐标 if(x270 return super.onTouchEvent(event); public HelpView(KLSDActivity activity) 为“帮助”界面的构造器,在 构造器中先得到activity 以及surfaceHolder的引用,然后添加Callback 接口 的实现并对图片资源进行初始化。 onDraw()为重写的绘制方法,在该方法中,首先绘制白色背景,然后将 帮助界面的背景图片绘制到指定位置。 onTouchEvent()为重写的键盘监听方法,当玩家点击屏幕时,会调用该 方法来处理玩家的屏幕事件,在“帮助”界面中该方法实现比较简单,只是判 断玩家点击的是否为返回按钮即可。当玩家点击返回按钮时,需要向activity 发送Handler 消息通知控制器切换屏幕。 4.24.2 游戏界面相关类的实现游戏界面相关类的实现 游戏界面实现游戏展示,计时界面展示,以及功能按键。流程图如下图所 示: 第四章 基于 Android 平台数独游戏的实现 24 开始 生成数独 填数区域 换题 提示 提示暂停计时 暂停填数 检测 退出 结束 是 否 是 否 是 否 是 否 图 4.2 游戏界面流程图 4.2.1 游戏界面 GameView 的实现 首先理解下GameView的运行思路,GameView在初始化时候读取相关图片信 息,包括背景图片,数独背景框图片等等,在初始化同时,启动 GameViewDrawThread线程进行刷帧,TimeThread 线程来更新界面中的时间。当 玩家点击背景框空白位置,需要绘制数字键盘时,会启动DrawKeyThread 线程 绘制数字键盘。当玩家点击按钮时候,相关方法会被调用。以上的过程都需要 KLSDActivity的参与管理。 GameView 同样继承自SurfaceView 类,其关键也是实现onDraw()方法。 onDraw()方法分别绘制游戏界面背景图片,数字背景框,选题提示等等按钮, 时间显示区域等。DrawKey()方法实现了数字键盘的绘制,保证在点击空白框时 候有圆盘数字选框出现。通过surfaceCreated()和surfaceDestroyed()两 个方法负责相关线程的启动和调用工作。 南京工业大学本科生毕业设计(论文) 25 4.2.2 时间线程 TimeThread 的实现 TimeThread线程主要用来更新界面中的时间,作为数独游戏玩家计时功能, 代码如下: public class TimeThread extends Thread GameView gameView;/声明GameView的引用 boolean flag=true;/循环标志位 public TimeThread(GameView gameView)/构造器 this.gameView=gameView;/得到GameView的引用 public void run()/重写的run方法 while(flag) gameView.time+;/时间自加 try Thread.sleep(1000);/睡眠一秒种 catch(Exception e)/捕获异常 e.printStackTrace();/打印异常信息 TimeThread 类的实现比较简单,只需每隔一秒钟通过gameView.time自加 更改一下GameView 中表示时间的属性即可。 public TimeThread(GameView gameView) 为时间线程的构造器,在构造器 中先得到GameView的引用。然后重写run()方法,通过时间的自加,实现一秒钟 功能。 4.34.3 数独算法类的实现数独算法类的实现 数独算法类主要实现数独的生成以及填入数字的检测功能,流程图如下: 第四章 基于 Android 平台数独游戏的实现 26 开始 生成数独 填入数字 符合规则 游戏成功 结束 是 否 图 4.3 WelcomeView 类功能流程图 4.3.1 数独算法基本逻辑 本节将对数独算法类ShuDuSuanFa.java 进行解释,该类基本上是数学计算, 通过一定的算法产生所需要的数独数组,通过特定的接口供其他类使用。 该类的目的是创建一个二维数组来表示数独矩阵。使矩阵的每行、每列、 每块都没有重复的数字。算法的简单思路是先随机取出一个09 的数字,然后 检查其所在的行、列、块是否都符合要求。当符合要求时继续填充下一个,而 当不符合要求时,再次随机取出一个没有取出过的数字,再判断。当9 个数字 都取出过后还没有找到符合要求的数字时,进行回退处理,即将最后一个取出 的符合要求的数字进行重新取值,直到所有数字全部填充完毕。 在求解数独时候,运用到回溯法,将所有的解(问题的解空间)按照一定 结构排列,再进行搜索。一般解空间构造成为为树状结构,用深度优先的策略 搜索,一般有两种方式: 1.只需要一个解的话,找到解即停止。 2.需要求出所有解,则需做“树的遍历”找到所有解。 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜 索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。 南京工业大学本科生毕业设计(论文) 27 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间 树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如 果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯; 否则,进入该子树,继续按深度优先策略搜索。 回溯法是一种搜索算法,其基本思路是:在一个问题中,根据题意给出的 边界条件划定出所有可能解的范围(称为可能解) ,根据题意确定出约束条件。 利用程序顺次在所有可能解中搜索时按照深度搜索的方式进行。即在第一层选 定一个满足约束条件的解,然后以该可能解为出发点,搜索第二层的一个可能 解(试探) 。如果搜索到第二层的一个可能解,则继续搜索第三层得一个可能解。 依次类推,直到所有层得可能解都被找到,则得到了该问题的一个完整解。如 果第二层所有的肯可能解都不满足约束条件,则返回第一层,放弃原有的可能 解,使用第一层的下一个可能解(回溯) 。一次类推,寻找第二层的一个可能解。 回溯法相对于其他穷举的特点在于,不必把问题的每一层的所有可能解都 遍历一遍,只要当前的可能解不满足约束条件就抛弃该解,寻求下一个可能解, 而不必求解其余的下层解。当当前层得所有可能解都不满足约束条件,则回溯 到上一层,抛弃上一层的当前可能解。 从以上分析中结合数独问题的规则,得出数独问题的约束条件为: 每一格的数值范围仅限 1-9 每一格内的数字在当前行不允许重复 每一格内的数字在当前列不允许重复 每一格内的数字在当前小宫格内不允许重复 由此,回溯法通过约束条件的筛选,在所有解中除掉不可能的解,从而获 得问题的一个或者全部解。 4.3.2 检测填充结果 根据数独游戏的规则,玩家填充 81 个宫格之后,要满足所有行,所有列 和所有小九宫格内不能出现重复的数字,并以此为条件进行检测。 第四
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 休闲娱乐


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!