基于Android的数独游戏程序设计.docx
《基于Android的数独游戏程序设计.docx》由会员分享,可在线阅读,更多相关《基于Android的数独游戏程序设计.docx(30页珍藏版)》请在冰豆网上搜索。
基于Android的数独游戏程序设计
分类号密级—(宋体小五号)
UDC
毕业论文
基于Android数独游戏开发界面设计
学生姓名XXX学号XXXXXXXXXX
指导教师XXXX
系、中心信息工程系
专业XXXXX年级200X级
论文答辩日期2012年5月16日
XXX大学
基于Android数独游戏开发界面设计
完成日期:
指导教师签字:
答辩小组成员签字:
基于android数独游戏开发界面设计
摘要
随着android系统的出现和流行,越来越多的手机用户将目光转向android系统,android系统是一种以Linux为基础的开放源代码的操作系统。
Android的系统架构和其它操作系统一样,采用了分层的架构,android分为四层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
本论文主要阐述了以面向对象的程序开发语言,以eclipse为开发工具,基于GOOGLE的android系统开发一款数独游戏,并侧重于游戏的界面设计,并将程序设计过程中所用到的方法和控件也详加了说明。
数独是一种运用纸、笔进行演算的逻辑游戏。
玩家需要根据9X9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,且不重复。
每一道合格的数独谜题都有且仅有一个唯一答案,推理方法也以此为基础,任何无解或者多解的题目都是不合格的。
本程序实现了重新出题,重新做题,提供题目答案,选关,难度选择和退出等一系列功能。
关键词:
数独;android;android游戏
BasedonAndroidSudokuGamesDevelopmentInterfaceDesign
Abstract
Withtheappearanceandpopularoftheandroidsystem,moreandmoremobilephoneusersturningtotheandroidsystem,theandroidsystemisaLinux-basedopensourceoperatingsystem.
Astheotheroperatingsystems,androidalsousealayeredarchitecture,theandroidisdividedintofourlayersfromthetoptothelower:
theapplicationlayer,applicationframeworklayer,systemlayeroftheruntimeandtheLinuxkernellayer.ThisthesisdescribesthedevelopmentofSudokugameusingobject-orientedprogramminglanguage,andtheeclipseasadevelopmenttool,basedontheGoogleandroidsystemtodevelop.
Sudokuisalogicgamesusingpaper,penstocalculus.Knownfigureson9X9diskplayersneedtoinferthenumberofalltheremainingspaces,andmeeteachrowandeachcolumn.Everygridinclusiveof1-9,anddonotrepeat.EachqualifiedSudokupuzzlehasonlyoneuniqueanswer,anditisalsothebasisoftheinferencemethod,anynosolutionormultiplesolutionsforthesubjectarenotallow.ThisprogramrealizeProgramquestions,re-dothequestions,answer,difficultychoice,exitandsoon.
Keywords:
Sudoku;android;androidgame
1绪论
1.1游戏背景
数独的前身为“九宫格”,最早起源于中国。
但当时的算法比现在的更为复杂,要求纵向、横向、斜向上的三个数字之和等于15,而不是数字不能重复。
儒家典籍《易经》中的“九宫图”也是来源于此。
到了18世纪末,瑞士数学家莱昂哈德·欧文又发明了一种叫做“拉丁方块”的游戏,之后不久,美国的一家数字逻辑游戏杂志开始刊登这类游戏,使此类游戏得到良好发展,之后又在日本得到了广泛的传播。
2004年,第一个“数独”游戏被刊登上了英国《泰晤士报》的封面,此时开始数独游戏才真正为世界所知晓。
由于此类游戏操作简单,不需要特定的语言基础,也不需要进行数字运算且可玩性高、锻炼思维、开发大脑,所以很快风靡全球。
之后由其衍生的游戏也越来越多,例如杀手数独、角线数独等。
1.2游戏简介
1.2.1数独题目的数量
到底有多少个9×9的拉丁方阵呢?
答案是:
5524751496156892842531225600个。
但数独的规则除了每行每列都是1到9的数字外,数独的9个小九宫格也都要是1到9不同的数字,所以应该要减少很多。
直到2005年底,数学家贝米耳(StanleyE.Bammel)与罗思坦(JeromeRothstein)才算出一共有6670903752021072936960种可能的数独谜题。
这两个数学家还写了一个专门的研究报告来庆祝这个结果,由于同一个数独可以变形,如列交换、行交换、数字代码交换(比如1和5交换、2和8、3和4……),重复前面几次之后,就分不清是来自同一个数独了,西澳大利亚大学(TheUniversityofWesternAustralia)教授GordonRoyle博士利用图形理论,研究出辨识数独变形的方法。
将数独谜题利用Nauty程序图形转化,然后做比对,该研究结果见数学家利用群论将宫格内的数字1和数字2全部对换,或者把方阵转90度或翻面等变形方法所产生出来的等价题目扣除后,计算出共有5472730538个本质上不同的数独题目。
这是一个非常庞大的数字,假设全球每天在媒体或者网页上刊登10000个本质上不同的数独谜题,仍需要花上一万多年才能全部列完这50多亿个数独谜题。
1.2.2数独题目的最少组成
好的数独题目要求已知的数字是点对称的,而且谜题要有唯一解甚至已知的数字越少越好。
目前最好的纪录是给定18个数字就可以产生出唯一解的数独谜题。
如果放宽条件到不需要点对称,那么最少可以给定的数字是17个。
感兴趣的读者可参考相关网站的例子。
许多玩家和学者对数独游戏痴迷不已,当然也包括很多计算机程序人员,他们在网上提供了众多免费下载的数独谜题程序。
例如,才华横溢的数学家和组合学家Zeilberger曾写了一个在Maple上跑的程序供大家解出数独谜题可以发现,难度高的题目不一定给出较少的数字,有时候提供的数字很多但仍然难度很高。
反之,提供的数字少也许反而比较容易解题。
也就是说,谜题的难易程度与提供的数字多少不是绝对相关的,谜题的难易程度和设计者的逻辑思维模式有关。
1.3手机游戏特征
(1)易于学习:
既然手机游戏面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习游戏技巧。
消费者不会花几个小时去研究一个3元的手动操作的游戏。
保持游戏的简单是最基本的要求。
(2)可中断性:
多任务处理是手机生活方式的基本特征。
手机用户常常在任务(如等一个电子邮件或者等车)之间有一小段时间。
而游戏、日历管理、通讯与工作数据访问使用的是同一个设备。
所以一个好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏与工作模式之间顺利切换。
(3)基于订阅:
手机游戏的盈利成功取决于他们巨大的使用量。
一开始开发与设计每个游戏都是昂贵的。
如果一个手机游戏开发者要赢利的话,重要的是S氍一个游戏引擎,多个标题,基本的故事情节类似。
基于订阅的游戏是不断产生收入的最好方法。
(4)丰富的社会交互:
不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏。
对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力与随机性。
在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。
(5)好的网络基础设备:
巨额的手机技术研发费用都花在提高设备与网络的可用性与可靠性上面。
因此,手机设备硬件与网络协议与桌面/控制台世界(如全球定位系统(GPS)扩展、条形码扫描仪、与短消息服务(SMS)/多媒体信息服务(MMS)通讯)有着非常大的差别。
好的手机游戏应该利用那些更新的设备特征与网络基础设备的优点。
1.4国内外研究现状
Android是Google开发的基于Linux平台的开源手机操作系统。
它包括操作系统、用户界面和应用程序——移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。
Google与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和T-Mobile在内的30多家技术和无线应用的领军企业组成。
Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
Android作为谷歌企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。
我们发现,全球为数众多的移动电话用户从未使用过任何基于Android的电话。
谷歌的目标是让(移动通讯)不依赖于设备甚至平台。
出于这个目的,Android将补充,而不会替代谷歌长期以来奉行的移动发展战略:
通过与全球各地的手机制造商和运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。
本章小结
本章介绍了数独游戏的起源、数独游戏介绍以及android系统的国内外现状,希望能让大家对数独有更深入的了解。
2技术介绍
2.1Android简介
Android本意指“机器人”,最初由现任Google工程副总裁的安迪·罗宾(AndyRubin)创建于2003年,2005年被Google收购。
2007年11月5日基于Linux内核的软件平台和操作系统由Google正式发布,开启了一个新手机系统辉煌时代的开始。
同时Google联合了34家厂商并成立了“开放手机联盟”,开启了Android发展的最初标准和加盟支持原则。
2008年9月23日,Android初步发布SDK1.0。
第一款机型DreamG1的诞生(Android1.0时代)在2009年10月23日。
不被市场认可--G1和G2逐渐被市场接受(Android1.5时代)HTCHeroG3广受欢迎,成为最受欢迎的机型(Android1.6时代)众多厂商加盟支持,机型越来越多,市场反应和占有率越来越高,同时伴随着Market出现爆发式增长。
然后支持蓝牙2.1、多点触控(Android2.0时代),支持动态桌面(Android2.1时代),支持在线视频Flash播放、网络共享功能,加入了Just-In-Time(JIT)功能较大提升了运行速度(Android2.2时代)内置NFCReader功能、强化游戏性(Android2.3时代),专门针对平板电脑进行优化的Android3.0版(Android进入真正意义上的平板电脑时代)陆续上市。
2.2Android平台架构及特征
2.2.1Android平台特征
1.支持组件的重用与替换。
意味着我们可以把系统中不喜欢的应用程序换掉,安装我们自己喜欢的程序。
2.Dalvik虚拟机专门为移动设备做了优化。
将class文件通过DX工具转换成后缀为.dex的文件来执。
Dalvik虚拟机基于寄存器,比java虚拟机快。
3.内部集成浏览器基于开源的WebKit引擎。
4.优化的2D和3D图形库。
5.SQLite数据库,用于结构话的数据存储。
6.支持各种多媒体格式:
MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF,
7.GSM电话—全球通。
8.蓝牙、Wifi(无线局域网)、EDGE(GSM到3G的过渡)。
9.照相机、GPS、指南针和加速度计。
10.丰富的开发环境包括设备模拟器,调式工具,内存及性能分析表和Eclipse集成开发环境插件。
Google提供了Android开发包SDK,其中包含大量的类库和开发工具。
2.2.2Android平台架构
如图2-1所示的Android操作系统的体系结构图,我们可以看出Android操作系统结构分为4层,由上到下一次是应用程序、应用程序框架、核心类库和Linux内核。
图2-1Android操作系统体系结构
1.应用程序:
Android连同一个核心应用程序抱一起发布,改应用程序包包括E-mail客户端。
SMS短消息程序、日历、地图、浏览器、联系人管理应用程序等。
2.开发者完全可以访问核心应用程序所使用的API框架。
该应用程序框架用来简化组件软件的重用,任何一个应用程序度可以发布它的功能并且任何其他应用程序度可以使用其所发布的功能块。
应用程序都是由一系列的服务和系统组成包括:
一个可扩展的视图(Views)、内容管理器(ContentProviders)、资源管理器(ResourceManager)、通知管理器(NotificationManager)、活动类管理器(ActivityManager)。
3.Android程序库通过Android应用程序框架为开发者提供服务主要核心库包括:
系统C库、媒体库、SufaceManager、LibWebCore、SGL、3Dlibraries、FreeType、SQLite。
4.Android运行库包括一个核心库,提供java编程语言核心库的大多数功能。
5.Linux内核:
Android的核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议、和驱动模型。
2.3Android应用程序组件
如前所述,Android运行在Linux内核上。
Android应用程序是用Java编程语言编写的,它们在一个虚拟机(VM)中运行。
需要注意的是,这个VM并非您想象中的JVM,而是DalvikVirtualMachine,这是一种开源技术。
每个Android应用程序都在DalvikVM的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中,如下图2-2所示。
图2-2.DalvikVM
Android应用程序由一个或多个组件组成:
1.活动(Activity)
具有可视UI的应用程序是用活动实现的。
当用户从主屏幕或应用程序启动器选择一个应用程序时,就会开始一个动作。
2.服务(Service)
服务应该用于任何需要持续较长时间的应用程序,例如网络监视器或更新检查应用程序。
3.内容提供程序(ContentProvider)
可以将内容提供程序看作数据库服务器。
内容提供程序的任务是管理对持久数据的访问,例如SQLite数据库。
如果应用程序非常简单,那么可能不需要创建内容提供程序。
如果要构建一个较大的应用程序,或者构建需要为多个活动或应用程序提供数据的应用程序,那么可以使用内容提供程序实现数据访问。
4.广播接收器(BroadcastReceiver)
Android应用程序可用于处理一个数据元素,或者对一个事件(例如接收文本消息)做出响应。
5.视图(View)
View是Android中图形用户界面的基类,提供了可视化界面展示。
Android的图形界面分为三层:
底层是Activity;Activity上面是Window;Window上面是Views。
View又可以分为View和ViewGroup。
View是基本控件,ViewGroup是布局控件。
6.信使(Intent)
Intent是不同组件之间相互导航的纽带,封装了不同组件导航查找的条件。
Android应用程序是连同一个AndroidManifest.xml文件一起部署到设备的。
AndroidManifest.xml包含必要的配置信息,以便将它适当地安装到设备。
它包括必需的类名和应用程序能够处理的事件类型,以及运行应用程序所需的许可。
例如,如果应用程序需要访问网络—例如为了下载一个文件—那么manifest文件中必须显式地列出该许可。
很多应用程序可能启用了这个特定的许可。
这种声明式安全性有助于减少恶意应用程序损害设备的可能性。
本章小结
本章主要讲述了开发基于Android系统的数独游戏的技术做了一些概述,通过本章的内容我们要了解Android的简介,明白这项新的手机开发平台的操作体系结构,平台架构,平台特性,有哪些应用程序组件。
3系统分析与设计
3.1系统需求分析
需求分析完成的好坏直接影响后续软件开发的质量,它的重要性由此可见一斑。
现实情况往往是,用户不了解计算机的相关知识,而开发人员也对相关业务领域不甚了解。
受思维定式的影响,用户和开发人员往往对同一问题有不同的理解,这样就对系统的功能确定带来了很大的麻烦。
所以,开发人员和用户之间要进行充分和有效的沟通,甚至开发人员要置身于相关的业务领域,以确保开发出来的系统能够真正满足用户的需要。
3.1.1功能需求分析
此次程序设计任务是Android平台下的数独游戏设计,程序将在Android模拟器中运行调试。
此次程序设计用户界面要求较为友好,由于针对的用户为Android智能手机用户,因此程序的操作非常简单容易操作。
游戏进行时通过右边键盘中的数字键输入答案,程序中储存了大量的数独题目,组成了上百个关卡,供用户娱乐,此次程序设计的操作系统要求为Windows2000(SP3以上)或者WindowsXP。
此次程序设计需要在Eclipse环境下开发。
1.重来功能
重来功能主要实现用户输入错误答案想要重新开始本题目。
2.下一关功能
下一关功能主要实现用户完成一关游戏后可以跳至下一关。
3.解题功能
解题功能主要实现用户解答不出此题时候系统提示答案。
4.重出题功能
重出题功能主要实现用户不想解答本题,想要换另一题目。
5.难易程度选择功能
难易程度选择功能主要实现用户根据自己实际水平选择适合自己难度的题目。
6.退出功能
退出功能主要实现退出游戏。
3.1.2安全性需求分析
因该游戏不涉及到用户信息等,因此不需要考虑信息的泄漏。
3.2系统的结构设计
系统结构为进入主界面显示游戏界面,选择菜单分为六项功能:
重来功能、下一关功能、重出题功能、解题功能、难易程度选择功能以及退出功能。
具体系统结构图如图3-1
图3-1系统结构图
本章小结
本章对Android数独游戏做了需求分析,并对系统结构做了简单介绍,可以从下一章中具体看到这些界面及具体的实现方法和部分代码。
4数独游戏界面实现
4.1Android开发环境介绍
Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。
只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的JavaSDK(其中包括JRE:
JavaRuntimeEnvironment)。
此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的AndroidSDK。
同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。
简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。
(1)JavaSDK
(2)Eclipse
(3)AndroidSDK
(4)ADT
4.2Android开发平台搭建步骤
1.首先到http:
//www.eclipse.org/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载JavaEE集成版本,可以为平台的搭建省下不少工作。
接着再去站点下载SDK后安装,下载AndroidSDK1.5后解压。
第一步下载工序就结束了。
2.双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help->InstallNewSoftware->选项卡上的AvailableSoftware,点击右侧的“Add”输入http:
//dl-with”下拉菜单中选择刚才输入的网址。
过一会就会出现一个DeveloperTools选项,勾上以后点击Next以后Eclipse会自动网上查找Android开发工具插件,然后找到AndroidDDMS和AndroidDevelopmentTools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。
3.重启后选择Eclipse菜单中的Windows->Preferences在左侧的Android项目中SDKLocation中填入AndroidSDK解压后的目录,然后点击Apply。
4.在WindowsXP的系统变量中的path变量中添加一个值,该值指向解压后的AndroidSDK目录下的tools文件夹。
4.3程序中各类的简要介绍
4.3.1共有类
主类SudukuActivity类:
该类是通过继承和扩展基类Activity来实现的,是整个应用程序的入口,主要是根据收到的Handler消息的不同切换到不同的界面。
4.3.2欢迎界面相关类
(1)WelcomeView类
该类为欢迎界面的实现类,主要负责欢迎动画界面的绘制,是欢迎界面的前台显示的View,根据后台数据的不同绘制不同效果的动画。
(2)关于界面AboutView类
该类是游戏关于界面的实现类,主要负责游戏关于界面的绘制。
(3)帮助界面HelpView类
该类是游戏帮助界面的实现类,主要负责游戏帮助界面的绘制。
4.3.3游戏界面相关类
(1)GameView类
GameView类是游戏中最主要的一个类游戏规则、游戏模型都包含在此类当中。
同时该类还负责绘制游戏的画面、接受玩家的响应。
(2)GameViewDramThread类
GameViewDramThread类负责定时的刷帧操作。
(3)刷新时间线程TimeThread类
该线程的实现非常简单,只是定时改变