1 / 39
文档名称:

基于Android的2048游戏开发-毕业设计(论文).pdf

格式:pdf   大小:3,272KB   页数:39页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于Android的2048游戏开发-毕业设计(论文).pdf

上传人:1781111**** 2024/5/11 文件大小:3.20 MB

下载得到文件列表

基于Android的2048游戏开发-毕业设计(论文).pdf

相关文档

文档介绍

文档介绍:该【基于Android的2048游戏开发-毕业设计(论文) 】是由【1781111****】上传分享,文档一共【39】页,该文档可以免费在线阅读,需要了解更多关于【基于Android的2048游戏开发-毕业设计(论文) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:...毕业设计(论文)基于Android平台2048游戏开发教学单位:计算机学院专业名称:软件工程(游戏与数字媒体)学号:11学生:高振东指导教师:宋喜佳(讲师)指导单位:计算机学院完成时间:2016年4月30日电子科技大学学院教务处制发:...基于Android平台2048游戏开发[摘要]在生活节奏不断加快的现代社会,轻松的益智游戏对缓解生活压力调节情绪具有重要的意义。《2048》这款小游戏是一款流行的数字游戏。第一款《2048》小游戏是由GabrieleCirulli首度发布在GitHub上。《2048》是当时基于《1024》和《小三传奇》这两款的玩法而开发的新型数字游戏,而游戏设计初衷是一款益智类的游戏,其特点在于轻松,简单,因此,开发要求做到各项功能要完备、操作要简便、易学易用。现在开发出来的版本有普通版、六边形版、朝代版、3D版、后宫版等等。本文采用JAVA语言开发了2048小游戏,通过Android平台实现了2048的基本运行,本着简单,易于操作的原则和缓解生活压力、降低生活节奏的初衷,游戏中没有繁多的按钮,也不用特别复杂的操作,只需动动手指,即可操纵自如。游戏经过图形界面的处理,以不同的颜色显示不同的数字,并拥有了最高成绩记录,撤销上一步,重置游戏的各项功能。对于游戏的逻辑实现部分进行测试,测试结果正常,目前没有发现异常。但是游戏界面可能有些简单,日后可以通过美化界面来获得更好的游戏体验。[关键词]游戏;益智;数字I/39:...BasedontheAndroidplatform2048game[Abstract]eleratedpaceoflifeinthemodernsociety,,,itscharacteristicsiseasyandsimple,therefore,,easytooperate,,hexagonalversion,Dynastyversion,3Dversion,thepalaceversion,,2048,thebasicoperationisrealizedthroughtheAndroidplatform,thepurposeofsimpleandeasyoperationprincipleandalleviatethepressureoflife,reducetheoriginalintentionoftherhythmoflife,thegamewithoutdifferentbutton,plexoperations,onlyneedtomoveafinger,,andhavethehighestscorerecords,undothelaststep,,thetestresultsarenormal,,inthefuturecanbeusedtobeautifytheinterfacetogetabettergamingexperience.[KeyWords]game;puzzle;numbelII/39:....................................................................................................................................................................:...:...,具有很高的性价比,非常深受人们的喜爱,可能正式因为如此,在2014年中,%很夸的市场份额,一举成为使用的人数最多,市场份额占据最大的Android智能手机系统。而Android智能手机游戏的出现正是为了娱乐心神,并且随着智能移动终端和全球移动通信网络的不断进步,Android智能手机游戏也正在经历从简单到复杂的进化过程。从全球来看,智能移动终端的娱乐服务一直被认为是带动移动数据业务加速并快速发展的重要力量。也是作为手机娱乐服务的重要容之一。近年来,一直伴随着全球移动网络和移动终端性能不断的提高和完善。由于近几年来,Android智能手机游戏的快速发展,游戏的分类也变得越来越丰富,目前手机游戏按容可分为:角色扮演类(RPG)、冒险类(AVG)、格斗类(FTG)、棋牌类、电影改版类、益智类、体育竞技类、模拟类。手机游戏种类目前已成为人类线上娱乐生活的不可或缺的最主流的载体而存在,现代人对于移动终端的休闲娱乐功能所需求越来越强大,移动终端上的游戏或已以成为了现代人们娱乐生活中不可或缺的一部分了。,国国外的水平差距很大。在市场上成名的手机游戏基本上都是国外游戏公司开发的,而且很容易辨认。因为学****的关系,本人接触了很多Android开发者的游戏,发现国开发者开发的Android手机游戏,不仅界面粗糙,而且设计简单,同质化严重,相同的创意往往被反复抄袭很多次。而国外开发者开发的游戏不同,大型游戏容丰富,情节完整;小型游戏而从用户体验和创意上远胜国的开发者。1/39:...,只要通过简单和易操作的Android游戏帮助手机用户来打发他们闲暇的时间,并娱乐心身和放松心情。如果你也是一个数字叠加的爱好者,或者是比较有天赋的数学天才,不过就算不是数学的天才,一般的玩家也能够玩转这款游戏,都会有很大的成功机会。当你体会过这款游戏,你就会被这游戏深深的吸引,根本停不下来。:第1章:绪论,介绍了课题的研究背景、国外研究现状,课题研究目的和意义、以与本文的结构。第2章:相关开发技术与理论基础,介绍了课题采用的Android操作系统等相关技术。第3章:可行性分析,对Android2048游戏进行可行性分析。总体介绍了程序的设计架构与所要实现的功能分析,并阐述了开发平台和环境的选择。第4章:系统详细设计与实现,介绍了程序各个模块的功能分析以与设计思路并其相关实现代码。第5章:系统应用实例和结果分析,介绍了应用平台,测试用例以与结果分析。第6章:心得体会,总结本文工作成果,并对研究工作做反思和总结2/39:...(橡树)的语言,它的基础是当时最流行的C和C++语言(Sun公司于2009年4月被Oracle公司收购)。但是,由于一些非技术上的原因,Oak语言并没有得到迅速的推广。知道1993年,展,Sun公司发现可以利用Oak语言的技术来创造含有动态容的了的Oak语言又被重新的开发和改造。于是便将改造后的Oak语言改名为Java语言,Java是太平洋上的一个盛产咖啡的岛屿的名字。终于,在1995年,Java这个被定位于网络应用的程序设计语言被正式推出。++语言。集成了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针,改以引用取代,同时移除原C++与原来运算符重载,也移除了多重继承特性,改用接口取代,增加垃圾回收器功能。、类型安全的枚举、不定长参数和自动装/拆箱特性。Sun公司对Java语言的解释是:“Java编程语言是个简单、面向对象、分布、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。Java语言问世的时间虽然不长,但却已被业界所承受,IBM、Apple、DEC、Adobe、HP等大公司都已经购买了Java语言的许可证。2001年,当时的移动吧主NOKIA宣布,到2003年将出售1亿部支持Java的手机。3/39:...,中文俗称安卓,是一个以Linux为基础的开放源代码移动设备操作系统,主要用于智能手机和平板电脑,由Google成立的OpenHandsetAlliance(OHA,开放手持设备联盟)持续领导与开发中。(Lollipop)。·鲁宾(AndyRubin)等人开发制作,最初开发这个系统的目的是创建一个数码相机的先进操作系统;但是后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统。于2005年8月被美国科技企业Google收购。2007年11月,Google与84家硬件制造商、软件开发商与电信营运商成立开放手持设备联盟来共同研发改良Android系统,随后,Google以Apache免费开放源代码许可证的授权方式,发布了Android的源代码,让生产商推出搭载Android的智能手机,Android操作系统后来更逐渐拓展到平板电脑与其他领域上。2010年末数据显示,仅正式推出两年的Android操作系统在市场占有率上已经超越称霸逾十年的诺基亚Symbian系统,成为全球第一大智能手机操作系统。在2014年GoogleI/O开发者大会上Google宣布过去30天里有10亿台Android设备被激活,。4/39:..系统架构Android是基于Linux核的软件平台和操作系统,采用了软件堆栈(SoftwareStack)的架构,共分为四层。(1)应用程序层该层提供一些核心应用程序包,例如电子、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。(2)应用程序框架层该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、容提供者、视图系统、包管理器、管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。5/39:..3)系统库和Android运行时系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,、、。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以与垃圾回收等重要功能。(4),如安全性、存管理、进程管理、网络协议栈和驱动模型。Linux核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash存驱动、Binder(IPC)驱动、电源管理等。,,至今已经发布了多个更新。这些更新版本都在前一个版本的基础上修复了Bug并且添加了前一个版本所没有的新功能。当前用户量最多的是代号为JellyBean果冻豆版本,%,因此,。++,模拟测试平台为AndroidSDK模拟器,真机测试平台为ZTEU930HD。,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,6/39:..在Eclipse之上的C++,JAVA,Python等语言的开发插件出现。同时可以通过开发新的插件扩展现有插件的功能。可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。在本项目中,Eclipse正是通过第三方插件—ADT实现了开发Android应用。,即Android开发工具包。ADT是Eclipse中构建Android应用程序IDE插件,ADT扩展了Eclipse的功能,让开发人员快速建立新的Android项目、创建应用程序的用户界面。ADT可以帮助Eclipse找到Androidsdk,再加上Android框架的API组件调试使用AndroidSDK工具,以便APK分发给应用程序。ADT大大减轻Android应用程序的开发工作量,工具集成XML编辑器,将给开发人员一个令人难以置信的开发Android应用环境。使用ADT之前,必须确认已经安装了Eclipse以与同EclipseIDE兼容版本的AndroidSDK。(JavaDevelopmentKit)是Java语言的软件开发工具包(SDK)。有SE、EE、ME三个版本。没有JDK的话,无法编译Java程序,如果想只运行Java程序,要确保已安装相应的JRE。7/39:..:系统采用JAVA语言开发,Eclipse作为Android开发环境。ADT插件提供了一系列图形用户界面组件进行界面编程,所以在技术上可行。“2048”游戏作为毕业设计进行开发,由本人亲自开发,而且开发android程序不需要购买昂贵的设备,所以成本不会太高,综上所述经济上是可行的。,用户是否能操作最终的产品:该游戏在方便易操作的Android手机上运行,方便于玩家操作。根据以上几个方面的研究,在技术上、经济上和操作上都是可行的,本项目可进行开发。8/39:..(1)开始时棋盘随机出现两个数字,出现的数字仅可能为2或4;(2)玩家可以选择上下左右四个方向,若棋盘的数字出现位移或合并,视为有效移动;(3)玩家选择的方向上若有相同的数字则合并,每次有效移动可以同时合并,但不可以连续合并;(4)合并所得的所有新生成数字相加即为该此移动的有效得分;(5)玩家选择的方向行或列前方有空格则向空格处位移;(6)每次有效移动一步,棋盘上的空位(无数字处)随机出现一个数字(依然可能为2或4);(7)棋盘被数字填满,无法进行有效移动,判负,游戏完毕。,需要将各个部位分割成其对应部分的功能,并且逐步去实现该功能。:..,首先要把流程分析好,画出流程图,:10/39:...,记录此时合并的的数字,加到相应的分数中。同时保存游戏最高分到本地,下次启动应用时显示历史最高分。,没有两个相同的格子的数字相同,并且已经没有空格,那么就判定为游戏完毕。,在宫格的左上角显示再该局游戏的得分,而对应的右边则显示历史最高分。:11/39:...)游戏布局本游戏的设计用到了线性布局、相对布局、表格布局等等。首先总体布局是一个线性布局,部包括一个子线性布局和一个表格布局,该子线性布局中包含四个textview,用来显示当前分数,scope,最高分,topscope。表格布局用来显示4乘4的方格。最后再用一个线性布局显示下方的两个按钮,撤销和重置。2)数据结构[0~15]对应游戏中4*4的16个方格。相应的数字对四取余得到该数字的横坐标,除以四得到该数字的纵坐标。当方格无数字时,将其保存到空白格列表spaceList中。当方格有数字时时,将其保存到数字格列表numberList中。3)触控交互本模块主要实现用户使用手指滑动屏幕,来判断其滑动的方向。首先定义手指接触屏幕起始位置的横坐标变量startX,纵坐标变量startY,手指离开屏幕的最后位置的横坐标offsetX,纵坐标变量offsetY。调用12/39:...OnTouchListener***,重写OnTouch方法。将offsetX减去startX得到水平方向的偏移量,同理offsetY减去startY得到垂直方向的偏移量。通过判断水平和垂直方向偏移量即可知道用户所要移动的方向。特殊情况:,一般不会精准的向四个方向滑动,肯定会有偏差,所以要判断手指滑过方向的是水平方向还是垂直方向的意图,当水平方向的偏移量大于垂直方向的偏移量时,说明用户是水平滑动意图,当垂直方向的偏移量大于水平方向的偏移量,说明用户是垂直方向滑动的意图。,不可能点一下屏幕或者稍微动一下就表示滑动意图,这显然不太符合现实情况,所以要定义偏移一定的距离才能判断用户的真正意图。规定当水平方向的偏移距离大于或者等于水平方向的偏移距离,且当偏移小于5时,用户向上滑动,大于5使,规定向下滑动;当水平方向的偏移距离大于或者等于水平方向的偏移距离,且当偏移小于5时,规定用户向左滑动,如果大于5,用户向右滑动。4)数字合并滑动方向不同时,执行不同的遍历顺序。例如用户向上执行一次向左有效滑动时,做一个嵌套循环得到该方向上索引。再调用置换方法实现。用户所移动的方向上有两个相同的格子时,首先一次移动中,每个格子最多只能升级一次,获取当前格子的view,并将其置成空白格。获取目标格的view,并将其背景置成当前格升级后的背景。然后在空白格列表中加入当前格子,在数字列中删掉第一个格子,将数字列表对应的容升级。效果如以下图所示:13/39:...)数字列表类数字列表类用于保存数字格,以与数字格对应的数字。定义一个List<Integer>stuffList用于保存所有不为空的格子的坐标(在GridLayout中的位置从0到15)。再定义一个List<Integer>numberList用于保存所有不为空的格子对应的数字(以2为底数的指数)。定义以下方法,用于判断当前位置是否为数字格;将当前的格子从数字列表中去掉;使当前的格子对应的数字升级,指数加1;将当前格子对应的位置置换为新的位置;通过格子对应的位置获取其对应的数字;通过格子对应的横纵坐标来14/39:...获取其对应的数字;清空数字格与其对应的数字;判断是否还有可以合并的数字格;获取对应序号格子中的位置;获取对应序号格子中的指数。6)添加随机数在空白格中随机加入数字2或者4,首先获取坐标对应的View,通过随机生成数字1或2,(int)(()+1);然后将当前格子的图片置换为2或者4,在numList中加入该格子的信息,最后在空白列表中去掉这个格子。游戏最开始的时候会添加两个随机数,并且每执行一次有效移动时,在空白格处随机添加一个随机数。7)游戏计分每当有相同的数字合并时,合并所得的所有新生成数字相加即为该此移动的有效得分。如以下图所示::...,历史最高分会记录在本地。读取perference文件,如果没有,则会创建一个名为TopScore的文件,使用Editor类写入perference文件,用于写入最高分。8)撤销功能撤销操作,获取操作记录栈中最后的记录,并重绘界面。至少应有一次有效滑动后才能撤销。将当前的界面记录在栈中弹出。取栈中第二个对象即为本次操作之前的界面的记录。调取方法,重绘界面。9)重置功能清空界面,清空数字,使得分为零,重新初始化。,并且没有两个相邻的相同数字时,游戏完毕,此时会弹出一个提示框,显示用户本局所获得得分数并鼓励,点击重新开始则初始化游戏,玩家可以开始下一局。点击完毕则直接关闭该游戏。如下图:16/39:...:...(1)拟定测试计划。根据游戏的总体情况,仔细分析游戏各个步骤的运行可能出现的状况,对各种情况进行汇总,然后拟定出一份具体测试步骤。(2)初步测试。根据拟定好的计划进行游戏调试,出现意外情况时(3)与时记录。测试完后对所记录的意外情况进行分析,然后提出改进的方案,再进行修改。(4)深度测试。对游戏进行最后的修改确认没有漏洞后再进行测试,从各个方面进行一次整体的排查,知道不再出现意料之外的情况。(5)测试人员。测试初级阶段主要由游戏主要编程员进行测试,以便能够全面的进行一次错误排查。然后由不同的玩家进行测试,集众人之益,能够从不同的角度发现问题,以便更好地改。,首先打开Eclipse软件,通过import将源代码导入工作区,然后点击工具栏的开始按钮打开模拟器进行运行,当游戏进入游戏主界面时按照以下步骤进行测试。开始界面如下图:18/39:...(1)向上滑动,如下图::正常。(2)向左滑动,如下图:19/39:...:正常。(3)向下滑动,如下图::正常。(4)向右滑动,如下图:20/39:..:正常。(5)点击“撤销”返回上一步,如下图::正常。(6)点击“重置”?初始化界面,如下图:21/39:..:正常。,没有发现什么错误。22/39:..6章心得体会经过了几个月的研究终于把2048这个游戏完成了,这个游戏的完成使我明白了,看似很简单的事情要真的动手实践起来确实有一定的难度,还好经过我不断的耐心学****和钻研,才把这个游戏的基本功能实现了,最后只实现了记录历史最好成绩的功能,暂时没有实现排行榜这点稍微遗憾,以后有机会我会去实现的!俗话说,不积跬步无以至千里,不积小流无以成江海,程序中的很多方法我都是在书中和网上找了又找,试了又试,一遍又一遍,最终才把需要的方法融入到程序当中,实现了必要的功能模块。我以前从来没有玩过这个游戏,在开发游戏之前,我先在网上找到该游戏,了解游戏的玩法,自己熟悉之后才开始慢慢琢磨如何布局,如何分析,如何设计,如何实现默写模块功能,就用户在屏幕上滑动,获取用户意图这一模块来说,以前感觉很不可思议的事情,经过我不断耐心的学****实验,最终也实现了,感觉挺棒的,通过这一点使我了解到我现在需要学****的容还很多,今后我一定积极去学****需要学****的知识,做到融会贯通,多做项目使自己在实践中学****为将来打好铺垫。最终因为本人能力有限,时间仓促,该游戏只是实现了基本功能,具体的美化、优化