




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要《2048》小游戏是智能手机上的一款休闲益智游戏,2014年该游戏发布出来后,Android系统上的休闲益智游戏风靡一时,现在,该游戏还推出了关卡模式、朝代模式、六边形模式等。本课题利用Java语言在Android平台上进行开发《2048》这款游戏,并在模拟器和真机上进行运行测试。本人在手机上玩过该游戏,当时便喜欢上了这款游戏,也相信很多人也玩过,后来了解到这款游戏是基于Android平台开发的,所以,本人决定利用自己所学的知识,结合指导老师的帮助,开发一款单机版的《2048》小游戏,该游戏包括记录当前分数,记录最高分数,重新开始,切换模式以及选择菜单等的功能,同时本人还自主创新新模式与设计新模式的通关要求。本文首先通过介绍Java语言的一些基本知识点,而后引申出Android平台的基础及其特点,然后介绍了整个游戏的开发过程,游戏开发完成后,还对游戏的各部分功能模块都进行了不同程度的测试,测试结果一切正常,就目前来说没有发现任何问题。关键字:Java;Android;游戏;益智休闲Abstract2048isakindofleisurepuzzlegameonsmartphones.Afterthegamewasreleasedin2014,therewasaboomofleisurepuzzlegamesonAndroidplatform.Now,thegamehasalsolaunchedthecheckpointmode,dynastymode,hexagonmode,etc.Inthispaper,weusejavalanguagetodevelop2048gamesonAndroidplatform,andrunthemonsimulatorsandrealmachines.I'veplayedthisgameonmymobilephone,andIfellinlovewithitatthattime.Ibelievemanypeoplehavealsoplayedthisgame.Later,IlearnedthatthisgamewasdevelopedbasedonAndroidplatform.Therefore,Idecidedtousemyknowledgeandthehelpofmyinstructortodevelopastand-aloneversionof2048game,whichincludesrecordingthecurrentscoreandthehighestscore,Atthesametime,Ialsoindependentlyinnovatethenewmodeanddesignthecustomsclearancerequirementsofthenewmode.ThispaperfirstintroducessomebasicknowledgepointsofJavalanguage,thenextendsthebasisandcharacteristicsofAndroidplatform,andthenintroducesthedevelopmentprocessofthewholegame.Afterthecompletionofthegamedevelopment,thefunctionalmodulesofeachpartofthegamearetestedtovaryingdegrees,andthetestresultsareallnormal.Atpresent,noproblemshavebeenfound.Keywords:Java;Android;Games;Puzzleleisure目录TOC\o\h\z\u第一章绪论 第一章绪论1.1课题概述随着5G时代的到来,智能手机已经变得十分普及,甚至可以说已经是深入到人们日常生活的方方面面当中。现如今,Android、苹果等拥有智能操作系统的智能手机已经基本占领整个手机市场,从而使得更多移动互联网应用的出现,其中手机游戏应用在其中占领主要的位置[1]。游戏是人们日常生活中,用来娱乐消遣的,而随着5G时代的来临,智能手机性能的提升,手机屏幕的扩大和的分辨率的提高,手机的游戏应用变得十分热门,可以看出,手机游戏行业正处于一个蓬勃发展的阶段。随着时代的改变,《2048》小游戏[2],也从刚开始风靡全球时期的4*4风格的数字模式,一直创新,现如今已出现多种模式的《2048》小游戏[3]。此次本人的毕业设计便是从《2048》小游戏的创新演化得到的启示,这是一款具有个人特色的2048益智休闲小游戏。该游戏是使用JAVA语言,通过简单和易操作的Android平台开发的,并且该游戏集数字模式和人生模式于一身,使游戏即可以通过数字叠加来开动大脑,又可以通过人生阶段的进步激励自己,玩家开动大脑,制定战略来取得更高的分数更好的成绩,更是让用户能够在随时随地都能够放松心情和娱乐身心,充分展示了在娱乐中学习的理念。1.2涉及技术和理论基础1.2.1Java语言Java是由SunMicrosystems公司推出的Java面向对象程序设计语言(以下简称Java语言)[4]。Java语言从它被开发出来以后就被很多开发人员所接受,这也是JAVA语言能发展迅速的原因[5]。图1-1Java图标1.2.2Android操作系统Android操作系统是一种以Linux与JAVA为基础的开放源代码的操作系统,主要使用于便携设备[6]。图1-2Android图标1.3国内外发展现状1)Java:Java是一门计算机的面向对象编程语言,它具有功能强大和简单易懂两个特点。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以简单的思维方式进行复杂的编程[7]。Java语言是一门非常高效自由的计算机语言,现阶段来讲,Java语言的发展已经相当成熟,并且以Java为开发语言的平台的研发日益增多,受到很多国内外编程研发工作人员的欢迎。随着IT产业的发展,许多企业中的计算机应用程序也在随之转型,企业中所应用的计算机模式逐渐向客户端较小、服务器随之增大、数据库的容量也在相应增加的方向转变。因此,由于Java语言独有的特点,根据其在各项服务器中应用程序的开发所占有的优势,不少企业环境中计算机模式的应用也受益于企业版的J2SE,而J2SE也为它们提供了良好的平台[8]。2)Android:Android系统技术主要用来做产品应用在移动端安卓平台的开发测试,升级维护等工作。Android系统无疑是占据手机系统市场最大的系统,从它的发布到普及,再到现在的走在手机系统行业的前端,Android系统用了不到10年的时间,由于它系统本身技术的智能化,低廉的价格,以及出色的性能,Android系统的发展才能与时俱进,做到该领域的领头羊。据资料显示,截止至2015年的年底,搭载Android系统的智能手机在中国手机市场已经超过了80%,是目前国内市场份额最大的手机操作系统[9]。同样的来看国外的手机市场,Android市场份额在预期周期内,将从今年的81%微增长至82%。Android技术人员的可观形势得益于安卓手机的低成本,直接形成了八成的手机市场占有额。庞大的用户群体下,对产品的需求上来了,产品应用的开发和维护等工作需要更多的技术人员参与其中。3)游戏:随着中国经济的蓬勃发展,现如今人均收入大幅度提升,每家每户都过上了好日子。现在,几乎所有人都能用上一般的电子产品,无论是台式电脑还是笔记本电脑,还是液晶电视,平板电脑,手机等等,在现在的每一户家庭中都能看见。最为普遍的还是手机,移动设备行业发展迅速的同时,移动设备的价格也越来越亲民,这也是手机越来越普遍的原因之一。由于移动设备行业的发展,游戏行业被推动发展,游戏种类也变得越来越丰富,甚至还有很多游戏是种类混搭,使得游戏更具有可玩性,更能吸引玩家们的眼球,游戏已成为人们生活中的一种娱乐休闲方式。现代人对于休闲娱乐活动的需求越来越大,这也是游戏行业发展迅速的原因。经过本人的了解发现,通过用户下载热度以及评价,游戏的游玩时间和测试分析都表明,国内国外游戏开发商在基于Android平台的游戏开发上,两者无论是在技术水平上,还是游戏内容上,差距都比较大。根据游戏市场数据的分析,热门的手机游戏基本上都是国外游戏公司所开发的,国内开发则略显不足。当然也不是所有的国内游戏都比不上国外的游戏,一些国内的中国风游戏也很受世界各地玩家的称赞和喜爱。所以,本人希望国内的Android游戏开发者能知己知彼,百战百胜,争取在手游行业慢慢进步,逐渐超越国外的游戏开发商。1.4本文的结构安排本论文一共由7个章节组成,结构安排及主要内容如下:第一章,绪论,介绍课题的背景、主要研究内容和研究意义,并对相关技术以及游戏现状做简要分析;第二章,开发环境的介绍和搭建,简单介绍了课题所需要的JAVA语言和Android所需要的开发环境以及如何构建;第三章,系统分析,针对游戏所需要的游戏功能进行系统分析和功能分析;第四章,系统设计,利用系统流程图和游戏流程图分析和设计游戏各个功能模块;第五章,游戏的实现,在Android平台上利用JAVA语言开发2048游戏的主要代码和讲解;第六章,游戏测试,利用虚拟机以及真机,对游戏进行不同功能模块的分析和测试,以及测试之后的结果;第七章,总结与展望,总结设计,得出结论,发表本人此次毕业设计的收获和体会,同时指出整个设计工作的不足之处和需要改进的地方。第二章开发环境的介绍和搭建2.1开发环境的介绍2.1.1JDK的介绍JavaDevelopmentKit(JDK)是Java语言的软件开发工具包。JDK是Java的核心,JDK主要包括了Java基础类库、Java运行环境以及Java工具[10]。2.1.2Eclipse的介绍Eclipse是一个基于Java语言和开源的开发平台,随着时代的发展,Eclipse也可以开发一些其他的计算机语言。2.1.3AndroidSDK的介绍AndroidSDK指的是Android专属的软件开发工具包。2.2开发环境的搭建2.2.1JDK的安装与环境变量配置1)下载JDK1.8版本。2)打开下载的文件安装JDK。3)安装JDK需要配置环境变量,具体步骤:右击“我的电脑”→“属性”→“高级系统设置”→“高级”→“环境变量”。接着设置系统变量:“系统变量”→“新建JAVA_HOME变量
”,在变量值中填入JDK的安装路径;接着新建classpath变量,变量值设为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar,然后双击“系统变量”中存在的path在弹出的对话框中添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;,最后运行cmd,输入java-version,若如图2-1所示,则说明安装和配置成功[9]。图2-1JDK配置成功java-version截图2.2.2Eclipse与AndroidSDK的安装与配置1)Eclipse:搜索Eclipse官网并点击进入。点击DOWNLOAD64BIT按钮,选择较为接近的地区的镜像进行安装,点击页面Download按钮进行下载,打开下载好的安装器,点击INSTALL进行安装。2)AndroidSDK:开发Android应用程序,需要下载AndroidSDK(SoftwareDevelopmentKit)和在Eclipse上安装ADT插件。首先,下载AndroidSDKTools,可以去GoogleAndroid的官网上下载,也可以去/网站下载。首先打开网址,找到SDKTools,选择最新的版本下载。双击“SDKManager.exe”,启动SDKManager。选择合适的AndroidSDKTools以及AndroidSDKPlatform-tools和AndroidSDKBuild-tools。最后一步,环境变量的配置,这里需要把”\platform-tools“和”\tools”路径追加到系统环境变量Path中:首先,新建一个系统环境变量,变量名为ANDROID_SDK_HOME,变量值为SDK安装路径,然后就是在系统的Path变量后,追加:;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools,最后检验一下AndroidSDK是否安装成功:在命令行窗口中输入“adbversion”,若出现图2-2,则安装成功[11]。图2-2AndroidSDK配置成功adbversion截图2.2.3为Eclipse安装ADT插件首先打开Eclipse软件,单击菜单中的“Help”,选择“InstallNewSoftware…”,单击“InstallNewSoftware…”后,弹出“Install”窗口,然后单击“Add”按钮,弹出“AddRepository”窗口后,输入以下信息:Name(ADT),Location(/android/eclipse/),然后单击“OK”按钮,在弹出的对话框选择要安装的工具,然后下一步就可以了,待一切安装好后,重启Eclipse,然后,Eclipse会根据目录的位置智能地和相同目录下AndroidSDK进行关联,可以通过选择菜单项“Window”然后单击Preference来查看。选择侧栏的“Android”,然后如果可以看到已经安装的SDK平台,表示已经自动关联好了,如果发现没有自动关联好,则需手动添加,单击“Browse…”按钮,选择SDK安装路径,进行添加,这样就已经完成为Eclipse安装ADT插件的操作了[12]。2.2.4外部虚拟机的连接考虑到eclipse上面基于Android的内部AVD虚拟机较为卡顿,本人在该项目中使用的是外部的mumu模拟器,需要打开mumu模拟器的下载路径emulator\nemu\vmonitor\bin,找到adb_server.exe,并打开运行,最后运行cmd,输入adbconnect:7555(时本机ip地址,7555是mumu模拟器的本机端口号),显示connect即为连接外部虚拟机成功。第三章系统分析本人打算设计的游戏应该满足基本的游戏需求,操作界面首先一定要简洁明了,用户能一目了然,并且规则说明简单易懂,游戏操作方便。下面开始分析游戏系统流程:游戏开始:游戏界面任意位置出现2个值,数字模式时出现的数字分别为2或者4,随机数2和4的比例为9:1;人生模式时,出现的2个随机值均为“会说话”。游戏结束:当4*4的棋盘上所有卡片位置被填满,并且相邻位置的值不相同,无法进行位移或合并。游戏模式:第一种为数字模式,数字模式也可以称为无尽模式,只有符合游戏结束的规定时才会结束;另一种为人生模式,当游戏进行到任意卡片出现“人生巅峰”时,游戏胜利。随机数据:玩家可以通过手指在手机屏幕上进行单次的上下左右四个方向中其中一个方向进行滑动,若棋盘上数字或者文字出现位移或合并,即会通过代码分析为有效移动,并且在棋盘格的随机的卡片位置出现新的随机数据。分数显示:每当有合并时,便将合并所得数字累计到当前分数上,并且比较当前数字和最高分,如果当前得分大于最高分,则更新最高分并显示。3.1系统功能描述2048游戏设计功能模块说明:A.界面布局B.游戏实现C.模式切换:普通数字模式、人生模式D.当前分、最高分E.重新开始F.菜单设置
第四章系统设计4.1游戏主要流程游戏的主要流程图,如图4-12048游戏流程图。首先进入游戏,便是游戏界面,再一一介绍,本人设计的这款2048小游戏,包括模式切换,其中游戏模式包括,普通的数字模式,其次便是人生模式;当前得分:游戏进行的同时,系统会通过玩家的操作来记录分数,计算并给出当前分数;最高分:系统会记录玩家每次的游戏得分情况,分析并给出最高分,当玩家当前分突破最高分,则会刷新最高分并显示;重新开始:重绘界面;设置:设置里包括帮助,关于以及退出,其中游戏本身也包括双击返回键退出游戏。图4-12048游戏流程图4.2游戏流程结构图以及功能截图4.2.1界面布局如图4-2界面设计流程图。图4-2界面设计流程图如4-3数字模式和4-4人生模式界面布局截图: 图4-3数字模式 图4-4人生模式游戏界面主要编写在GameView类,界面分为上下2个部分用一个线性布局包裹起来,上面部分用相对布局来存放模式切换的ImageView、显示当前得分、最高分和重新开始按钮。下面部分使用了网格布局,用来显示游戏的主界面模块。当前得分、最高分的文字和所得的分数的显示用线性布局包裹起来。其中GameView类中还编写了游戏结束、游戏结束时再来一次所需要的代码。4.2.2游戏逻辑介绍如图4-5游戏实现设计流程图,在整个游戏的设计之前,本人会先进行游戏的逻辑分析,游戏本身是怎么运行的,需要运用到什么代码逻辑,再进行代码的编写,当然在这期间也是要进行逻辑的分析的,最后,代码编写完毕后,再进行游戏的逻辑实现。图4-5游戏实现设计流程图游戏逻辑分析:根据该游戏的游戏的流程,各项功能设计的要求以及功能模块的划分,对游戏的逻辑结构进行分析,得出如图4-62048游戏逻辑流程图。图4-62048游戏逻辑流程图如图4-62048游戏逻辑流程图。由本人来简单介绍一下整个游戏的逻辑:首先进入游戏,便是可以开始游戏的主界面,若是不进行模式切换(可以切换数字模式或者人生模式),则进行游戏,在游戏的4*4的棋盘格上会随机出现2个数字,2或者4,玩家通过触摸屏幕,选择上下左右其中一个方向进行滑动,并通过位移进行卡片上数字的合并,滑动方向后,系统会判断同一方向上相邻的值是否相同,若是,则两个值结合,再在棋盘格上随机生成两个值(数字模式为2或4,人生模式为“会说话”或“会走路”),玩家继续操作,合并的同时,系统记录当前分数,若当前分数大于最高分,刷新最高分,若同一方向上相邻的值不相同,系统将判断棋盘格上是否有空格,有空格的话,数字模式会继续生成随机数,人生模式会判断棋盘格上是否出现“人生巅峰”,若出现,则该模式游戏胜利,没有出现则继续游戏,生成随机值,数字模式和人生模式没有空格的话均会游戏结束;游戏界面还包括菜单设置,帮助,则是教导玩家游戏如何操作,关于,游戏的创作者,退出,点击则退出游戏,也可以双击返回键退出游戏。整个游戏的逻辑实现主要是编写在MainActivity类,其中也会调用其他类的方法。4.2.3模式切换如图4-7模式切换设计流程图。图4-7模式切换设计流程图编写的模式切换代码是位于MainActivity类,点击模式切换的图片,则会提示是否模式切换,如图4-8模式切换的截图。点击“是”按钮则切换模式,游戏将会重新开始,点击选项外的屏幕或点击“否”按钮则继续当前的游戏。图4-8模式切换截图4.2.4当前分、最高分如图4-9当前分、最高分设计流程图。图4-9当前分、最高分设计流程图编写的当前分、最高分的记录是在BestScode类当中,其中MainActivity类中调用来显示当前分与最高分。在主界面的右上方则是当前分数以及最高分的显示,当前分显示当前玩家的分数,最高分则是玩家历史最高分,当前分大于最高分则刷新最高分的显示,如图4-10当前分、最高分的截图。图4-10当前分、最高分截图4.2.5重新开始如图4-11重新开始设计流程图。图4-11重新开始设计流程图图4-12重新开始图4-12为重新开始按钮,编写的重新开始的代码记录是在MainActivity类当中,当点击重新开始这个按钮时,系统会弹出提示框“你好”:“是否重新开始”如果点击“否”,则回到应用不做任何操作,如果点击“是”,则调用开始游戏的方法,将会重新开始游戏,重绘游戏界面。4.2.6菜单设置如图4-13菜单设置流程图。图4-13菜单设置流程图图4-14菜单设置图4-14为菜单设置的截图,首先要编写一个菜单设置的代码,则需要新建一个新的界面布局文件,命名为menu.xml,里面存放3个item,分别是帮助,关于和退出。帮助,则是教导玩家游戏如何操作,关于,游戏的创作者,退出,点击则退出游戏,也可以双击返回键退出游戏。第五章游戏的实现5.1界面布局实现本人开发的这款《2048》小游戏游戏主要采用LinearLayout(线性布局)、RelativeLayout(相对布局)、GridLayout(网格布局)[13]。首先游戏界面主要分为上下2个部分用一个线性布局包裹起来,上面部分用相对布局来存放模式切换的ImageView、显示当前得分、最高分和重新开始按钮。下面部分使用了网格布局,并将其与GameView类绑定,用来显示游戏的主模块。当前得分、最高分的文字和分数显示用线性布局包裹起来,其中圆角样式是通过设置线性布局的背景android:background="@drawable/circular"调用一个名为circular.xml的文件,设置程序的背景颜色和圆角半径[14]。5.2主要操作的代码实现卡片类:用来显示卡片的文本以及背景颜色,其中分为2种情况,数字和文字,数字不同显示的文本以及背景颜色就不同,获取模式type,inttype=MainActivity.getMainActivity().getType();当type为0时,卡片上显示数字,type为1时,卡片上显示文字。位于Card类:publicvoidsetNum(intnum){ this.num=num; Stringtext=""; switch(num){ case0: text=""; label.setBackgroundColor(Color.rgb(204,192,179)); break; case2: text="会说话"; label.setBackgroundColor(Color.rgb(238,228,218)); break; case4: text="会走路"; label.setBackgroundColor(Color.rgb(237,224,200)); break; case8: text="幼儿园"; label.setBackgroundColor(Color.rgb(242,177,121)); break; case16: text="学前班"; label.setBackgroundColor(Color.rgb(244,149,99)); break; case32: text="小学"; label.setBackgroundColor(Color.rgb(245,121,77)); break; case64: text="初中"; label.setBackgroundColor(Color.rgb(245,93,55)); break; case128: text="高中"; label.setBackgroundColor(Color.rgb(235,226,71)); break; case256: text="大学";; label.setBackgroundColor(Color.rgb(238,181,83)); break; case512: text="研究生"; label.setBackgroundColor(Color.rgb(236,176,77)); break; case1024: text="博士生"; label.setBackgroundColor(Color.rgb(235,148,55)); break; default: text="人生巅峰"; label.setBackgroundColor(Color.rgb(234,120,33)); break; } if(num<=0){ label.setText(""); }else{ label.setText(num+""); inttype=MainActivity.getMainActivity().getType(); if(type==0){ label.setText(num+""); }else{ label.setText(text); } } }添加随机数:首先定义一个动态数组emptyPoints来存放棋盘格上空框的坐标,遍历棋盘格上所有位置,当每个棋盘格上的数字小于或等于0时,将该坐标写入emptyPoints数组中。并且每次在进行这些操作前,必须先清空emptyPoints的数据,重新遍历添加,当type等于1时,卡片设置的数字都为2(代表文字“会说话”),否则根据1:9的比例设置数字4和2。位于GameView类:触控交互:该游戏主要通过玩家用手指滑动手机的屏幕,判断玩家的意图与图形的走向。首先,定义一个起始位置横坐标:startX,一个起始位置纵坐标:startY,手指滑动横坐标方向上的位移:offsetX,手指滑动纵坐标方向上的位移:offsetY。通过onTouch方法判断滑动方向[15]。数字合并:不同的滑动方向,执行不同的遍历顺序,以左上角第一个格子为起始点,自左向右,自上而下每个格子的坐标分布如图5-4坐标分布图。图5-4坐标分布图以向右滑动为例:每一行每一行地遍历,首先从第一行开始遍历,如果第一行数据如下,2222→2204→2024→0044:则从右向左开始遍历,首先用下标为3的数字和前面3个数字进行比较,以此类推。位于GameView类:privatevoidswipeRight(){ booleanmarge=false; for(inty=0;y<4;y++){ for(intx=3;x>=0;x--){ for(intx1=x-1;x1>=0;x1--){ if(cardsMap[x1][y].getNum()>0){ if(cardsMap[x][y].getNum()<=0){ cardsMap[x][y].setNum(cardsMap[x1][y].getNum()); cardsMap[x1][y].setNum(0); x++; marge=true; }elseif(cardsMap[x][y].equals(cardsMap[x1][y])){ cardsMap[x][y].setNum(cardsMap[x][y].getNum()*2); cardsMap[x1][y].setNum(0); MainActivity.getMainActivity().addScore( cardsMap[x][y].getNum()); marge=true; } break; } } } } if(marge){ addRandomNum(); checkComplate(); } }5.3模式切换代码实现设置一个整数类型参数type,默认为0,将数字模式记为0,人生模式记为1,当点击模式切换按钮时,便弹出提示框如果点击否,则不做任何操作,如果点击是,则切换“模式切换”背景图,重新设置type,并重绘界面。位于MainActivity类:5.4当前分、最高分的代码实现位于BestScode类:当前得分:每当有卡片上数字或文字的合并时,将会把当前卡片合并所得的分数进行累计,并显示在当前分数的布局上。而且每一次游戏重新开始时,会将当前分数清空为0重新统计分数。最高分:首先新建一个BestScore类来存放数据信息1)打开Preferences,名称为setting,假如存在的话则会打开它,否则将会创建新的Preferences[16]。2)让setting处于编辑状态:Editoreditor=sp.edit();3)存放数据:editor.putInt("bestscode",bestScode);4)完成提交:mit();再在MainActivity主类中读取数据信息,取出数据currentBestScore=bs.getBestScode();最后把当前分数的数据和最高分的数据进行对比,如果当前分数的数值大于最高分的数值,则会更新最高分,并把该数值在最高分的布局上显示出来。5.5重新开始的代码实现位于GameView类:5.6菜单设置代码menu.xml:调用Activity中编写的onCreateOptionsMenu方法,引用上一章所说的的文件menu.xml布局,添加菜单设置选项。菜单项监听:只要菜单中的菜单项被点击,便触发onOptionsItemSelected(MenuItemitem)点击事件,item参数即为被点击的菜单项。通过id判断点击了哪个菜单项,三个菜单分别使用了三种显示方法[13]。当点击帮助按钮时,调用AlertDialog.Builder方法创建一个对话框,setTitle:为该对话框设置标题;setMessage:为对话框设置内容;setPositiveButton:给对话框添加"我明白了"按钮,点击后返回原页面[13]。当点击关于按钮时,则调用简易的消息提示框Toast,提示关于的相关信息。当点击退出按钮时,调用MainActivity.this.finish();的方法来关闭程序。位于MainActivity类:5.7手机返回键事件首先设置一个反应时间exitTime,调用一个按键点击事件onKeyDown,当玩家打算退出游戏时,第一次按下返回键,提示"再按一次退出程序",再按下返回键便退出游戏,当两次按键时间间隔不超过2000毫秒时,则程序退出[15]。位于MainActivity类:第六章游戏测试6.1测试分析本次游戏设计是让玩家能够在任意环境任何时间,只要Android手机在手就能玩的一款单机游戏,游戏有普通数字模式和人生模式。普通模式为无尽版,只要没有满足失败的条件就可以一直玩,而人生模式是玩出“人生巅峰”则游戏胜利。玩家可以通过手指触摸屏幕,进行上下左右的滑动来对棋盘上的数字或者事件进行叠加。1)数字模式:游戏开始时棋盘格会在随机的卡片位置出现2个随机数。而且随机数只可能是2和4,并且出现的概率为1:9。人生模式:游戏开始时棋盘格会在随机位置,出现2个“会说话”。2)在某一滑动方向上,如果有相邻2个相同的数字或者事件,就会合并,并且在合并的同时将合并所得数字叠加到当前分数上,而且在棋盘格上任意卡片出现一个随机数。3)当棋盘格上没有空框并且每个数字各个方向相邻的数字或事件都不相同时,游戏结束,屏幕弹出“你好,游戏结束。”,并且点击弹出框上的“再来一次”,可重新开始一盘新的游戏。4)数字模式:棋盘格上有数字2048,并且没有满足游戏结束规则时,游戏仍然可继续。人生模式:当棋盘格上的卡片通过玩家的合并出现“人生巅峰”时,则游戏胜利,屏幕将会弹出提示框“游戏胜利,你走向人生巅峰了!”,并且点击弹出框上的“再来一次”,可重新开始一盘新的游戏。6.2测试计划根据测试分析制定一个简单的测试计划:1)游戏开始测试:多次开启游戏,观察每一次开启游戏,在数字模式下棋盘格是否有且仅有2个数字,并且对每次出现的数字位置以及数据进行统计分析,观察数字出现的卡片位置是否随机,是否以1:9的概率出现4或者2;在人生模式下,棋盘格是否只出现“会说话”。2)游戏滑动、合并测试:分别在上下左右四个方法对对棋盘格上的数字进行移动,观察棋盘格的数字的移动或者叠加是否符合游戏规则。3)游戏结束测试:当棋盘格上所有卡片位置被填满,并且无法移动卡片位置上的数据时,是否会弹出游戏结束的提示框。4)游戏胜利测试:人生模式下,当出现“人生巅峰”时是否会弹出提示框,提示游戏胜利。5)重来功能测试:点击“再来一次”,游戏界面重绘。6)退出游戏功能测试:测试点击一次返回键的情况,游戏是否会提示“再点一次返回键退出”而不会退出;测试点击两次返回键,若这两次点击时间间隔较长,游戏是否会退出;测试当出现快速点击两次返回键,游戏是否退出。6.3测试结果1)游戏开始测试:表6-1测试结果卡片数字或文字出现位置4在数字模式随机出现次数(100次)2在数字模式随机出现次数(100次)随机8922)游戏滑动、合并测试:多次测试后,符合游戏规则。3)游戏结束测试:图6-1模式切换截图4)游戏胜利测试:图6-2游戏胜利截图5)重新开始功能测试:重复多次重新开始的操作,没有任何代码报错与应用错误。6)退出游戏功能测试:打开菜单设置,点击退出按钮可退出游戏,点击返回键一次提示“再点一次返回键退出”而游戏没有退出,点击返回键两次也可以进行退出游戏的操作,多次进行退出游戏操作没有异常问题,代码也没有报错。在执行测试计划,记录并分析测试的数据后,结果表明:程序运行一切正常,程序代码也没有任何报错。第七章总结与展望在本次的毕业设计中,我在Android平台上,使用Java语言来实现一个小游戏的开发,这也是我上课学习中运用最多的语言之一。《2048》这个游戏虽然看似简单,但是如果要深入剖析整个游戏流程,也是需要花费一定的时间以及精力的。还记得这个游戏刚推出的时候,我就已经玩过尝试过这款游戏,所谓“知己知彼,百战百胜”,深入了解整个游戏的流程对我开发这款游戏有很大的帮助。在熟悉了整个游戏的玩法流程之后,我便开始对整个游戏流程进行拆分与剖析,琢磨界面的设计、用户意图的获取、游戏逻辑的实现。游戏在开发的过程当中,各种各样的问题层出不穷,不过在指导老师的耐心指导下,多次进行修改和改进代码之后,问题才得以解决。经过一段时间的学习与积累,最终还是把游戏开发完成了,由于我的知识匮乏,技术有限,并且因为疫情的原因,时间不够充裕,所以做出来的游戏较为简单,不过能完成自己的第一款游戏我还是替自己感到开心的。虽然我开发的这款游戏的开发能为用户提供了一个很好的休闲益智的作用,但是仍然有很多可以开发的模块:1)新模式的开发:我开发的这款游戏只有数字和汉字,整体来说比较单调,所以当玩家总是一直面对数字和汉字时难免会有些许枯燥,我觉得后期改善这款游戏可以将显示的卡片换成图片或者一些3D动态人物等,这样玩家就会眼前一亮,游戏整体也会变得生动有趣。2)联机挑战:推出联网模式,在一定的时间内对比出玩家的分数高低来比较输赢,赛后会有结算奖励,增添游戏的竞技性跟互动性。3)全网排名:有了联机挑战,那当然要有全网排名了,这次比较遗憾的就是这个排名系统了,由于时间的关系,没有加入此模块,毕业设计后我会利用搜学的数据库知识,服务器知识,进行该模块的开发,进行游戏的完善。通过这次的毕业设计,我对Java语言和Android平台的开发有了更深入的了解,能较为熟练地结合两者进行一些简单程序的开发了,也学到了不少知识,受益匪浅。今后我一定会更加努力地学习编程,并且咋爱这个过程中做到举一反三,在实践中学习是获取知识最好的方法,所以我以后打算勤打代码,多做些项目,让我拥有更大的进步空间,在以后的工作里更加的顺风顺水。
参考文献[1]余平,张建华,Android基础教程,水利水电出版社,2013-07[2]2048网页小游戏,/flash/133861_3.htm[3]沈旭.,基于Android的2048手机游戏App设计与实现[J],计算机时代,2017:29-31[4]赵景晖,迟勇,Java程序程序设计[M],大连理工大学出版社,2008;[5]明日科技,Java从入门到精通(第3版),清华大学出版社[6]Android_360百科,/doc/456230-483111.html[7]李刚,疯狂Java讲义(第2版):电子工业出版社,2014:2[8]Java(计算机编程语言):/item/java/85979[9]应桂芬,浅谈安卓系统的应用现状和发展;[10]jdk(SunMicrosystems针对Java开发员的产品):/item/jdk/1011;[11]JDK安装与环境变量配置:/gufengchen/p/11038029.html[12]PandeyG,DaniD.Androidmobileapplicationbuildoneclipse[J].InternationalJournalofScientificandResearchPublications,2014[13]李华明,Android游戏编程之从零开始,清华大学出版社,2011-10[14]2012-09-01刘文斌,AndroidUI基础教程,人民邮电出版社出版,2012-10[15]郭少豪.创意之钥:Android手机交互应用开发[M].北京:中国铁道出版社,2011,230-256[16]sharedPreference的用法,/s/blog_7ab107b00100u78t.html
致谢受到疫情的一定影响,历时将近三个月的时间,我终于将这篇论文完成。在论文的写作过程中我遇到了各种各样的困难和阻碍,在老师和同学的帮助下,一一化解了。尤其要感谢我的指导老师--冯伟平老师,在老师的帮助与指导下,我才能更好地理解整个项目,还不厌其烦地帮助我进行论文的修改和改进。另外,在校的时候,感谢我的同学,充当游戏玩家,帮我试玩游戏,提出他们的一些体验、看法以及修改建议,让我的游戏更加的完善,他们给予我很大的支持与帮助。在此向指导我的老师和帮助我的同学表示最衷心的感谢!感谢我父母对我自出生以来的教导,是他们教会我如何为人处世,以及不图回报的付出,他们对我学业上的支持,让我可以毫无顾忌地向前迈进。我希望我能像自己做的这款游戏里的人生模式一样,再接再厉,走向人生巅峰!感谢这篇论文所涉及的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。由于我的知识以及学术水平有限,论文难免有不足之处,恳请各位老师和学友批评和指正!
电脑不启动故障诊治了解电脑启动的过程在诸多电脑故障中,无法正常启动是最令用户头痛的事了。笔者长期从事维护电脑的工作,在这个方面积累了一些经验,现在就将这些经验整理归纳出来与朋友们分享。本文将以家用电脑和windows98操作系统为基础,介绍电脑无法正常启动故障的诊治。要想准确地诊断电脑不启动故障,首先要了解的起动过程,当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还没有完全稳定,主板控制芯片组会根据CMOS中的CPU主频设置向CPU发出一个Reset(重置)信号,让CPU初始化,电压完全稳定后,芯片组会撤去Reset信号,CPU马上从地址FFFF0H处执行一条跳转指令,跳到系统BIOS中真正的启动代码处。系统BIOS首先要做的事情就是进行POST(PowerOnSelfTest,加电自检)。POST的主要任务是检测系统中的一些关键设备(电源、CPU芯片、BIOS芯片、定时器芯片、数据收发逻辑电路、DMA控制器、中断控制器以及基本的64K内存和内存刷新电路等)是否存在和能否正常工作,如内存和显卡等。自检通过后,系统BIOS将查找显示卡的BIOS,由显卡BIOS来完成显示卡的初始化,显示器开始有显示,自此,系统就具备了最基本的运行条件,可以对主板上的其它部分进行诊断和测试,再发现故障时,屏幕上会有提示,但一般不死机,接着系统BIOS将检测CPU的类型和工作频率,然后开始测试主机所有的内存容量,内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,这些设备包括:硬盘、CD-ROM、软驱、串行接口和并行接口等连接的设备,大多数新版本的系统BIOS在这一过程中还要自动检测和设置内存的相关参数、硬盘参数和访问模式等。标准设备检测完毕后,系统BIOS内部的支持即插即用的代码将开始检测和配置系统中已安装的即插即用设备。每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。最后系统BIOS将更新ESCD(ExtendedSystemConfigurationData,扩展系统配置数据)。ESCD数据更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动。以从C盘启动为例,系统BIOS将读取并执行硬盘上的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责读取并执行IO.SYS,这是Windows最基本的系统文件。IO.SYS首先要初始化一些重要的系统数据,然后就显示出我们熟悉的蓝天白云,在这幅画面之下,Windows将继续进行DOS部分和GUI(图形用户界面)部分的引导和初始化工作,一切顺利结束,电脑正常启动。根据故障现象诊治了解电脑启动的过程,故障就好判断了,下面我们就根据故障现象开始诊治了:现象一:系统完全不能启动,见不到电源指示灯亮,也听不到冷却风扇的声音。这时,基本可以认定是电源部分故障,检查:电源线和插座是否有电、主板电源插头是否连好,UPS是否正常供电,再确认电源是否有故障,最简单的就是替换法,但一般用户家中不可能备有电源等备件,这时可以尝试使用下面的方法(注意:要慎重):先把硬盘,CPU风扇,或者CDROM连好,然后把ATX主板电源插头用一根导线连接两个插脚(把插头的一侧突起对着自己,上层插脚从左数第4个和下层插脚从右数第3个,方向一定要正确),然后把ATX电源的开关打开,如果电源风扇转动,说明电源正常,否则电源损坏。如果电源没问题直接短接主板上电源开关的跳线,如果正常,说明机箱面板的电源开关损坏。现象二:电源批示灯亮,风扇转,但没有明显的系统动作。这种情况如果出现在新组装电脑上应该首先检查CPU是否插牢或更换CPU,而正在使用的电脑的CPU损坏的情况比较少见(人为损坏除外),损坏时一般多带有焦糊味,如果刚刚升级了BIOS或者遭遇了CIH病毒攻击,这要考虑BIOS损坏问题(BIOS莫名其妙的损坏也是有的),修复BIOS的方法很多杂志都介绍过就不重复了;确认CPU和BIOS没问题后,就要考虑CMOS设置问题,如果CPU主频设置不正确也会出现这种故障,解决方法就是将CMOS信息清除,既要将CMOS放电,一般主板上都有一个CMOS放电的跳线,如果找不到这个跳线可以将CMOS电池取下来,放电时间不要低于5分钟,然后将跳线恢复原状或重新安装好电池即可;如果CPU、BIOS和CMOS都没问题还要考虑电源问题:PC机电源有一个特殊的输出信号,称为POWERGOOD(PG)信号,如果PG信号的低电平持续时间不够或没有低电平时间,PC机将无法启动。如果PG信号一直为低电平,则PC机系统始终处于复位状态。这时PC机也出现黑屏、无声响等死机现象。但这需要专业的维修工具外加一些维修经验,因此,建议采用替换法;电源没有问题就要检查是否有短路,确保主板表面不和金属(特别是机箱的安装固定点)接触。把主板和电源拿出机箱,放在绝缘体表面,如果能启动,说明主板有短路现象;如果还是不能启动则要考虑主板问题,主板故障较为复杂,可以使用替换法确认,然后更换主板。现象三:电源指示灯亮,系统能启动,但系统在初始化时停住了,而且可以听到嗽叭的鸣叫声(没有视频):根据峰鸣代码可以判断出故障的部位。ccid_page/AwardBIOS1短声:说明系统正常启动。表明机器没有问题。2短声:说明CMOS设置错误,重新设置不正确选项。1长1短:说明内存或主板出错,换一个内存条试试。1长2短:说明显示器或显示卡存在错误。检查显卡和显示器插头等部位是否接触良好或用替换法确定显卡和显示器是否损坏。1长3短:说明键盘控制器错误,应检查主板。1长9短:说明主板FlashRAM、EPROM错误或BIOS损坏,更换FlashRAM。重复短响:说明主板电源有问题。不间断的长声:说明系统检测到内存条有问题,重新安装内存条或更换新内存条重试。AMIBIOS1短:说明内存刷新失败。更换内存条。2短:说明内存ECC较验错误。在CMOS中将内存ECC校验的选项设为Disabled或更换内存。3短:说明系统基本内存检查失败。换内存。4短:说明系统时钟出错。更换芯片或CMOS电池。5短:说明CPU出现错误。检查CPU是否插好。6短:说明键盘控制器错误。应检查主板。7短:说明系统实模式错误,不能切换到保护模式。8短:说明显示内存错误。显示内存有问题,更换显卡试试。9短:说明BIOS芯片检验和错误。1长3短:说明内存错误。内存损坏,更换。1长8短:说明显示测试错误。显示器数据线没插好或显示卡没插牢。现象四:系统能启动,有视频,出现故障提示,这时可以根据提示来判断故障部位。下面就是一些常见的故障提示的判断:一、提示“CMOSBatteryStateLow”原因:CMOS参数丢失,有时可以启动,使用一段时间后死机,这种现象大多是CMOS供电不足引起的。对于不同的CMOS供电方式,采取不同的措施:1.焊接式电池:用电烙铁重新焊上一颗新电池即可;2.钮扣式电池:直接更换;3.芯片式:更换此芯片,最好采用相同型号芯片替换。如果更换电池后时间不长又出现同样现象的话,很可能是主板漏电,可检查主板上的二极管或电容是否损坏,也可以跳线使用外接电池,不过这些都需要有一定的硬件维修基础才能完成。二、提示“CMOSChecksumFailure”CMOS中的BIOS检验和读出错;提示“CMOSSystemOptionNotSet”,CMOS系统未设置;提示“CMOSDisplayTypeMismatch”,CMOS中显示类型的设置与实测不一致;提示“CMOSMemorySizeMismatch”,主板上的主存储器与CMOS中设置的不一样;提示“CMOSTime&DateNotSet”,CMOS中的时间和日期没有设置。这些都需要对CMOS重新设置。三、提示“KeyboardInterfaceError”后死机原因:主板上键盘接口不能使用,拔下键盘,重新插入后又能正常启动系统,使用一段时间后键盘无反应,这种现象主要是多次拔插键盘引起主板键盘接口松动,拆下主板用电烙铁重新焊接好即可;也可能是带电拔插键盘,引起主板上一个保险电阻断了(在主板上标记为Fn的东西),换上一个1欧姆/0.5瓦的电阻即可。四、自检过程中断在xxxKCache处这表示主板上Cache损坏,可以在CMOS设置中将“ExternalCache”项设为“Disable”故障即可排除。同理,在自检主板部件时出现中断,则可以认为该部件损坏,解决方法一般可以在CMOS中将其屏蔽,如果不能屏蔽该部件最好更换主板。五、提示“FDDControllerFailure”BIOS不能与软盘驱动器交换信息;提示“HDDControllerFailure”,BIOS不能与硬盘驱动器交换信息。应检查FDD(HDD)控制卡及电缆。六、提示“8042GateA20Error”8042芯片坏;提示“DMAError”,DMA控制器坏。这种故障需要更换。七、提示“DisplaySwitchNotProper”主板上的显示模式跳线设置错误,重新跳线。八、提示“KeyboardisLock...Unlockit”键盘被锁住,打开锁后重新引导系统。九、IDE接口设备检测信息为:“DetectingPrimary(或Secondary)Master(或Slave)...None”表示该IDE接口都没有找到硬盘,如果该IDE口确实接有硬盘的话,则说明硬盘没接上或硬盘有故障,可以从以下几方面检查:1、硬盘电源线和数据线是否接触不良,或换一根线试试;2、CMOS设置有无错误,进入CMOS将“PrimaryMaster”、“PrimarySlave”、“SecondaryMaster”三项的的“TYPE”都设置成“Auto”;3、替换法确认硬盘本身有故障。十、IDE接口设备检测信息下面显示“Floppydisk(s)fail(40)”出错信息表示CMOS所指定的软盘驱动器有问题。判断和解决的方法与硬盘相似。现象五:系统不能引导。这种故障一般都不是严重问题,只是系统在找到的用于引导的驱动器中找不到引导文件,比如:BIOS的引导驱动器设置中将软驱排在了硬盘驱动的前面,而软驱中又放有没有引导系统的软盘或者BIOS的引导驱动器设置中将光驱排在了硬盘驱动的前面,而光驱中又放有没有引导系统的光盘,这个都很简单,将光盘或软盘取出就可以了,实际应用中遇到“DiskBootFailure,InsertSystemDiskAndPressEnter”的提示,多数都是这个原因。如果是硬盘不能引导的话一般有两种情况:一种是硬盘数据线没有插好,另一种就是硬盘数据损坏。前者一般多会出现硬盘容量检测不正确和引导时出现死机的现象;后者则是干脆找不到引导文件或提示文件损坏。前者只需重新连接好数据线即可;后者则需要用win98的启动软盘或启动光盘启动,根据实际情况来定:一、提示“Invalidpartitiontable”或“NotFoundany[activepartition]inHDDDiskBootFailure,InsertSystemDiskAndPressEnter”,这说明找不到硬盘活动分区,需要对硬盘重新分区。二、提示“Missoperationsyste”,说明硬盘活动分区需要重新格式化(formatc:/s)。三、提示“InvalidsystemdiskReplacethedisk,andthenpressanykey”或显示“StartingWindows98…”时出现死机,说明硬盘上的系统文件丢失了或损坏,使用“sysc:”,命令传递系统文件给c盘,再将C拷贝给c盘。现象六:硬盘可以引导,但Windows不能正常启动,也不能进入安全模式。这种情况表明Windows98出现了严重的错误,首先,用杀毒软件查杀病毒,看是不是病毒造成的,如果没有发现病毒可以用以下方法试一试。一、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光纤预制棒材料制备行业跨境出海战略研究报告
- 乡间骑行路线企业制定与实施新质生产力战略研究报告
- 视频课程平台行业跨境出海战略研究报告
- 丽水学校租车合同样本电话
- 产品制作合作合同样本
- 二手叉车销售合同样本
- oem定牌合同样本
- 中医雇佣合同样本
- 中介汽车销售合同样本
- 借款合同标准文本见证人
- 住宅老旧电梯更新改造工作指南汇报- 中国电梯协会
- 2024年重庆联合产权交易所集团股份有限公司招聘考试真题
- 2025年漂浮式风电市场现状调研及前景趋势预测报告
- 传统机械切削加工行业车间绩效考核方案
- 2024年高中化学 专题2 化学反应速率与化学平衡 第一单元 化学反应速率 第2课时 影响化学反应速率的因素教学实录 苏教版选修4
- 小学五年级青岛版下学期数学期中学业质量监测复习必考题型
- 山西省省直部分事业单位2025年公开招聘工作人员(十四)历年高频重点模拟试卷提升(共500题附带答案详解)
- (一模)哈三中2025届高三第一次模拟考试 语文试题(含答案)
- 四川省宜宾市2024-2025学年高一上学期期末学业质量监测物理试卷(含答案)
- 地下水封储油洞施工方案
- 英语比较级课件
评论
0/150
提交评论