基于Android的游戏开发毕业设计论文.docx
- 文档编号:28048168
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:32
- 大小:608.62KB
基于Android的游戏开发毕业设计论文.docx
《基于Android的游戏开发毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于Android的游戏开发毕业设计论文.docx(32页珍藏版)》请在冰豆网上搜索。
基于Android的游戏开发毕业设计论文
毕业设计(论文)
基于Android平台2048游戏开发
教学单位:
计算机学院
专业名称:
软件工程(游戏与数字媒体)
学号:
11
学生:
高振东
指导教师:
宋喜佳(讲师)
指导单位:
计算机学院
完成时间:
2016年4月30日
电子科技大学学院教务处制发
基于Android平台2048游戏开发
[摘要]在生活节奏不断加快的现代社会,轻松的益智游戏对缓解生活压力调节情绪具有重要的意义。
《2048》这款小游戏是一款流行的数字游戏。
第一款《2048》小游戏是由GabrieleCirulli首度发布在GitHub上。
《2048》是当时基于《1024》和《小三传奇》这两款的玩法而开发的新型数字游戏,而游戏设计初衷是一款益智类的游戏,其特点在于轻松,简单,因此,开发要求做到各项功能要完备、操作要简便、易学易用。
现在开发出来的版本有普通版、六边形版、朝代版、3D版、后宫版等等。
本文采用JAVA语言开发了2048小游戏,通过Android平台实现了2048的基本运行,本着简单,易于操作的原则和缓解生活压力、降低生活节奏的初衷,游戏中没有繁多的按钮,也不用特别复杂的操作,只需动动手指,即可操纵自如。
游戏经过图形界面的处理,以不同的颜色显示不同的数字,并拥有了最高成绩记录,撤销上一步,重置游戏的各项功能。
对于游戏的逻辑实现部分进行测试,测试结果正常,目前没有发现异常。
但是游戏界面可能有些简单,日后可以通过美化界面来获得更好的游戏体验。
[关键词]游戏;益智;数字
BasedontheAndroidplatform2048game
[Abstract]Intheacceleratedpaceoflifeinthemodernsociety,easypuzzlegametoeasethepressureoflife.Force,adjustthemoodhasimportantmeaning"2048"thissmallgameisapopulardigitalgame.Thefirst"2048"smallgamewasreleasedbyCirulliGitHubonGabrieleforthefirsttime."2048"wasbasedon"1024"and"smallthree"Legendofthetwogameplayandthedevelopmentofanewtypeofdigitalgamesandgamedesignoriginalintentionisapuzzlegame,itscharacteristicsiseasyandsimple,therefore,development.Seekingtoachievethefunctiontocomplete,easytooperate,YiXueyiuse.Nowdevelopedaversionoftheordinaryversion,hexagonalversion,Dynastyversion,3Dversion,thepalaceversion,etc.
TheJavalanguagetodevelopthe2048smallgame,2048,thebasicoperationisrealizedthroughtheAndroidplatform,thepurposeofsimpleandeasyoperationprincipleandalleviatethepressureoflife,reducetheoriginalintentionoftherhythmoflife,thegamewithoutdifferentbutton,alsoneednotparticularlycomplexoperations,onlyneedtomoveafinger,youcanmaneuverability.
Gamethroughtheprocessingofthegraphicalinterfacetodisplaydifferentcolorswithdifferentnumbers,andhavethehighestscorerecords,undothelaststep,resetthefunctionofthegame.Thelogicofthegametoachievepartofthetest,thetestresultsarenormal,thereisnoabnormal.Butthegameinterfacemaybealittlesimple,inthefuturecanbeusedtobeautifytheinterfacetogetabettergamingexperience.
[KeyWords]game;puzzle;numbel
图目录
第1章绪论
1.1游戏开发背景
Android智能手机功能非常强大,具有很高的性价比,非常深受人们的喜爱,可能正式因为如此,在2014年中,Android智能手机在全世界占据着81.5%很夸的市场份额,一举成为使用的人数最多,市场份额占据最大的Android智能手机系统。
而Android智能手机游戏的出现正是为了娱乐心神,并且随着智能移动终端和全球移动通信网络的不断进步,Android智能手机游戏也正在经历从简单到复杂的进化过程。
从全球来看,智能移动终端的娱乐服务一直被认为是带动移动数据业务加速并快速发展的重要力量。
也是作为手机娱乐服务的重要容之一。
近年来,一直伴随着全球移动网络和移动终端性能不断的提高和完善。
由于近几年来,Android智能手机游戏的快速发展,游戏的分类也变得越来越丰富,目前手机游戏按容可分为:
角色扮演类(RPG)、冒险类(AVG)、格斗类(FTG)、棋牌类、电影改版类、益智类、体育竞技类、模拟类。
手机游戏种类目前已成为人类线上娱乐生活的不可或缺的最主流的载体而存在,现代人对于移动终端的休闲娱乐功能所需求越来越强大,移动终端上的游戏或已以成为了现代人们娱乐生活中不可或缺的一部分了。
1.2国外研究现状
基于Android的游戏开发,国国外的水平差距很大。
在市场上成名的手机游戏基本上都是国外游戏公司开发的,而且很容易辨认。
因为学习的关系,本人接触了很多Android开发者的游戏,发现国开发者开发的Android手机游戏,不仅界面粗糙,而且设计简单,同质化严重,相同的创意往往被反复抄袭很多次。
而国外开发者开发的游戏不同,大型游戏容丰富,情节完整;小型游戏而从用户体验和创意上远胜国的开发者。
1.3游戏开发意义
此次毕业设计的初衷就是想设计出一个能够在任何环境任何时间都能够放松心情和娱乐心身的单机游戏,只要通过简单和易操作的Android游戏帮助手机用户来打发他们闲暇的时间,并娱乐心身和放松心情。
如果你也是一个数字叠加的爱好者,或者是比较有天赋的数学天才,不过就算不是数学的天才,一般的玩家也能够玩转这款游戏,都会有很大的成功机会。
当你体会过这款游戏,你就会被这游戏深深的吸引,根本停不下来。
1.4论文结构
本论文主要从下面几章阐述对于Android2048游戏的研究与应用:
第1章:
绪论,介绍了课题的研究背景、国外研究现状,课题研究目的和意义、以与本文的结构。
第2章:
相关开发技术与理论基础,介绍了课题采用的Android操作系统等相关技术。
第3章:
可行性分析,对Android2048游戏进行可行性分析。
总体介绍了程序的设计架构与所要实现的功能分析,并阐述了开发平台和环境的选择。
第4章:
系统详细设计与实现,介绍了程序各个模块的功能分析以与设计思路并其相关实现代码。
第5章:
系统应用实例和结果分析,介绍了应用平台,测试用例以与结果分析。
第6章:
心得体会,总结本文工作成果,并对研究工作做反思和总结
第2章相关技术和理论基础
2.1Java语言
Java语言的前身是SunMicrosystems公司开发的一种用于智能化家电的名为Oak(橡树)的语言,它的基础是当时最流行的C和C++语言(Sun公司于2009年4月被Oracle公司收购)。
但是,由于一些非技术上的原因,Oak语言并没有得到迅速的推广。
知道1993年,WWW(万维网)迅速发展,Sun公司发现可以利用Oak语言的技术来创造含有动态容的WWW网页,于是已受人冷落了的Oak语言又被重新的开发和改造。
于是便将改造后的Oak语言改名为Java语言,Java是太平洋上的一个盛产咖啡的岛屿的名字。
终于,在1995年,Java这个被定位于网络应用的程序设计语言被正式推出。
图2.1JavaLogo
Java编程语言的风格十分接近C++语言。
集成了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针,改以引用取代,同时移除原C++与原来运算符重载,也移除了多重继承特性,改用接口取代,增加垃圾回收器功能。
在JavaSE1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。
Sun公司对Java语言的解释是:
“Java编程语言是个简单、面向对象、分布、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。
Java语言问世的时间虽然不长,但却已被业界所承受,IBM、Apple、DEC、Adobe、HP等大公司都已经购买了Java语言的许可证。
2001年,当时的移动吧主NOKIA宣布,到2003年将出售1亿部支持Java的手机。
2.2Android操作系统
2.2.1简介
Android,中文俗称安卓,是一个以Linux为基础的开放源代码移动设备操作系统,主要用于智能手机和平板电脑,由Google成立的OpenHandsetAlliance(OHA,开放手持设备联盟)持续领导与开发中。
Android已发布的最新版本为Android5.1(Lollipop)。
图2.2AndroidLogo
Android系统最初由安迪·鲁宾(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设备被激活,相较于2013年6月则是5.38亿。
2.2.2系统架构
Android是基于Linux核的软件平台和操作系统,采用了软件堆栈(SoftwareStack)的架构,共分为四层。
图2.3Android系统架构
(1)应用程序层
该层提供一些核心应用程序包,例如电子、短信、日历、地图、浏览器和联系人管理等。
同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。
(2)应用程序框架层
该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。
应用程序框架层包括活动管理器、窗口管理器、容提供者、视图系统、包管理器、管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。
在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。
并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。
基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。
(3)系统库和Android运行时
系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。
Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、、android.media等等。
后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以与垃圾回收等重要功能。
(4)Linux核
Android核心系统服务依赖于Linux2.6核,如安全性、存管理、进程管理、网络协议栈和驱动模型。
Linux核也是作为硬件与软件栈的抽象层。
驱动:
显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash存驱动、Binder(IPC)驱动、电源管理等。
2.2.3Android版本
Android操作系统是一个由Google和开放手持设备联盟共同开发发展的移动设备操作系统,其最早的一个版本Android1.0beta发布于2007年11月5日,至今已经发布了多个更新。
这些更新版本都在前一个版本的基础上修复了Bug并且添加了前一个版本所没有的新功能。
当前用户量最多的是代号为JellyBean果冻豆版本,占Android用户42.6%,因此,本设计采用Android4.1.2SDK版本。
2.3开发平台介绍
2048Android游戏开发平台为Eclipse4.3.2+ADT22.6.2+JDK1.7.0_51,模拟测试平台为AndroidSDK模拟器,真机测试平台为ZTEU930HD。
2.3.1Eclipse
Eclipse是不仅仅是成为专门开发JAVA程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。
Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。
也就是说未来只要有人需要,就会有建立在Eclipse之上的C++,JAVA,Python等语言的开发插件出现。
同时可以通过开发新的插件扩展现有插件的功能。
可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。
在本项目中,Eclipse正是通过第三方插件—ADT实现了开发Android应用。
2.3.2ADT
DT是英文AndroidDevelopmentTools的简称,即Android开发工具包。
ADT是Eclipse中构建Android应用程序IDE插件,ADT扩展了Eclipse的功能,让开发人员快速建立新的Android项目、创建应用程序的用户界面。
ADT可以帮助Eclipse找到Androidsdk,再加上Android框架的API组件调试使用AndroidSDK工具,以便APK分发给应用程序。
ADT大大减轻Android应用程序的开发工作量,工具集成XML编辑器,将给开发人员一个令人难以置信的开发Android应用环境。
使用ADT之前,必须确认已经安装了Eclipse以与同EclipseIDE兼容版本的AndroidSDK。
2.3.2JDK
JDK(JavaDevelopmentKit)是Java语言的软件开发工具包(SDK)。
有SE、EE、ME三个版本。
没有JDK的话,无法编译Java程序,如果想只运行Java程序,要确保已安装相应的JRE。
第3章可行性分析
3.1可行性研究目的
3.1.1技术可行性
确保现有的技术是否能解决本该开发项目:
系统采用JAVA语言开发,Eclipse作为Android开发环境。
ADT插件提供了一系列图形用户界面组件进行界面编程,所以在技术上可行。
3.1.2经济可行性
由于“2048”游戏作为毕业设计进行开发,由本人亲自开发,而且开发android程序不需要购买昂贵的设备,所以成本不会太高,综上所述经济上是可行的。
3.1.3操作可行性
确定软件产品是否能够被最终的用户所承受,用户是否能操作最终的产品:
该游戏在方便易操作的Android手机上运行,方便于玩家操作。
根据以上几个方面的研究,在技术上、经济上和操作上都是可行的,本项目可进行开发。
第4章游戏设计
4.1游戏规则
(1)开始时棋盘随机出现两个数字,出现的数字仅可能为2或4;
(2)玩家可以选择上下左右四个方向,若棋盘的数字出现位移或合并,视为有效移动;
(3)玩家选择的方向上若有相同的数字则合并,每次有效移动可以同时合并,但不可以连续合并;
(4)合并所得的所有新生成数字相加即为该此移动的有效得分;
(5)玩家选择的方向行或列前方有空格则向空格处位移;
(6)每次有效移动一步,棋盘上的空位(无数字处)随机出现一个数字(依然可能为2或4);
(7)棋盘被数字填满,无法进行有效移动,判负,游戏完毕。
4.2总体设计
4.2.1游戏框架分析
对一个游戏而言,需要将各个部位分割成其对应部分的功能,并且逐步去实现该功能。
图4.2.1系统功能
游戏主要分三个显示模块分别是是游戏计分,游戏容,游戏菜单。
图4.2.2计分显示
图4.2.3游戏容
图4.2.4游戏菜单
4.2.2游戏流程分析
要想把一个游戏做好,首先要把流程分析好,画出流程图,如图4.2.1所示:
图4.2.5游戏流程
4.2.3游戏记分分析
当有数字合并时,记录此时合并的的数字,加到相应的分数中。
同时保存游戏最高分到本地,下次启动应用时显示历史最高分。
4.2.4游戏完毕分析
当屏幕上数字没有得到2048这个值,没有两个相同的格子的数字相同,并且已经没有空格,那么就判定为游戏完毕。
4.3详细设计
4.3.1游戏主界面
游戏开始界面为一个类似棋盘4乘4的16宫格,在宫格的左上角显示再该局游戏的得分,而对应的右边则显示历史最高分。
如以下图4.3.1所示:
图4.3.1游戏主界面
4.3.2游戏逻辑实现
1)游戏布局
本游戏的设计用到了线性布局、相对布局、表格布局等等。
首先总体布局是一个线性布局,部包括一个子线性布局和一个表格布局,该子线性布局中包含四个textview,用来显示当前分数,scope,最高分,topscope。
表格布局用来显示4乘4的方格。
最后再用一个线性布局显示下方的两个按钮,撤销和重置。
2)数据结构
[0~15]对应游戏中4*4的16个方格。
相应的数字对四取余得到该数字的横坐标,除以四得到该数字的纵坐标。
当方格无数字时,将其保存到空白格列表spaceList中。
当方格有数字时时,将其保存到数字格列表numberList中。
3)触控交互
本模块主要实现用户使用手指滑动屏幕,来判断其滑动的方向。
首先定义手指接触屏幕起始位置的横坐标变量startX,纵坐标变量startY,手指离开屏幕的最后位置的横坐标offsetX,纵坐标变量offsetY。
调用OnTouchListener监听器,重写OnTouch方法。
将offsetX减去startX得到水平方向的偏移量,同理offsetY减去startY得到垂直方向的偏移量。
通过判断水平和垂直方向偏移量即可知道用户所要移动的方向。
特殊情况:
1.由于人的手指在滑动方向会有偏差,一般不会精准的向四个方向滑动,肯定会有偏差,所以要判断手指滑过方向的是水平方向还是垂直方向的意图,当水平方向的偏移量大于垂直方向的偏移量时,说明用户是水平滑动意图,当垂直方向的偏移量大于水平方向的偏移量,说明用户是垂直方向滑动的意图。
2.由于人的手指只有滑动一段距离才能说明用户的意图,不可能点一下屏幕或者稍微动一下就表示滑动意图,这显然不太符合现实情况,所以要定义偏移一定的距离才能判断用户的真正意图。
规定当水平方向的偏移距离大于或者等于水平方向的偏移距离,且当偏移小于5时,用户向上滑动,大于5使,规定向下滑动;当水平方向的偏移距离大于或者等于水平方向的偏移距离,且当偏移小于5时,规定用户向左滑动,如果大于5,用户向右滑动。
4)数字合并
滑动方向不同时,执行不同的遍历顺序。
例如用户向上执行一次向左有效滑动时,做一个嵌套循环得到该方向上索引。
再调用置换方法实现。
用户所移动的方向上有两个相同的格子时,首先一次移动中,每个格子最多只能升级一次,获取当前格子的view,并将其置成空白格。
获取目标格的view,并将其背景置成当前格升级后的背景。
然后在空白格列表中加入当前格子,在数字列中删掉第一个格子,将数字列表对应的容升级。
效果如以下图所示:
图4.3.2数字合并前
图4.3.3数字合并后
5)数字列表类
数字列表类用于保存数字格,以与数字格对应的数字。
定义一个List
再定义一个List
定义以下方法,用于判断当前位置是否为数字格;将当前的格子从数字列表中去掉;使当前的格子对应的数字升级,指数加1;将当前格子对应的位置置换为新的位置;通过格子对应的位置获取其对应的数字;通过格子对应的横纵坐标来获取其对应的数字;清空数字格与其对应的数字;判断是否还有可以合并的数字格;获取对应序号格子中的位置;获取对应序号格子中的指数。
6)添加随机数
在空白格中随机加入数字2或者4,首先获取坐标对应的View,通过随机生成数字1或2,(int)Math.round(Math.random()+1);然后将当前格子的图片置换为2或者4,在numList中加入该格子的信息,最后在空白列表中去掉这个格子。
游戏最开始的时候会添加两个随机数,并且每执行一次有效移动时,在空白格处随机添加一个随机数。
7)游戏计分
每当有相同的数字合并时,合并所得的所有新生成数字相加即为该此移动的有效得分。
如以下图所示:
图4.3.4游戏计分
图4.3.5游戏计分
游戏最高分显示在右上角,历史最高分会记录在本地。
读取perference文件,如果没有,则会创建一个名为TopScore的文件,使用Editor类写入perference文件,用于写入最高分。
8)撤销功能
撤销操作,获取操作记录栈中最后的记录,并重绘界面。
至少应有一次有效滑动后才能撤销。
将当前的界面记录在栈中弹出。
取栈中第二个对象即为本次操作之前的界面的记录。
调取方法,重绘界面。
9)重置功能
清空界面,清空数字,使得分为零,重新初始化。
4.3.3游戏完毕
当游戏界面上的数字被填满,并且没有两个相邻的相同数字时,游戏完毕,此时会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 游戏 开发 毕业设计 论文