《“2048”手机游戏的设计与实现毕业论文.pdf》由会员分享,可在线阅读,更多相关《“2048”手机游戏的设计与实现毕业论文.pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要目前为止,手机游戏已经慢慢的进入了人们的生活当中,并且重要性在进一 步的提高当中。可以说,随着手机游戏的快速发展,手机游戏已不是单纯的娱乐 了,它已经快转变成了一种特有的文化,具有很强的民族性和丰富的文化内涵。伴随着游戏软件在市场的销售,与其相关的文化也随之传播。2048游戏属于手游市场的益智类游戏。益智类的游戏即是需要思考,而不 是需要游戏时间的堆积来完成游戏的胜利。这一类的益智类游戏可以使玩家在娱 乐中不断的开发大脑。这样一来就实现了在娱乐中学习。该设计是通过对Android的基本分析,实现了游戏2048的开发与设计。在 我们对系统的分析下,基本的确定了系统的相关的功能要求,2048游
2、戏的关卡 设置、游戏的界面设计、屏幕绘制和布局进行了设计,开发出了一个具有挑战性 的2048游戏,让玩家能在游戏中找到挑战的乐趣以及在娱乐中开发自己的大脑 灵活性。关键字:2048手机游戏This document is produced by trial version of Print2Flash.Visit for more information目录1绪论.11.1背景.11.1.1手游的当前应用市场以及发展现状.11.1.2国内国外现状对比.11.1.3课题意义.11.2本章小结.22开发环境的介绍和搭建.32.1开发环境的介绍.32.1.1 JDK 的介绍.32.2开发环境的搭建.
3、32.2.1关于IDK的安装与环境变量配置的介绍.32.2.2 Android SDK 与 Eclipse 的安装与配置.32.2.3 Android虚拟机AVD的配置.32.3本章小结.53系统的需求分析和概要设计.63.1系统需求分析.63.1.1系统功能需求分析.63.1.2游戏基本规则.73.2系统概要设计.73.2.1系统流程的设计.73.2.2系统模块设计.83.3本章小结.114系统实现.124.1初始界面的实现.124.2游戏界面的实现.134.3游戏滑屏卡片移动的实现.144.4重新开始游戏功能的实现.164.6游戏帮助的实现.184.7本章小结.195测试.205.1游戏系
4、统测试.205.1.1游戏流程测试.205.1.2游戏模式.215.2本章小结.226总结与展望.236.1设计总结.236.2展望.23致谢.24参考文献.25This document is produced by trial version of Print2Flash.Visit for more information1绪论该章节主要描述的是对课题的一个大概介绍,其中的主要详情分为该项 目的背景资料及简介、国内国外现状况对比,以及对该项目研究的价值的介绍。1.1背景1.1.1手游的当前应用市场以及发展现状随着科技的进一步发展,手机功能应用的日益完善,由于手机的小巧、便于 操作、携带性
5、,手机在很多方面已经完美地取代了电脑。当今社会Android.iPhone等等手机以及基本上占领了手机的市场位置,并 使得更多应用的推广出现,然而手机游戏应用还是占据着市场的主导地位。现时代,随着Android智能手机的普及以及游戏种类的多元化,使得Android 手机游戏用户规模保持着稳步增长之势-1.1.2国内国外现状对比就当前而言,国内外的Android开发还是主要以企业、通用以及游戏应用等 为主。企业类应用的开发以一些大公司为了自己的品牌为主。通用类应用主要是 一些创业公司及私人盈利用途为主,游戏类应用目前跟通用类应用相同2048游戏时一款目前非常火爆的游戏,它的操作简单行,以及游戏的
6、娱乐 性,使得游戏的热度一度上涨,久居不下。1.1.3课题意义现如今,手机游戏已是我们生活中必不可少的一部分了,并在一步步的稳定 壮大着。发展到如今,手游已经不是当然的一个娱乐产品了,而是慢慢的转化成 了一种文化现象。随着手机游戏软件在市场上的一步步壮大,与其有关的文化也 随之传播。1This document is produced by trial version of Print2Flash.Visit for more information2048游戏属于手游市场的益智类游戏。益智类的游戏即是需要思考,而不 是需要游戏时间的堆积来完成游戏的胜利。这一类的益智类游戏可以使玩家在娱 乐中
7、不断的开发大脑。这样一来就实现了在娱乐中学习。现有2048游戏的最大不足之处,就是它的过于单一化,是一款由纯数字组 成的游戏,所以玩家玩久了之后便很容易就会失去了兴趣,同时在熟知玩法后就 会知道下一个要拼出的数字,这就缺乏神秘感,当一款游戏缺乏了神秘和趣味时 就注定失败。所以我就在这基础上进行了更改,让2048游戏有更丰富的玩法,让2048不只是一个纯数字游戏。另外,现有的2048手游,当玩家拼出2048之 后游戏就会结束,改进后,我会让游戏里的积分没有上限,可以让玩家一直玩下 去,不会有当游戏结束时的那一种失落感,而且可以让玩家更具挑战。1.2本章小结主要是介绍了 2048该游戏的游戏背景,
8、以及手机的应用市场发展现状和 国内外现状两方面来阐述,以及简单的介绍了本课题的意义。2This document is produced by trial version of Print2Flash.Visit for more information2开发环境的介绍和搭建本章是对Android应用开发的开发环境进行简单的介绍以及如何搭建。2.1开发环境的介绍2.1.1 JDK的介绍Java语言的软件开发工具包这里主要用到了 JDK全名为Java Development Kit。其中主要包括了 java基础类库、运行环境以及工具。是为了 java工程程 序员免费开发的开发工具包。2.2开发环
9、境的搭建2.2.1关于JDK的安装与环境变量配置的介绍(1)登录浏览器,从网站上下载JDK1.6或者JDK1.7版本(注意要下载正式版 本)。(2)双击已经下载好的文件安装JDK。(3)配置所需要的java工程的环境变量。2.2.2 Android SDK 与 Ecl ipse 的安装与配置在网上搜索并下载adt-bundle-windows 此文件为巳经集成了 Eclipse和 Android SDK的完整版,已经帮我们配置好了 Android SDK以及Eclipse的环境 变量。2.2.3 Android虚拟机AVD的配置在 Eclipse 中点击 Window-Android Virt
10、ual Device Manager,在弹出的窗口中 点击new按钮,进入到创建的AVD配置窗口,可以创建自己想要的AVD,如图2.1所示:3This document is produced by trial version of Print2Flash.Visit for more information图2.1AVD配置图配置成功之后,选择你所创建成功的AVD,用鼠标点击“stat”按钮,将会 弹出对话框,继续点击Launch按钮,因为AVD是第一次启动,所以时间会比较 的长,需要耐心的等待。开启成功后如图2.2所示:4This document is produced by trial
11、 version of Print2Flash.Visit for more information图2.2 AVD界面图2.3本章小结本章是对Android应用开发所需的开发环境进行简单的介绍和对开发环境如 何搭建进行介绍。5This document is produced by trial version of Print2Flash.Visit for more information3系统的需求分析和概要设计这章主要讲述了系统的需求分析,简单的描述了各个功能模块和游戏的基本 规则,然后是对系统概要设计的介绍。3.1系统需求分析3.1.1系统功能需求分析该项目实现的系统主要有游戏的游戏
12、选择、游戏界面、重新开始新一轮的游 戏、当前分以及最高分数、游戏规则等功能。游戏选择是当点击此按钮时,游戏就会从游戏界面跳转到游戏选择界面,但 点击相应的游戏选择模式时,游戏就会跳转到相应的游戏选择模式,开启新一轮 的征战,重新开始游戏时,游戏会还原成开局时的样子,游戏模式不会随着相应 的改变。游戏帮助界面是为了防止新手玩家不知道其中的规则所设置的一个界 面,让新手快速知道该游戏的规则,体验到游戏里的乐趣。游戏界面是每当游戏 开始是,系统生成一个4*4的表格,并随机生成两个“2”或“4”的数字,方便 开始游戏的进行。当前分数和最高分数则是显示玩家现在所获得的分数以及历史 最高分数,当所获得的分
13、数超过最高分数时,最高分数会随着所获得的分数提高 而提高,如图3.1所示。|2048溶戏|I开靖界面I主界面图3.1系统功能图6This document is produced by trial version of Print2Flash.Visit for more information3.1.2游戏基本规则在游戏开始时,会随机出现两“2”或者“4”,通过方向的滑动,可使得带 数字的卡片移动,当带着相同数字的卡片碰撞在一起时,里面的数字会相加出现 一个新的数字,同时玩家获得积分,通过你的聪明才智来获取更多的积分吧,知 道表格里的数字满了再也不能移动了为止,游戏结束。3.2系统概要设计3
14、.2.1系统流程的设计点击手游应用,进入游戏初始界面,能够进入游戏的开始界面、帮助界面、以及退出游戏。当玩家点击帮助界面时会跳转到游戏的帮助界面,显示游戏的规 则,当点击游戏的开始按钮时,则开始游戏,开始游戏界面中有重新开始、模式 选择以及退出游戏等按钮,点击重新开始时,游戏则会重新开始一局新的游戏,点击模式选择时,则会跳出选择游戏模式的对话框,点击相应的游戏模式,进入 相对应的游戏模式,点击退出游戏则是返回游戏的初始界面,游戏的流程图如图 3.2所示:7This document is produced by trial version of Print2Flash.Visit for mo
15、re information图3.2系统流程图3.2.2系统模块设计从游戏整体来看,可以将该系统划分为三个大模块:“逻辑设计”、“界面 设计”以及“游戏菜单设计”。3.2.2.1游戏菜单设计菜单的实现是在游戏界面实现,可进一步划分为五个模块,分别是:“游戏 攻略”,“开始游戏”,“游戏重来”、“游戏模式选择”、“退出游戏”,如 图3.3所示:图3.3菜单设计8This document is produced by trial version of Print2Flash.Visit for more information3.2.2.2界面设计游戏界面设计可进一步划分为:“主界面设计”,“游
16、戏界面设计”和“游 戏介绍界面设计”,如图3.4所示:_开始游戏分数 帮助游戏区域(a)开始界面(b)游戏界面(c)关卡选择界面 图3.4界面设计3.2.2.3算法设计(1)游戏开始时随机出现两个“2”或者“4”数字,通过滑动屏幕来使它们 合并,每滑动一次随机出现一个新“2”或“4”,相同数字相撞可合并,同时玩 家获得分数点,直到表格数字满了,移动不了啦。游戏结束,如图3.5所示:图3.5简单卡片合成(2)当游戏里有两张卡片里的数字相同的时候,而且在和他们碰撞方向9This document is produced by trial version of Print2Flash.Visit f
17、or more information 处于同一方向且没有其它数字卡片阻拦的他们数字之合的卡片时,向两个相 同数字可以碰撞的方向滑屏使两个数字相撞合并,两个相同的数字将会碰撞在一起合并成他们数字之和的卡片并移动到不能移动的位置,但是合成的卡 片不会和他们数字之合的卡片合并,并且生成一个“2”或“4”的卡片,想 要两个再次合并只能再进行下一步操作。如图3.6所示:图3.6复杂卡片合成(3)当表格当中的数字全满了,并且数字之间没有相邻的两个相同是数字 时,游戏结束。如图3.7所示:10This document is produced by trial version of Print2Flash
18、.Visit for more information图3.7游戏结束3.3本章小结本章主要是讲解了游戏的规则操作以及实现效果,把每一步操作分开来分 析,使得复杂的操作简单化,方便我们的编程进行。11This document is produced by trial version of Print2Flash.Visit for more information4系统实现本章主要是详细介绍每个功能是怎样的实现。4.1初始界面的实现游戏的主界面是按钮图片,其实现了各个界面之间的跳转,当玩家点击不同 的按钮就会调用不同的函数让页面跳转到该相对应的界面开始游戏,如图4.1所 示:public c
19、lass Fist extends A ctivity private Button buttonl;private Button button2;private Button buttons;public void onCreate(Bundle savedInstancestate)super.onCreate(savedlnstanceState);setContentV iewfR.layout.one);buttonl=(Button)fin dV iewById(R.id.buttonl);button2=(Button)findV iewBy!d(R.id.button2)but
20、ton3=(Button)findV iewById(R.id.buttons);buttonl.setO nClickListener(new V iew.O nClickListener()public void onClick(V iew v)Context context=getA pplicationContext();Intent intent=new Intent(context,MinA ctziwity,-loss);startA ctivityf intent););button2.setO nClickListener(new V iew.O nClickListener
21、()public void onClick(V iew v)Context context=getA pplicationantext();Intent intent=new Intent(contextTwo.class);startA ctivityf intent););button3.setO nClickListenerf new V iew.O nClickListener()public void onClick(V iew v)finish();f提12This document is produced by trial version of Print2Flash.Visit
22、 for more information图4.1开始界面4.2游戏界面的实现游戏界面中包括了显示游戏中的当前分数、最高分数、游戏区域、重新开始 按钮、关卡选择按钮,每当跳转到了游戏界面,系统则会调用MainActivity.java 函数所相对应的界面来展示游戏的界面如图4.2所示。protected void onCreate(Hundle savedlnstanceState)super.onCreate(savedlnstanceState);setC onte ntView(R.layout.ac am);13This document is produced by trial ve
23、rsion of Print2Flash.Visit for more information图4.2主界面4.3游戏滑屏卡片移动的实现每当玩家滑动屏幕的时候,主要是通过initGameView函数来监听玩家手指 滑动的位置,先通过获取开始坐标和结束坐标,然后通过比较结束坐标跟开始坐 标的差值来判断玩家是怎样滑动屏幕的。判断出玩家的滑动轨迹后,通过调用 swipeLeft、swipeRight、swipeUp、swipeDown 方法来实现卡片的移动,如图 4.3 所示。14This document is produced by trial version of Print2Flash.Vi
24、sit for more informationprivate void in it Game V iew()setBackgroundolor(0 xff000000);setO nTouchListener(new V iew.O nTouch List ener()private float startXj startY,offsetX,offsetY;O verridepublic boolean onTouch(V iew v,MotionEvent event)/TO DO A uto-generated method stub switch(event.getA ction()c
25、ase Mot io n Eve nt.ACTION_DOly/N:startX=event.getXf);startY=event-getY();break;case MotionEvent.ACTTONUP:offsetX=event.getX()-startX;offsetY=event.getY()-startY;if(Math.abs(offsetX)Math.abs(offsetY)if(offsetX 5)Log-dCwinson,右);toR ightf);else if(offsetY Up();else if(offsetY 5)Log.dfwinson*.下”);toDo
26、wnf);break;default:break;return true;湛return true;15This document is produced by trial version of Print2Flash.Visit for more information 盘其中所调用的toLeft()、toRight。、toUp()、toDown()等方法都是自己创建的方法。图4.3卡片移到4.4重新开始游戏功能的实现当玩家点击重新开始按钮时,系统会弹出一个可供选择的对话框,点击“是”则重新调用游戏卡片的初始值,游戏重新开始如图4.4所示。16This document is produce
27、d by trial version of Print2Flash.Visit for more information public boolean onO ptionsItemSelected(Menuitem item)switch(item.getltemld()case R.id.action_refresh:new A lertDialog.Builder(this).setTitle(uA 头再来”).setMessage(你已经得了 11+MainA ctivity.getWawA ctivity().getScore()+分!n 确定 要重新来过?“).set Negativ
28、e Button(31 消newDialoginterface.O nClickListener()O verridepublic void onClick(DialogInt erface dialogs int which)/TO DO A uto-generated method stub).setPositiveButton(重来,newDialoglnterface.O nCllckListener()I|0O verridepublic void onClick(Dialoginterface dialogs int which)/TO DO A uto-generated met
29、hod stubgameV iew.clea rDat a();gameV iew.5tartGame();)show();以下是 gameV iew.clearDat a();gameV iew.startGame();这两个被调用方法的具体代码public void clearData()for(int y=0;y 4;y+)for(int x=0;x 4;x+)DataUtil.scrveMap(getContext()j xy,0);MainA ctivity.get/JcrinA ctivity().getScore();public void startGame()17This d
30、ocument is produced by trial version of Print2Flash.Visit for more informationMainA ctivity.getNainActivity().clearScore()MainA ctivity.showScore();for(int i=0;i 4;i-H-)for(int j=O;j 4;j+)cardsMapji.setNum(0);addR andomNum();addR andomNum();图4.4重新开始游戏4.6游戏帮助的实现当玩家不知道该游戏的玩法时则点击游戏攻略按钮,进入到游戏规则界面,调用所相对应
31、的函数,并运行所相对应的界面,查看游戏攻略,如图4.7所示。18This document is produced by trial version of Print2Flash.Visit for more information button2.setO nClickListenerfnew V iew.O nClickListenerf)public void onClick(V iew v)Context context=getA pplicationContext();Intent intent=new Intent(context Two.class);startA ctivity
32、fintent););盐I 2048单机版游戏规则I每次控制所有方块向同一个方向 运动,两个相同数字的方块撞在一起 之后合并成为他们的和,每次操作之 后会在空白的方格处随机生成一个2 或者4,最终得到一个“2048”的方块 就算胜利了。如果16个格子全部填满 并且相邻的格子都不相同也就是无法 移动的话,那么恭喜你,gameover。7E图4.7游戏帮助4.7本章小结本章主要阐述本游戏相关功能的实现,详细的讲述了主界面的实现和个按钮 功能的实现。19This document is produced by trial version of Print2Flash.Visit for more i
33、nformation5测试本章主要对系统的功能进行测试,此次的测试只是进行简单的调试,来确定 游戏的各项功能是否能够正常运行。5.1游戏系统测试5.1.1游戏流程测试测试该软件能否正常的切换游戏的界面,进入游戏我们将会看到游戏的开始 界面如图5.1所示,点击开始游戏则进入游戏界面如图5.2所示,点击攻略按钮则进入攻略界面如图5.3所示.图5.1开始界面图5.2游戏界面20This document is produced by trial version of Print2Flash.Visit for more informationil 2048单机版游戏规则每次控制所有方块向同一个方向
34、运动,两个相同数字的方块撞在一起 之后合并成为他们的和,每次操作之 后会在空白的方格处随机生成一个2 或者4,最终得到一个”2048的方块 就算胜利了。如果16个格子全部填满 并且相邻的格子都不相同也就是无 法移动的话,那么恭喜你,gameover。图5.3攻略界面5.1.2游戏模式此次测试主要是测试该项目的功能能否正常的运行,表格里的数字能否滑 动,数字间的运行算法是否实现正确,能否成功切换游戏的模式种类。测试游戏能否正常运行,如图5.4所示:This document is produced by trial version of Print2Flash.Visit for more in
35、formation图5.4游戏是否正常运行测试测试模式选择,如图5.5所示:图5.5模式测试5.2本章小结本章是对游戏系统进行简单的测试,通过测试可以看出此游戏可以正常的工 作,同时一些功能也能够实现。22This document is produced by trial version of Print2Flash.Visit for more information6总结与展望6.1设计总结本文是对Android 2048游戏设计以及实现的一个总的规划,主要是提及了一 个在编写2048游戏手游的一个游戏顺序,这样更加清晰了我的思维,里面的各 种运算让我学到了很多,复杂的运算也是一个个简单
36、的运算相加到一起的,运算 之间的关系是奇妙的。6.2展望虽然该项目已经是一个非常实用的游戏娱乐应用了,颇具玩家们的喜爱,但 是,我发现还有很多不足的地方需要改进,希望我能在之后的日子里把它改进得 更加完善:(1)关卡的选择该游戏没有关卡之类的选择,每次开头都是一样的难度,未免会让玩家失去 兴趣,应该设置各种不同的挑战关卡类型,让玩家感到更具挑战性和可玩性。(2)游戏的挑战性设计将设置一个游戏时间限制关卡,需要在规定的时间内完成所需分数,否则算 作游戏失败,可一步一步解锁更高难度的关卡。23This document is produced by trial version of Print2F
37、lash.Visit for more information致谢将近两个月的时间,在指导老师的帮助下,终于完成了毕业设计,关于此次 毕业设计,我也许多的感触,从最开始的没信心做完整个毕业设计,到后面的越 做越顺,全程离不开我的毕业指导老师刘老师的细心指导,万事开头难,谢谢老 师让我明白了这一个道理,让我对本专业有了进一步的认识。24This document is produced by trial version of Print2Flash.Visit for more information参考文献1 黄彬华.平板电脑程序开发教练.水利水电出版社,20122 李嘉诚.Android的开
38、发与应用.软件导刊,2014,133 崔浩然.Android的设计与实现.西安科技大学,2011.4 王亮.Android手机游戏的设计与实现.北京工业大学,2013.5 陈淮.Android游戏开发的常用类库的设计与实现.西安电子科技大学,2010.6 郭少豪.Android手机应用开发.中国铁道出版社,20117 王琳.Android音频播放系统的设计与实现.吉林大学,2013.8 孟晓龙.Android开发平台的搭建.科协论坛,2011,19 杨云君.Android的设计与实现.机械工业出版社,201310 韩超.Android经典应用程序开发.电子工业出版社,201211 李宁.Android开发完全讲义.中国水利水电出版社,201212 王明超.Android游戏模式研究与设计.电脑知识与技术,2012This document is produced by trial version of Print2Flash.Visit for more information