基于安卓系统的游戏开发与实现_第1页
基于安卓系统的游戏开发与实现_第2页
基于安卓系统的游戏开发与实现_第3页
基于安卓系统的游戏开发与实现_第4页
基于安卓系统的游戏开发与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

XX大学2014届本科毕业设计(论文)XX大学 毕业设计(论文)院 系: 信息工程学院 专 业: 计算机科学与技术 班 级: XXXX 学生姓名: XX 学 号: XXXXXXX 导师姓名: XXXX 职称: 讲师 起止时间: 2014 年 3月 1 日至 2014年 5月31日27XX大学本科毕业设计(论文)创作诚信承诺书1.本人郑重承诺:所提交的毕业设计(论文),题目 是本人在指导教师指导下独立完成的,没有弄虚作假,没有抄袭、剽窃别人的内容; 2.毕业设计(论文)所使用的相关资料、数据、观点等均真实可靠,文中所有引用的他人观点、材料、数据、图表均已标注说明来源; 3. 毕业设计(论文)中无抄袭、剽窃或不正当引用他人学术观点、思想和学术成果,伪造、篡改数据的情况; 4.本人已被告知并清楚:学校对毕业设计(论文)中的抄袭、剽窃、弄虚作假等违反学术规范的行为将严肃处理,并可能导致毕业设计(论文)成绩不合格,无法正常毕业、取消学士学位资格或注销并追回已发放的毕业证书、学士学位证书等严重后果; 5.若在省教育厅、学校组织的毕业设计(论文)检查、评比中,被发现有抄袭、剽窃、弄虚作假等违反学术规范的行为,本人愿意接受学校按有关规定给予的处理,并承担相应责任。 学生(签名): 日期: 年 月 日目 录1.前言11.1课题背景、目的与意义11.2 国内外的发展现状21.3 论文的主要内容以及章节结构22.Android平台开发概述32.1 Android系统概述32.2 Android系统架构32.3 Android应用程序组件43.系统需求分析73.1 需求分析概述73.2功能模块要求分析83.3运行环境要求分析94、总体设计94.1系统设计94.2游戏模块设计114.3类功能的描述124.4数独游戏所需的开发模式134.5游戏体系框架设计135、系统实现145.1数独游戏流程框架145.2数独算法的实现145.3游戏初始化界面模块165.4 游戏菜单模块206、系统运行与调试226.1游戏测试概述226.2测试环境237、总结与期望26参考文献:27致 谢28基于安卓系统的游戏开发与实现学生:XX(指导老师:XXX)(XX大学信息工程学院)摘要:当今世界,人类越来越离不开智能手机所提供的方便与快捷,它改变了人类传统单一的纸张化通信模式,单一的音频通话模式以及枯燥的娱乐活动。在Android系统诞生之前,智能手机,这个新鲜事物已经大大丰富了人们的业余生活,并得到了广大手机用户的青睐和认同。因此,各大手机厂商瞄准当下机遇,和巨大市场潜能,纷纷研发了各种智能手机操作系统,目的就是在于抢占这个市场的制高点。Android系统因此就是在这个风云际会的历史背景舞台下诞生的。当今手机行业蓬勃发展的快速发展,日益流行的Android系统使得越来越多的手机用户开始转向Android系统,如地图、音乐、新闻等推出的Android应用程序的出现成为安卓开发软件市场的新型客源;开发者可以根据不同阶层不同年龄需求制定出个性化的手机应用游戏,因此深受年轻用户追捧,丰富青少年业余生活。由此可以看出,Android的游戏的发展前景是光明的。关键词:安卓 手机软件 游戏Based on the platform Android game development and designStudent: XX(Faculty Adviser:XXX)Abstract:Todays world, more and more inseparable from human convenience and fast smartphones offer, it has changed the traditional single sheet of human communication mode , single mode and audio calls boring entertainment. Before the birth of the Android system , smart phones, this new thing has been greatly enriched peoples leisure life , Therefore, the major mobile phone manufacturers targeting current opportunities and huge market potential , have developed a variety of smart phone operating system .The rapid development of todays booming mobile phone industry , the increasingly popular Android system makes more and more mobile phone users turning to the Android system , where there maps, music, news and other Android applications launched Android software development market has become a new source ; developers can develop according to the different needs of different age classes of personalized mobile application game, so sought after by young users . It can be seen that it will development prospects are bright.Key words: Android mobile software games1.前言1.1课题背景、目的与意义基于Linux的开源和自由的操作系统Android,它的主要作用是应用于移动设备,比如智能手机以及智能平板电脑,此系统由谷歌公司和开放手机联盟公司主导和开发。在此之前,此款系统尚未有一个统一的中文称呼,而在中国大陆,“安卓”或者“安致”被越来越多的人使用和熟知并接受。Andy Rubin,最初作为手机的主要开发支持Android操作系统,2005年8月由谷歌收购注资。 两年后的2007年,谷歌公司与84家硬件制造商合作,并与软件开发商以及电信运营商共同形成开放手机联盟,联合开发Android系统。与此同时,谷歌通过以Apache开源许可证的授权方式,并同时发布了Android源代码。2008年10月,作为Android第一款智能手机面世,随后,Android系统平台扩展到其他领域,比如电视、平板电脑、游戏机、智能化管理平台等等。2011年第一季度,在独霸全球手机系统市场多年之久的Symbian Android的市场份额撼动其霸主地位,首次位居世界第一的市场份额。根据在2013年第四季度市场报告显示,手机的全球市场份额中Android的平台已经达到了78.1%的占有率 。在2013年9月24日这一天,谷歌开发的Android操作系统迎来了五岁的生日,而如今,采用这一系统的全球智能设备的数量已经达到了十亿台。数独游戏,又称“九宫格”游戏,最早起源地是中国,它是一种中国古代的算术游戏,它通过运用纸和笔,进行一种逻辑演算。玩家在一个9*9的棋盘面上,根据现有已知的数字,推理出剩下的所有空格处得数字,使得每一行,每一列以及每一个3*3的小盘面上的数字均只能含有1-9中所有数字中的一个,而且在这这3*3小盘面中不能出现这九个数字的二次重复使用,所以答案是唯一的。由于这种游戏操作简单,而且可玩性极高,能锻炼人们的思维能力,有助于挖掘大脑潜能,因此而风靡全球。如今,手机行业在21世纪蓬勃发展迅速,随着日益流行的Android系统的出现,越来越多的手机用户开始转向Android系统,它是基于开源的Linux为基础的操作系统,其特有的个性化,实用性和良好的扩展性,受到外界行业的较高评价和追捧支持。而数独游戏,由于其操作简单,无需特定语言的基础,同时也起到了人类大脑思维发展中的作用,正因如此,数独如此迅速风靡全球。在Android平台上运行的游戏深受大家的追捧。现如今,基于Android平台上的的游戏不仅可以运行在智能手机上,我们还可以将其放在平板电脑上运行。1.2 国内外的发展现状(1) 以专业化、大规模化方向发展随着越来越多的平台和日益增加的显示芯片对Android的大力支持,硬件性能将不再成为制约专业游戏的开发的瓶颈。在越来越多的领域里,都有了Android的渗入,比如在PC,XBOX360,PSP等游戏平台上占据了都将迅速渗透进Android以及其他移动平台,这使得游戏发展往更加专业化的发展方向前进。(2) 以网络化方向发展随着各个平台对WIFI网络、无线通信网络、蓝牙网络都有了良好的支持,游戏将是一个更好的创新型和个性化的用户体验。在线网络游戏,多人游戏,与其他玩家联机对战,将进一步加强游戏的附着力水平,并且容易通过道具来控制生成的盈利模式。这将有助于网络的未来进一步升级,加快发展进程。(3) 以时间片化、休闲化方向发展移动设备的便携性使得休闲游戏将会得到快速发展。移动设备可以把分散时间的合理利用是促进游戏可以向时间片化发展,也就是说,一个游戏可以在任何时候开始,而结束是可以在任何时间任何地点,以用户的时间片来运行分散的优势。即使在其他家用电子设备,休闲游戏,也可以为用户带来的以家庭为单位更多的乐趣。1.3 论文的主要内容以及章节结构整篇论文共分为六个部分,主要内容安排如下:第一章 前言。在这一章节里,主要介绍本篇论文的课题背景、包括目的以及意义。这其中包括了课题的背景资料简介、国内外目前的发展现状和未来发展趋势、深入系统地介绍了本次课题研究和编写的价值及意义所在。第二章 Android平台开发概述。这一部分是主要介绍了Android手机的发展历程,以及阐述现状、这其中包括详细介绍了Android的功能、Android系统和架构的独到之处以及Android的体系框架。第三章 系统需求分析,是对数独游戏的前期规划进行在功能,安全性,需求各方面的详细分析与探讨,以便制作出符合用户最好的系统。第四章 数独游戏的总体设计。是对该款数独游戏的相关模块,相关功能的策划以及系统架构的实现进行深入剖析和规划设计。第五章 数独游戏的详细设计(包括程序代码的实现)。这一部分主要是介绍了游戏的界面的绘制、游戏菜单的编写,键盘事件的建立,数独游戏的逻辑处理以及运行调试,检验,找出问题所在,及时解决。第六章 系统调试与运行,这一环节,是针对数独游戏代码实现后进行后期模拟环境检验,在调试过程中检验代码的可靠性,安全性,是否达到预期效果以及实现既定要求。同时在发现问题的过程中,调整思路和改变代码,力求达到最佳运行效果。第七章 总结和展望。对该数独游戏的今后发展进行改进和优化调整,并对整篇课题论文进行深入总结和回顾,并对未来展望。2.Android平台开发概述2.1 Android系统概述Android是由Google谷歌公司研发的一款手机操作系统,它是基于Linux平台的智能手机操作系统,谷歌的目标是将其打造成为基于移动互联网终端的真正开放式的移动终端平台,不但要求可以使用移动手机所需的各类工作软件,同时并在专利方面保证不侵犯他人的权利,以此促进移动互联网的进步和创新。谷歌公司开发的Android,和开放手机的联盟合作是由包括全球30余家手机移动应用开发龙头企业在内得以组成。谷歌公司和运营商不仅达成合作伙伴关系,并保持与设备制造商和开发商长期合作,目的是为了利用其优势互补从而建立成熟的移动软件平台,其最大特点是标准化,开放性的优势。 Android是谷歌的未来业务战略的一部分,其目的是为了能够在任何地点在任何时间提供有效信息 4 。结合相关书籍以及有关文献资料,我们对Android有了个初步的认识,并基本掌握了如何去搭建配置Android的有关环境和编写调试配置是否成功的HelloWorld的测验程序。同时我们需要知道在基于Android平台的一个项目里,要清楚明白哪些文件夹和文件包含相应的作用。下一节,我们将从另一个深层次去分析Android的整体架构:2.2 Android系统架构要想了解Android系统构架的主要组成部分,可以通过下面这张示意图清楚掌握:图1 Android系统架构(来源:android sdk)可以很清楚地看到,Android的系统架构分为五个部分,依次是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。下面将详细介绍这5个部分。2.3 Android应用程序组件现在我们根据组件的高低,依次来剖析各个部分。虽然SDK在这方面已经为我们设想到面面俱到,但是我们还是需要通过自己的深入研究,通过自己的见解,沿着自底向上分析各层架构,才有助于我们进一步了解Android。2.3.1、Linux Kernel(Linux内核)Android基于Linux 2.6提供核心系统服务,包括:内存管理、安全、网络堆栈、进程管理和驱动模型。Linux Kernel同样可以作为抽象层放置在硬件和软件之间,它通过隐藏相关具体硬件细节,与此同时,它也能为上层提供相应的统一服务。Android系统平台是建立在Linux内核之上,在人们狭义观念里,Android系统指的就是Linux内核及以上的各层,但是从运行这个角度来剖析,Android系统是对Linux的完全依赖,如果没有Linux的支撑,Android也就无法生存下去。Android基于Linux的最大价值是在于它强大的可移植性,Linux可以在任何系统中运行,就是因为其可以运行在各式各样的系统芯片构架和硬件中,与此同时,依附于它的Android系统,也得以遗传了它强大的可移植性的重要特性。对于计算机专业的同学来说,学过计算机网络这门专业课之后,我们都会对OSI/RM有所了解,大概了解分层的意义在于:它能使得下层提供服务而为上层提供服务的同时,它也能为上层提供统一的服务,与此同时,屏蔽本层和下层的相关差异,若本层及以下层发生了相应变化,却不会将影响波及到上层。好比Linux是一座桥梁,它让行走在上面的Android得以实现与各级底层硬件连接起来,使得它们无需直接耦合,正因如此,降低了移植的复杂性和高难度。,各层都能提供固定的SAP(Service Access Point),用专业话来说可以是各层各司其职,从而达到高内聚、低耦合。当然本次毕业设计只是做简单的关于数独游戏的应用开发,所以对于Linux Kernel层,我们就不需要进行深入研究。2.3.2、Android Runtime(运行时)Android系统中的运行时(Runtime),目的就是为了实现Java在运行阶段的二次编译提供支持。Android有一个集合,是关于核心库。它能为Java编程语言核心类库提供相关的可用性较高的功能。Java的虚拟机Dalvik和Java的核心类库共同构成了Android 的运行时。基于Android系统的每一个应用程序,在自己的进程中都是根据Dalvik虚拟机实例得以运行。Dalvik虚拟机设计成:多个虚拟机可以在一个设备中有效地运行。 Dalvik虚拟机可以执行的文件格式是。Dex格式。是一种压缩格式,专为Dalvik的设计,非常适合这类高速系统具有有限内存和处理器。 JVM是基于堆栈是一个众多虚拟机中的一个,而Dalvik的虚拟机是基于在寄存器的车道上。事实上,这两种架构各有优缺点,相对一般,将需要更多的指令基于栈的机器,但机器基于寄存器的指令是更大的。 dx是一套Java工具。将java.class转换成 DEX格式。因为索引有时是必要的,以便优化处理,会使文件的大小将会增加至1-4倍,而且会以ODEX结尾。2.3.3、Libraries(核心类库)对于C/C+库的集合,这些是包含在Android里它能为Android系统中的各个组件提供帮助并可以使用。Android应用程序框架(application framework)将这些功能曝光于开发人员,是他们得以了解。下面列出一些核心库: 系统C库这是继承了标准C系统库(libc)的BSD衍生。是作为基于嵌入式Linux系统设备而制定的库 媒体库基于PacketVideo的OpenCORE。该库可以支持目前当今时下常用的许多音频、视频格式的播放和录制,同时也支持包括了静态图像文件,例如:AMR、PG、MPEG4、MP3、AAC、J PNG、H.264 界面管理管理访问不同应用包括了2D和3D图形层的界面访问 LibWebCore这是一种Web浏览器引擎的新型模式,它可以来对Android 浏览器进行驱动,同时可以调用内嵌的web视图。 SGL是一种基本的可隐藏于2D相关图形引擎 3D库这个是基于OpenGL ES 1.0 APIs,目的是在于对该库中的硬件3D进行优化加速,这其中高度化的3D软件光栅加速也包含在内。 FreeType位图和矢量字体的渲染绘制 SQLite是一个强大,轻量级的并且适用于所有应用程序的关系数据库引擎2.3.4、Application Framework(框架层)在Android系统平台中,最重要的核心部分非框架层莫属,Android系统的设计思想也涵盖其中,在此之前,很多平台的打造都是基于Linux内核而建立的。但是Android做到了超越以往任何一款移动平台并因此堪称成功典范。由多个系通服务(System Service)共同所组成的框架层,这其中涵盖了组件管理服务、通话管理服务、服务电源管理服务、窗口信息服务、地理信息等相关服务。通过系统核心进程(System Core Process)将这些服务都是寄宿在其中。当程序运行时,每一个服务都会占据一个独立线程,发送消息以及传输数据是通过进程相互间的通信机制(Inter-Process Communication,IPC)这个桥梁渠道而得以实现。1开发人员将核心应用程序的框架的使用,是基于应用程序的体系结构的简化性,可以避免不必要的重复累赘。通过任何相关的应用程序都能发布它的相关功能,同时可以在其他任何应用程序使用这些功能(但是需要服从框架执行的相关安全限制)。所有的相关应用程序其实是一组服务以及系统,这其中包括: 视图(View)这是一种扩展性的视图集合,具有良好的丰富性。对于构建应用程序来说,必不可少。列表、文本框、网格、按钮都包含在其中,同时还包括了内嵌的网页浏览器 内容的提供者(Content Providers)通过应用程序访问其他相关应用程序(比如备忘录)中的相关数据,同时也能进行数据共享。 资源管理器(Resource Manager)这其中包含了可以访问非代码的资源,比如本地化字符串以及布局文件或者是图形。 通知管理器(NotificationManager)这个管理器,可以在状态栏上以自定义式警告的模式对所有应用程序进行通知功能的自定义显示。 活动管理器(ActivityManager)这是用来对应用程序的生命周期进行有效管理和控制。2.3.5、Applications(应用层)基于java语言来开发的Android的众多应用程序中,对于游戏,对大规模的运算分析和图像处理的需要是必不可少,正因如此,开源C/C+类库因此发挥其强大的作用。通过java语言编写的程序代码,或许会出现一些执行效率过低或者是移植成本过高的问题。所以,开发人员会根据C/C+来作为实现底层模块的基础,同时利用Android提供的交叉编译工具生成的类库将Java Native Interface(JNI)接口与上层Java实现进行交互的方式以此添加到应用中去。与此同时,开发人员将框架层进行规避,直接调用Android系统中的特定类库,由C/C+的一些接口构成的NDK,开发人员可以用它来实现更高效率的特定调用功能的系统。13.系统需求分析3.1 需求分析概述软件开发完成的进度好坏以及该怎么去评判,这就是需求分析的重要关键之所在。现实情况却大相径庭,由于有些用户不了解计算机的相关专业知识,同时开发人员对部分相关业务的不了解,不精通,以及受到固定思维的影响,用户和开发人员往往对某一个相同问题有着不同的理解,这会对系统的相关功能的实现造成很大困扰。因此,开发者和需求用户之间应搭建沟通桥梁,建立有效的沟通渠道,最好将开发者置身于相关业务领域,了解客户真正需求,才能确保开发出的产品达到客户最佳预期效果和实际需要。3.1.1功能需求分析此次数独游戏程序设计一款小游戏,是基于Android平台之下设计并与之实现的,最后将在Android模拟器中其进行调试运行。该游戏简单容易上手而且活跃性强,具有较强的益智性,可以锻炼人们的记忆能力,以及脑力开发,提高人类的数学思维能力和强大的运算能力,同时也有一定的娱乐性,让人愉悦身心的同时,通过益智游戏从而提高大脑的启发和锻炼。尤其对青少年思维,脑力,意志都有很好的锻炼,起到事半功倍的作用。使得智能手机与游戏软件对青少年未来教育有指南针似的帮助和指导性作用。针对Android手机,此款数独游戏在设计上具有以下几种功能:1、重来功能设置重来功能目的在于实现用户输入错误答案,并且因为意外差错无法解开此题而想要重新开始本题目。2、下一关功能设置下一关功能目的在于是实现用户完成一关游戏后可以进入下一关游戏界面。3、解题功能设置解题功能主要实现用户解答不出此题时候系统提示答案。4、重出题功能设置重出题功能主要实现用户因为各方面原因不想解答本题或者实在解不开此题,想要切换到另一题目。5、难易程度选择功能设置难易程度选择功能目的在于实现用户根据自己的实际水平来选择适合自己难度的题目,便于提高用户的兴趣和积极性。这其中分为:简单,中等,困难三个难度。6、退出功能设置退出功能目的在于实现可以退出游戏界面,返回模拟器初始界面。3.1.2安全性需求分析由于此款游戏不涉及用户个人隐私以及任何注册要求,打开软件即可操作使用,不会涉及用户隐私泄漏等问题。用户主要是年轻的手机用户群,玩家只需要在操作手机界面进行点击安装运行就能够进行游戏的操作,能熟练上手,通俗易懂。不涉及任何暴力情节,或者不良信息,对玩家没有任何主观性的安全问题。数独游戏3.2功能模块要求分析退出模块关于模块帮助模块游戏菜单模块游戏主模块图2数独游戏功能模块根据对数独游戏功能的分析和归纳,可以大体分为游戏主模块,游戏菜单模块,帮助模块,关于模块。退出模块。后面将会逐一介绍这几个模块的特点与功能。3.3运行环境要求分析(1) 硬件资源要求装载了Android系统的智能手机。(2) 软件资源要求本机操作系统: Windows XP。需要安装的相关安装包和环境配置版本:jAndroid sdkkJDK:jdk-7u51-windows-i586。leclipse-java-kepler-SR1-win32.zip4、总体设计4.1系统设计数独是通过运用外界工具纸、笔进行演算推理,是一种简单逻辑数字推理游戏。参与的玩家只需要根据99盘面上的已知数字,推理出所有剩余空缺空格的数字,使得其最后结果满足每一行、每一列和每一个粗线宫内的数字均含一到九,而且不能重复。4.1.1游戏的功能简介“九宫格”是数独游戏的前身,它起源于中国,发源于中国,而现如今的数独游戏面盘是个9*9的九个小格子。在运行游戏时候,系统会随机产生一个新的棋局,这总共81个格子中,会有一部分的格子中给明了相应的数字,并以此为条件,进行相应空白处格子的填写。这其中就是需要运用到逻辑运算推理。然后玩家需根据已知条件和规则要在空白空格处填入1到9的数字。并且不得重复出现,只有在满足上述游戏约束条件之后才能视为通过此局游戏。通过上述分析即可如下所示阐明运行步骤:1、 启动游戏后,一开始便是进入第一关卡的游戏。2、当玩家点击“Menu”,即可进入菜单界面,如图所示:图12“Menu”按钮3、当游戏玩家选择“解题”按钮的时候,系统会弹出提示框,提示游戏玩家是否真的要集体,再随后根据玩家的确认选择进行下一步操作,也就是公布正确答案。4、当游戏玩家将游戏界面上的空白格子全部填写完毕的时候,数独系统会自动检验判断所填写的数字是否满足数独游戏不重复的要求,当有错误的时候,游戏界面始终会停止在这一关卡;只有当空白处得数字全部填写正确的时候,才会在游戏界面最顶端提示“通过了”进入下一关卡。如图所示:图13 第一关通过的提示界面5、当游戏玩家无法解出此关卡的数度游戏时候,选择“下一关”,就会进入下一关的游戏。 6、游戏玩家选择“重出题”,会将数度游戏的空白处自动打乱,重新出题目。 7、在菜单界面中单击“退出”即可退出数独游戏界面。4.1.2系统模块的划分三大部分模块的划分,是根据之前的需求分析的要求采用模块化程序设计而得出:用户的功能模块新游戏游戏保存和读取退出图14用户功能模块UI游戏菜单棋盘界面其他UI图15 UI界面数据处理的模块填充数字的验证游戏运算逻辑键盘数字的生成图16系统模块划分如图所示,实线连接的是用户可见的模块,这些模块是用户能通过鼠标就可以操作的基本模块。而UI模块,主要是为了呈现给用户的界面。虚线连接的是用户不可见的模块,也可以称为数据处理模块(内部实现的模块)。4.1.3模块内部关系的说明每一个模块的内部之间的关系都是靠内部的数据来实现互通连接的,下面的流程图以此来介绍每个模块之间的联系。用户按键事件经过修改内部数据数据AI绘图数据的绑定触发图17模块之间的联系在游戏的内核中,包括了所有游戏的有关信息,全部类成员的相关数据,而它的各个模块,是类的方法函数用于相应的按键事件。绘图功能(UI):是为了给游戏玩家呈现出9*9的棋盘界面,显示出游戏的相关信息以及游戏菜单等,这些都需要XMAL来实现。只有游戏玩家点击按键时候,才会触发UI的绘图功能,与此同时,后台的编程代码会处理相应的按键事件。AI功能的实现:主要负责游戏内部的数据处理,是数独游戏的核心,几乎所有模块功能都与此有着密不可分的联系,这其中还包括了数独填充以及数独逻辑,数独验证等。其实,AI模块是由很多松散的方法组成,各个函数实现了单一的功能,便于修改以及程序移植。4.2游戏模游戏主要界面重来下一题重新出题解题难易程度退出块设计图18游戏主要模块4.2.1游戏初始化模块这是游戏的初始化状态,需要达到的效果是简洁干净大方,能吸引玩家兴趣,同时,操作界面清楚,容易让人上手,简洁明了。所以该数独游戏在打开同时,直接进入游戏第一关卡,去除一些不必要的开机动画。4.2.2游戏进程模块这个游戏模块可以根据不同经验和能力的玩家制定出难易程度相对不同的游戏级别和玩法,这样能迎合各级玩家的游戏水准和要求,使得新老玩家都能有兴趣使用此游戏,并迅速上手。所以该数独游戏设计了三个游戏难度,初级,中级,高级三个方向。4.2.3游戏菜单模块此模块设定了可以解题、本关游戏重来、重出题、下一关,退出这五个按钮,使得游戏更加有趣,让玩家有多重选择,不让他们因题目难以解开而失去兴趣,相应为玩家考虑,适当提供解题帮助或者选择下一关游戏。4.3类功能的描述4.3.1共有类主类MyGame:此类是通过扩展和继承基类Activity以此来实现功能的,应当说,这是整个应用程序的关键入口。同时,也是主要依据收到来自Handle(Handle主要作用是接受子线程发送的数据, 并因此由此数据配合主线程更新UI,比如:玩家点击一个 Button按钮 ,Android平台会分发事件到Button按钮上,以此响应你的上述操作。)的不同消息,来实现切换到不同的界面。4.3.2游戏界面的相关类(1)视图MyView类MyView是数独游戏中最主要的类之一,所有的游戏界面、九宫格模型都会在此类中包含。同时此类还会负责绘制数独游戏棋盘,数独游戏逻辑等功能。(2)菜单栏目onCreateOptionsMenu类onCreateOptionsMenu类是数独游戏中的菜单,这其中包括了“重出题”、“重来”、“解题”、“下一关”、“难易程度”、“退出”等功能。(3)数字键盘onKeyDown类onKeyDown类是数独游戏中的键盘事件,主要功能是记录游戏玩家键盘上输入的数字,并将其显示在数独游戏的棋盘上。4.4数独游戏所需的开发模式Activity,人机交互的界面,Activity的对象可以调用View对象从而构建出丰富多彩的界面。游戏用户在进行相应的输入操作的时候,是在数独游戏界面上进行的。而与此同时,在Activity的对象中,也会接收到相关数据,并因此通过Internet对象中的一个叫putExtra的方法存储至Internet对象里面去。然后再通过Activity开启一个叫Service或Activity的对象,进而就能将Internet中的数据从当前的Activity对象传递到另一组件中去,随后进行后台的数据处理和运算。若输入的数据需要一个数据库来存入,那么则把此数据通过Handle的对象搭起一个新的线程。在这个新的线程当中,将该数据写到数据库里。为了便于了解其开发模式,我们将通过如下所示的流程图而展示出来:ActivitySQLiteServiceInternetHandle图19数独游戏所需的的开发模式上述的流程图对数独游戏所需的开发模式进行了清晰展现,它不仅仅可以将Android平台上的及那些基本组件加以合理的利用,与此同时,在在MVC的三层架构中的程序代码也能更加符合其特性和所需要求。以便有利于程序代码的阅读浏览以及未来的游戏功能的扩充和加强,对重用的频繁度和概率性的有显著的提高。4.5游戏体系框架设计公共类My Game游戏界面相关类MyViewonCreateOptionsMenuonCreateonKeyDown图20 数独游戏体系框架5、系统实现5.1数独游戏流程框架图21游戏流程框架图5.2数独算法的实现数独游戏的关键在于,要迅速检验用户玩家所填写的数字是否正确,这一功能的流程图如下所示:图22 数独检验功能流程图5.2.1算法的基本逻辑在数独中的体现我们将对数独游戏算法类进行解析,这个类基本上是数学逻辑计算,通过一定的数独算法产生所需要的特定数独数组,并为了便于供其他类方便使用而通过特定的接口来实现。二维数组对于此类的建立来说,是至关重要的,因为要用它来表示所有数独的矩阵。要使在矩阵中的每行,每列,每一小块的数字都不重复。我们理清游戏的游戏要求,便可以理解出该算法的基本思路,其内涵在于要从数字0到9中随机任意选取,与此同时,我们还要对它在这个9*9的格子中行、列、块进行验证,判断其是否符合游戏要求。当填写符合要求的时候,就可以继续填写下一个,如果不能满足条件要求的时候,再次选择一个排除刚才那个数字的随机数,然后再进行判断。当所有九个数字都还没有找到能够满足数字的要求,则返回处理,将最后一个取出的符合条件要求的数字进行新的重新取值,直到所有的数字全部填写正确。当我们在求解数独游戏的同时,则会运用到回溯法,所有的解会按照一定的结构进行排列,然后再进行下一次搜索。一般解空间构造成一个树状结构,具有深度优先搜索的策略,通常情况下会有以下有两种方法:1、当如果只需要一个解的时候,找到了相关的解即可停止。2、当要求出所有的解的时候,需要进行“数的遍历”,以致找到所有的解。在我们的意识里,所谓的回溯法,其实就是按照一种特定的搜索方法,进行组织性,协调性,防止其不必要的穷举式搜索。她的最基本方法就是回溯搜索。本方法适用于一些相当大的组合数的解决方案。在解决空间树等问题中,按照深度优先搜索策略的回溯法是其最优解决方案。首先从根节点开始进行搜索。当到达空间树的任意一点。所以需要确定这些结点里是否包含了该问题的与之相关的解决问题的方案。如果没有发现与之相对应的符合要求的结点,就跳过搜索该结点的相关子树。并随后逐层返回到原先的根节点。否则,就要对该子树进行深度优先搜索。我们要搜索查找算法中基本思想,这其中的回溯法,就是关键:在已知的一问题中,通过对题意已经划定好的所有可能的边界解决区域(俗称一种相对应的可能解决),与此同时,我们需要根据已知条件得到相应的约束条件。通过在根据搜索的搜索方式时,利用深度搜索中的所有可能的解决方案,使用该方案的第一层找到一个可能解,这样的搜索解决方案,会使得结果能符合所要求的约束条件。并以此作为出发点,以便找到下一个的可能解,将搜索范围扩大到第二层。如果在第二层找到的话,就继续深入到第三层。按照上述搜索方式继续下去,直到找到所有层的全部可能解,则这个问题的就得以完整解决。如果所有可能解在第二层都不满足约束条件,则需要返回到第一层,放弃其原先的可能解,使用了第一层的下一个可能的解(即回溯),以此类推,寻找第二层的可能解。回溯法的优势相比于其他的穷举式的搜索方法,在于它不需要对所有层的每个可能解都进行遍历搜索,这样既费时又费力。它的高效性在于能避重就轻,能对无法满足条件的就抛弃该可能解,进而对下一个可能解进行寻找,而无需其余部分的下层解。如果约束条件在当前层次的所有可能解中都没有能实现满足的时候,则需要返回到上一层,抛弃原先的可能解,进行重新遍历搜索。根据上面的分析,总结出一些数独的游戏规则推理,以便于我们分析数独问题相关的约束条件:1、每一个小格子里面的数值区间范围在1-9内,不能超出这个区间;2、每一个小格子的数字在当前所在行中不得重复,也就是说1-9内在这一行的9个空格中只能出现一次;3、每一个小格子的数字在当前所在列中不得重复,也就是说1-9内在这一列的出现的次数只能是一次;4、每一个小格子的数字在每一个3*3的小宫格内不能重复出现,也就是说在这小方块中,9个数字不允许重复出现两次以上。综上所述,通过约束条件进行筛选的回溯法,在剔除掉那些不可能的解后,留下的就是该问题的至少一个以上的解。5.3游戏初始化界面模块5.3.1游戏界面的实现在建立数独数据之前,程序需要一个9*9的数据例如:5129 这样的81个数字要依次从第一行开始从左往右按顺序排列在9*9的九宫格内。我们需要设置一个二维数组int99,以便存储数据。数据随机变为0是根据游戏玩家的不同选择而造成的。根据不同级别要求,因此我设计了两个数组,oldData保存原有数据,而data保存当前数据,对于原有数据不能进行修改和清除,对oldData中为0的数据可以进行修改和清除将方法“easyData”设定为final关键字,目的是不允许它有子类,既不能继承。图23 游戏界面实现代码5.3.2在onDraw方法中绘制数据onDraw(),是为重写绘制方法,在onDraw()方法中,主要是绘制游戏界面所需要的9*9的九宫格数组,游戏界面背景颜色,游戏所填写数字的颜色,以及每个小格子的背景颜色。程序实现代码片段如下所示:绘制相关界面,这其中包括棋盘背景、九宫格的水平细线以及垂直线:图24 绘制界面的实现代码绘制数据:图25绘制数据的实现代码5.3.3编写按键事件在onKeyDown类中,设置了KeyCode ,KeyEvent 和event三个变量,目的是通过KeyEvent.KeyCode来判断玩家在键盘上输入的数字是几,并通过无返回值方法setData来在棋盘上显示出相应的数字,其中,1-9是放置键盘上的输入数据,而0则是代表清除数据。程序代码片段如下:图26键盘事件在setData这个方法中,原有数据为零的可以清除和放置数据。5.3.4检测游戏填充结果根据数独游戏的游戏规则,游戏玩家需要填充81个空格之后,必须要同时满足每行,每一列的每个数字都不得重复出现两次以上,这其中包括小九宫格内的3*3的九个数字也必须不能相同。并将其作为后期游戏结果检测的重要条件,因此编写chkGameOver检查是否完成游戏。首先是检查数独游戏程序是否结束:图27 chkGameOver方法其次显示游戏标题,提示玩家目前关卡数:图28 setGameTitle方法行检测:首先对各行进行检测,提供了检测的行内的九个数字是否有重复数据的方法“is over()”,该方法遍历这一行中所有的九个数字,当遍历到某个数字时,检测该数字后面的数字是否出现了重复。举个例子,例如:当我们检测到第4个数字是9时,则检测第5-9个数字是否出现过9这个数字,若是出现重复,则会停止检测,游戏失败,所以此功能既可以既可以避免重复检测的浪费,同时也能避免遗漏的精确。图29 行检测实现代码列检测:列检测的代码类似于对行的数据检测,但是以此同时还需要对每行进行检测,因此数独游戏程序设计了对行数据的检测方法isOver (),该检测方法的代码如下:图30 列检测实现代码3*3小九宫格的检测方法:通过上述剖析,我们除了要对九宫格中的行与列进行数据重复检测以及验证结果之外,我们还需要对每一个3*3的小九宫格内的所填写的数字进行重复检测和检验正确性,这是因为数独游戏的约束条件所致,为了避免出现重复现象而不符合数独游戏规则。检测的原理其实与行,列检测相同,只是对9*9的大数组进行细分,但是需要计算出九宫格内数字的所在位置。变量i和j指定了检测九宫格的位置,数独单元格中一共有3*3个九宫格,用以下程序设计完成九宫格内对重复数字的检测:图31检测小九宫格代码5.4 游戏菜单模块5.4.1基本功能完成,添加菜单功能建立一个onCreateOptionsMenu类,这其中设置“重出题”、“重来”、“解题”、“下一关”、“难易程度”和“退出”,并使用super关键字来访问和调用onCreateOptionsMenu类的Menu成员变量。图32 菜单功能5.4.2添加菜单事件:当玩家点击屏幕菜单上的任意一个按钮时候,会调用该类来处理菜单事件,在“下一关”界面中实现起来比较简单,只是需要判断游戏玩家是否真的是需要进入下一关即可。当玩家点击“退出”按钮时,会向Activity发送一个Handle消息,通知控制器切换屏幕。图33 添加菜单事件在菜单事件中,还根据不同按钮功能设定了以下几种私有方法:1、showAll()此方法是有关解题的方法她将使用easyData中相应关卡的数据,并将它依次显示在棋盘上,以此来实现解题功能。2、msg()此方法的作用在于对话框里的有关信息将通过此方法来显示。3、 selHard()此方法是用来调整难易程度,根据不同选择,棋盘上的空白格子数也会随之发生变化。4、 closeGame()此方法的目的在于达到实现对游戏界面的退出功能的实现化和作用化。图34 菜单功能实现6、系统运行与调试6.1游戏测试概述当游戏软件创建好之后,必须要进行实战检验,要对现实中所检验出的结果进行评估,以便分析其目前状态是否达到了预期目标和理想设计标准。以此同时,我们还需要进行有效的调试和操作,通过不断调整和解决所发现的相关问题,解决软件的缺陷和不足。以此提高产品的质量和性能。作为软件测试的重要组成部分,游戏测试是软件测试的所有常用的功能,但是游戏本身具有一定的特殊性,此外,游戏主要是测试包括两部分:对于在测试这个环节,相对于整个软件开发过程来说,这是一个很重要的一个环节,它关系到整个软件的生命周期的预测以及存活性。在所有过程中的初始化操作就是要求程序员对每个阶段的集中性检测,以此来确保相应的各个模块都能达到预期目标,各司其职。 (1)对游戏的性能测试当下所流行的各种游戏,都是在一定程度、上结合社会发展要求,对现实世界进行一种虚拟化,角色化的模拟境况。与此同时,他还会包含了一部分人类发展到一定阶段所出现的各种特性。它也涉及了一部分人体工程学中的易操作性和娱乐性等相关特点由于游戏在一定的程度上是模拟现实世界的一种虚拟境况,所以他不仅仅包含了人类文明社会的一部分特性,与此同时,还会涉及到操作简单可玩性,丰富的娱乐性等一些特点。因此,我将从三个部分来阐述游戏的相关测试环节:对游戏情节的相关测试:这是针对游戏的主要相关故事情节的主线进行铺路和全方位测试,要对情节与相关游戏人物和任务环境进行评估。对游戏世界的平衡测试:能力平衡和经济平衡是在游戏世界的平衡性得到了集中体现,公平竞争性是测试平衡性的目的所在和基本保证。对游戏文化的测试:人物的历史背景塑造,以及角色搭配,游戏场景搭建,游戏关卡主题的相关设计都是对于游戏世界的整体风格来说至关重要。6.2测试环境数独游戏的测试方式可以通过两种环境来实现:1、一种是创建Android虚拟设备AVD

温馨提示

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

评论

0/150

提交评论