基于android数独游戏设计Word文档下载推荐.docx
《基于android数独游戏设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于android数独游戏设计Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
KeyWords:
Android;
Sudoku;
Smartphone
第一章绪论
1.1研究背景
1.1.1手机游戏的发展以及特征
手机游戏,是指用户运行在移动终端的应用程序,具有网络连接功能,能够满足用户随时随地进行游行的需求,它需要一定的硬件环境和一定的系统环境作为其运行的基础。
手机游戏吸引用户最大的特点就是其便利性,由于其是移动终端,所以用户可以随时随地进行游戏。
正是因为其便利性,手机游戏市场有了很大的发展。
在美国,手机游戏作为美国手机用户最喜欢的移动应用之一,在iPhone和Android等智能终端推出后发展迅速。
手机游戏常见的特征可以总结如下:
1.庞大的潜在用户群:
全球在使用的移动电话已经超过10亿部,而且这个数字每天都在不断增加。
在除美国之外的各个发达国家,手机用户都比计算机用户多。
手机游戏潜在的市场比其他任何平台,比如PlayStation和GameBoy都要大。
2.便携性与移动性:
在控制台游戏时代,GameBoy热销的一个原因就是便携性——人们可以随时随地沉浸在自己喜欢的游戏中,还可以随时随地抢购自己喜欢的装备或宠物。
和游戏控制台或者PC相比,手机虽然可能不是一个理想的游戏设备,但毕竟人们总是随时随身携带,这样手机游戏很可能成为人们消遣时间的首选。
手机便携性、移动性的特征更能满足用户随时随地玩游戏的需求,用户利用排队、等车的时间进行游戏,手机游戏碎片化的特性凸显。
调查显示,29.8%的用户在用手机玩游戏以后电脑端玩游戏的时间减少,手机游戏已经开始抢夺电脑游戏时间。
22.4%的用户手机游戏时间越来越长,仅有10%的用户时间变短,手机游戏已逐渐成为一种普遍的娱乐方式。
3.支持网络:
因为手机是网络设备,在一定限制因素下可以实现多人在线游戏。
随着移动网络的发展,移动游戏也越来越多的被大家接受,对于之前长期通知市场的掌机来说造成了不少的冲击。
市场研究公司IDC和AppAnnie报告显示2013年第一季度iOS和Android平台游戏业务营收是掌机的3倍。
1.1.2数独游戏背景
数独的前身为“九宫格”,最早起源于中国。
但当时的算法比现在的更为复杂,要求纵向、横向、斜向上的三个数字之和等于15,而不是数字不能重复。
儒家典籍《易经》中的“九宫图”也是来源于此。
到了18世纪末,瑞士数学家莱昂哈德·
欧文又发明了一种叫做“拉丁方块”的游戏,之后不久,美国的一家数字逻辑游戏杂志开始刊登这类游戏,使此类游戏得到良好发展,之后又在日本得到了广泛的传播。
2004年,第一个“数独”游戏被刊登上了英国《泰晤士报》的封面,此时开始数独游戏才真正为世界所知晓。
数独游戏的规则很简单,只需要在空格处填写1~9的数字,并保证每个数字在每个九宫格内只出现一次,而一般的游戏过程是系统随机生成一个棋局,然后玩家需要在空白处填上相应的数字使其满足游戏规则。
由于此类游戏操作简单,不需要特定的语言基础,也不需要进行数字运算且可玩性高、锻炼思维、开发大脑,所以很快风靡全球。
1.2Android手机游戏的市场价值
Android是Google开发的基于Linux平台的开源手机操作系统。
它包括操作系统、用户界面和应用程序——移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍[2]。
Google与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和T-Mobile在内的30多家技术和无线应用的领军企业组成。
Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
Android平台上的游戏相比应用软件,不需要进行严格的市场细分,不需要针对目标用户量身定制。
这是因为游戏玩家的核心需求是统一的,那就是:
娱乐与打发时间(乃至更高层面的竞技需求和群体认同需求),这种需求附着于特定的社会发展阶段,不受地域的限制,甚至于能够穿透文化壁垒。
因此,绝大多数种类的游戏都具备传染性与普适性,每一个售出的游戏都将会点燃周围潜在玩家的激情,最终吞噬整个需求市场。
由此可知,几乎每一个Android手机用户都是游戏的需求者,都是潜在的顾客,现今的1000多万Android用户不过是冰山一角,随着Android手机市场进一步壮大,游戏的市场容量将具备更大的增长空间[3]。
1.3本文主要工作及章节结构
整篇论文共分为六个部分,其主要内容安排如下:
第一章引言。
介绍论文的研究背景、目的和意义。
包括课题的背景资料简介、国内外研究现状和发展趋势、深入地介绍了课题研究的价值。
第二章Android平台概述。
这部分主要是介绍了智能手机系统现状、Android的功能特征、Android系统的特点以及Android的体系结构。
第三章数独游戏的设计。
对游戏相关策划,功能以及架构进行介绍。
第四章数独游戏的实现。
这部分主要介绍了游戏的界面、游戏中的逻辑处理以及该游戏今后的改进和优化。
第五章总结和展望。
对整篇论文加以总结与回顾以及对未来的展望。
第二章Android平台概述
本章将介绍Android这个基于Linux开发平台,首先我们会介绍Android操作系统,然后讲述其特性,接着讲述其系统框架,其次我们会重点介绍其应用程序的构成模块,最后会介绍其生命周期。
2.1Android系统简介
Android是谷歌公司发布的手机操作系统,它是基于Linux平台的开源手机操作系统,谷歌公司将要把其打造为基于移动终端的真正开放的移动软件平台,不仅拥有移动电话所需要的工作软件,,而且在专利权方面能够不侵犯他人权利去推动移动互联网的创新。
谷歌公司为了开发Android,与开放手机联盟进行了合作,手机开放联盟由全球30多家移动开发和手机应用的领先企业组成。
谷歌公司不仅仅和运营商达成了合作关系、而且与设备制造商以及开发商保持长期合作,目的就在于利用其优势建立移动软件平台,其特点是标准化、开放式的。
Android是谷歌公司未来企业战略的一部分,其目的是为了在任何时候任何地点能够提供信息[4]。
2.2Android系统特性
Android系统特性如下所示:
1.应用框架:
Android系统组件,用于开发流程,两个特性:
可重用性和可替代性。
2.Dalvik虚拟机:
在Android系统中,Dalvik虚拟机是一种Java虚拟机,是Google公司自主开发,其代号为Dalvik,占用资源比较小,运行效率比较高。
3.集成浏览器:
引擎WebKit,其特性是开源。
4.优化图形:
强大的自定义二维图形库。
基于OpenGLES1.0标准的3D图形功能,在移动3D开发中有着至关重要的地位。
5.SQLite数据库:
SQLite提供结构化的数据存储。
它是一款轻型免费的且开源的数据库,设计目标是嵌入式的。
它具备占用资源低、需要的内存空间少、处理速度较快,并且还支持事务处理功能等优点。
6.多媒体支持:
支持各种通用的音视频和静态图像格式(MPEG4、MP3、JPG、PNG、GIF、AAC、H.264、AMR)。
7.GSM技术:
(依赖硬件)GlobalSystemforMobileCommunications,全球移动通讯系统,俗称全球通,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。
8.蓝牙,EDGE,3G,andWi-Fi:
(依赖硬件)蓝牙和Wi-Fi都是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。
EDGE(EnhancedDataRateforGSMEvolution),是增强型数据速率GSM演进技术。
9.Camera,GPS,Compass,andAccelerometer:
(依赖硬件)GPS(GlobalPositioningSystem),即全球定位系统。
它是一个由覆盖全球的24颗卫星组成的卫星系统。
Compass是一个开放源代码的Java搜索引擎框架。
10.强大的开发环境:
包括一个设备模拟器,调试工具,内存和性能检测,以及Eclipse
11.IDE的开发插件。
Eclipse集成开发环境。
2.3Android操作系统框架结构
Android作为一个开源的移动设备的平台,其软件层次结构自上而下分为四个层次,分别是:
应用程序(Application)、应用程序框架(ApplicationFramework)、各种库(Libraries)和Android运行环境(RunTime)、Linux内核(LinuxKernel)。
图2.1Google手机操作系统平台-Android的架构模型
2.3.1应用程序
突破传统思维,提供更好的用户体验。
Android将会移植一系列的核心应用,包括E-mail客户端,SMS程序,日历,GPS地图,浏览器,联系人等等。
所有的应用程序都是由Java语言完成的。
应用程序是无界限的,可以在平等条件下创建,还可以轻松地嵌入Web,可以并行运行[5]。
2.3.2应用程序框架
Android应用程序由一个或多个组件组成,Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架。
由于上层的应用程序是以Java构建的,因此本层次提供的首先包含了UI程序中所需要的各种控件:
例如:
Views(视图组件)包括lists(列表),grids(栅格),textboxes(文本框),buttons(按钮)等。
甚至一个嵌入式的Web浏览器。
一个Android的应用程序可以利用应用程序框架中的以下几个部分:
Activity(活动),BroadcastReceiver(广播接收者),Service(服务),ContentProvider(内容提供者)
2.3.3库与运行环境
Android包含一套C/C++库,能被系统中不同的组件使用。
这些功能通过Android应用框架展现给开发人员。
下面列出一些核心库:
(1)SystemClibrary:
从BSD继承来的标准C系统函数库,也是系统中最为底层的库,是专门为基于嵌入式Linux的设备制定的。
(2)MediaFramework:
该库支持多种常用的音频、视频格式的回放和录制,同时支持静态图片文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等。
(3)SurfaceManager:
用于管理不同应用对图形显示子系统和2D和3D图形层的访问。
(4)WebKit:
一个时尚的web浏览器引擎,为Android浏览器和内嵌的webview提供实现。
(5)SGL:
隐藏的2D图形引擎。
(6)3Dlibraries:
基于OpenGLES1.0APIs实现的库,该库可以使用硬件3D加速,或者高度优化的3D软加速。
(7)FreeType:
位图和向量模式的字体绘制。
(8)SQLite:
一个强大的,轻量的关系型数据库引擎,用于所有的应用。
Android运行时Android包含一组核心库,提供了Java语言核心库内的大部分功能。
Android运行环境主要指的是虚拟机技术——Dalvik。
Dalvik虚拟机依赖Linuxkernel来实现一些潜在功能,例如线程和底层内存管理。
Dalvik虚拟机和一般Java虚拟机(JavaVM)不同,它执行的不是Java标准的字节码而是Dalvik可执行格式(.dex)中执行文件,该格式的文件经过优化占用很小的内存。
在执行的过程中,每一个应用程序即一个进程(Linux的一个Process)。
二者最大的区别在于JavaVM是以基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-based)[6]。
显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。
每个Android应用程序都在DalvikVM的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中。
2.3.4内核
Android使用Linux2.6内核来提供系统的核心服务,例如:
安全机制,内存管理,进程管理,网络堆栈。
Android更多的是需要一些与移动设备相关的驱动程序。
其主要的驱动有:
显示驱动(DisplayDriver)、Flash内存驱动(FlashMemoryDriver)、照相机驱动(CameraDriver)、音频驱动(AudioDriver)、Wi-Fi驱动(CameraDriver)、键盘驱动(KeyBoardDriver)、蓝牙驱动(BluetoothDriver)、BinderIPC驱动(Android一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能)[7]。
2.4Android应用程序构成
Android应用程序与其他很多计算机平台的应用程序不同,他们没有唯一的启动入口,一个Android应用程序是由多个不同组件组合而成,组件间通过Intent实现通信。
Android系统的基本组件包括Activity、Service、BroadcastReceiver和ContentProvider等,要实现组件间通信,还需要Intent消息组件。
并不是每个Android应用程序都必须具备这四个组件,很多时候只需要这四种中的某几种就可以了。
除此之外,应用程序的所有组件还都必须在AndroidManifest.xml中声明[8]。
这是一个XML配置文件,这个配置文件用于定义应用程序的组件、组件的功能及必要条件等。
这个配置文件是任何一个Android应用程序所必需的。
2.4.1Activity
Activity可以说是开发人员最常用的组件,同时也属于Android最基本的组成部分之一。
Android程序中,一般一个Activity代表手机屏幕上的一屏。
举例来说,如果将手机比作一个浏览器,那么一个Activity就相当于一个网页。
在Activity中,可以添加多个视图,然后为这些视图添加一些事件处理。
这些视图可以是按钮、文本框、列表等。
可以看到,Activity的概念和网页的概念相当类似。
一般一个Android应用是由多个Activity组成,同时这些Activity相互之间可以进行跳转,例如,按下某个Activity中的Button按钮后,可能会跳转到一个其他的Activity。
不过和网页跳转稍有不同,Activity之间的跳转可以有返回值,例如,在ActivityA跳转到ActivityB后,那么当ActivityB运行结束时,可能会返回给ActivityA一个值。
在多个Activity交流的过程中,这种返回机制是相当实用的。
当用户进入一个新的屏幕时,之前的屏幕会转入暂停状态,并且保存在历史堆栈中。
正是由于历史堆栈的存在,用户可以通过返回操作,返回到之前打开过的所有屏幕。
Android默认的是将应用程序从开始到当前的每一个屏幕都保存到堆栈中,不过与此同时,Android还提供了很方便的机制,让开发人员自定义某个屏幕是否需要保存到历史堆栈。
Activity的跳转实现,必须借助于Intent类。
因此Intent在Android应用中占据的地位是极其重要的。
简单来说,一个Intent就是对一个将要执行的操作请求的抽象描述。
Intent的描述,主要包含有两个数据结构:
动作(action)和动作对应的数据(data)。
动作有很多种,系统中最常见的动作类型有:
MAIN(表明该Activity是应用程序的入口)、VIEW、PICK、EDIT等等;
而动作对应的数据一般以URI的形式表示,例如:
要查看某一个网页,则需要创建Intent,它的动作类型为VIEW,对应的数据应该是该网页的网址。
值得一提的是,有一个类叫IntentFilter,它是Intent的相关类。
如果说Intent是一个有效的操作请求,那么一个IntentFiler则用于描述一个Activity(或者IntentReceiver等)能够接收哪些Intent的请求。
比如系统浏览器的Activity用于查看某一个网页,那么它用于接收Intent的IntentFilter,要定义类型为VIEW的动作并且能够过滤表示一个网页网址的
URI。
通常IntentFilter要被注册在AndroidManifest.xml文件中。
Activity之间的跳转正是通过解析各种Intent来实现的。
例如一个Activity调用startActivity(intent)方法,希望跳转到其他的Activity时,会触发系统的Intent解析过程,在所有安装的应用程序中已注册的IntentFilter中查找,并最终挑选出能够匹配Intent的Activity。
然后这个新的Activity因为接收到Intent的请求而开始运行,完成Activity的跳转。
这种跳转机制提供了两个关键好处:
(1)操作请求被Intent封装起来,方便Activity重复利用。
(2)相互跳转的多个Activity之间实现了松耦合。
只要IntentFilier保持不变,一个ctivity可以随意修改,而不用担心其他Activity找不到它。
2.4.2BroadcastReceiver
应用程序可以通过BroadcastReceiver监听一个外部的事件,并做出响应。
例如,当应用程序需要对电话呼入这个外部事件做出反应时,可以利用BroadcastReceiver进行处理。
再如,当一个后台下载任务成功的事件发生时,需要提示用户下载完成,仍然可以利用BroadcastReceiver来进行处理。
BroadcastReceiver不能生成UI,也就是说对于用户来说是透明的,用户是看不到的。
BroadcastReceiver只能通过NotificationManager来通知用户这些事件发生了。
BroadcastReceiver既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。
注册完成之后,当事件来临的时候,即使程序没有启动,系统依然可以根据定义,自动启动程序。
各种应用也可以通过使用Context.sendBroadcast()将它们自己的IntentBroadcast广播给其他应用程序。
2.4.3Service
Service是一种程序,它可以运行很长时间,但是它却没有用户界面,不可交互,而且不能自己运行。
它需要通过某一个Activity或者其他的Context对象来调用[12]。
最常见的例子,比如说用户正在运行一个音乐播放器的程序,此时如果想浏览网页,那么,在用户导航到Android的浏览器以后,虽然进入了浏览器屏幕,但是歌曲的播放并没有停止,而是在后台继续播放着。
其实播放的动作正是由播放音乐的Service执行着。
当然,如果需要的话,Service也是可以停止。
通过startService(Intentservice)可以启动一个Service,通过Context.bindService()可以绑定一个Service。
2.4.4ContentProvider
对于数据存储,Android与其他的操作系统有一点不太一样