版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、日期学生姓名班级学号专业计算机科学与技术课程设计题目基于Android的数独游戏设计评语组长签字:成绩2014年月日课程设计任务书学院信息科学与工程学院专业计算机科学与技术学生姓名班级学号课程设计题目基于Android的数独游戏设计实践教学要求与任务:能够运用Java语言设计数独游戏,实现基本游戏效果。会搭建Android的开发环境,并学会运用Eclipse开发工具相关Android程序进行开发;深入了解Android项目生成的文件之间的关系和它们的作用。工作计划与进度安排:第一阶段:20学时。设计阶段。学生根据所选题目,查阅有关资料,综合所学的理论知识,完成整体设计及具体设计。第二阶段:8学
2、时。调试测试阶段。上机调试测试,要求学生务必认真,思想高度集中,调试成功后,整理、编写设计资料及实验报告。第三阶段:4学时。验收答辩。指导教师:专业负责人:学院教学副院长:2014年月日2014年月日2014年月日摘要移动互联网时代的到来极大的改变了我们的生活,而Android是一种以Linux为基础的开放源码操作系统迅速占领了智能机操作系统,所以在android环境下开发显得尤为必要。Android是开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力
3、。本文就在分析讨论Android手机软件开发技术原理的基础上,为用户开发出基于Android平台的数独游戏的软件。通过对Android系统架构和应用开发进行初步研究,设计一款数独游戏。在对系统进行详细需求分析的基础上,确定了系统的功能和性能要求,对游戏的开机动画,菜单界面、屏幕绘制、时问控制、布局算法等进行了设计。本文详细介绍了在Android平台上以Java为语言编写游戏的过程,最终实现了一个界面友好、操作简单的手机益智游戏。关键词:Android数独智能机目录1、开发工具与环境5.2、系统分析与设计9.2.1 数独游戏背景9.2.2 游戏功能简介9.3、系统详细设计123.1 欢迎界面的设
4、计和实现123.2 游戏界面相关类的实现173.3 数独算法类的实现.193.4 游戏的测试和运行234、总结28参考文献291、开发工具与环境Android是谷歌公司发布的手机操作系统,它是基于Linux平台的开源手机操作系统,谷歌公司将要把其打造为基于移动终端的真正开放的移动软件平台,不仅拥有移动电话所需要的工作软件,而且在专利权方面能够不侵犯他人权利去推动移动互联网的创新。谷歌公司为了开发Android,与开放手机联盟进行了合作,手机开放联盟由全球30多家移动开发和手机应用的领先企业组成。谷歌公司不仅仅和运营商达成了合作关系、而且与设备制造商以及开发商保持长期合作,目的就在于利用其优势建
5、立移动软件平台,其特点是标准化、开放式的。Android是谷歌公司未来企业战略的一部分,其目的是为了在任何时候任何地点能够提供信息。Android应用程序与其他很多计算机平台的应用程序不同,他们没有唯一的启动入口,一个Android应用程序是由多个不同组件组合而成,组件问通过Intent实现通信。Android系统的基本组件包括Activity、Service、BroadcastReceiver和ContentProvider等,要实现组件问通信,还需要Intent消息组件。并不是每个Android应用程序都必须具备这四个组件,很多时候只需要这四种中的某几种就可以了。除此之外,应用程序的所有组
6、件还都必须在AndroidManifest.xml中声明8。这是一个XMLE置文件,这个配置文件用于定义应用程序的组件、组件的功能及必要条件等。这个配置文件是任何一个Android应用程序所必需的。1.1ActivityActivity可以说是开发人员最常用的组件,同时也属于Android最基本的组成部分之一。Android程序中,一般一个Activity代表手机屏幕上的一屏。举例来说,如果将手机比作一个浏览器,那么一个Activity就相当于一个网页。在Activity中,可以添加多个视图,然后为这些视图添加一些事件处理。这些视图可以是按钮、文本框、列表等。可以看到,Activity的概念和
7、网页的概念相当类似。一般一个Android应用是由多个Activity组成,同时这些Activity相互之间可以进行跳转,例如,按下某个Activity中的Button按钮后,可能会跳转到一个其他的Activity。不过和网页跳转稍有不同,Activity之间的跳转可以有返回值,例如,在ActivityA跳转到ActivityB后,那么当ActivityB运行结束时,可能会返回给ActivityA一个值。在多个Activity交流的过程中,这种返回机制是相当实用的。当用户进入一个新的屏幕时,之前的屏幕会转入暂停状态,并且保存在历史堆栈中。正是由于历史堆栈的存在,用户可以通过返回操作,返回到之前
8、打开过的所有屏幕。Android默认的是将应用程序从开始到当前的每一个屏幕都保存到堆栈中,不过与此同时,Android还提供了很方便的机制,让开发人员自定义某个屏幕是否需要保存到历史堆栈。Activity的跳转实现,必须借助于Intent类。因此Intent在Android应用中占据的地位是极其重要的。简单来说,一个Intent就是对一个将要执行的操作请求的抽象描述。Intent的描述,主要包含有两个数据结构:动作(action)和动作对应的数据(data)。动作有很多种,系统中最常见的动作类型有:MAIN(表明该Activity是应用程序的入口)、VIEWPICK、EDIT等等;而动作对应的
9、数据一般以URI的形式表示,例如:要查看某一个网页,则需要创建Intent,它的动作类型为VIEW对应的数据应该是该网页的网址。值得一提的是,有一个类叫IntentFilter,它是Intent的相关类。如果说Intent是一个有效的操作请求,那么一个IntentFiler则用于描述一个Activity(或者IntentReceiver等)能够接收哪些Intent的请求。比如系统浏览器的Activity用于查看某一个网页,那么它用于接收Intent的IntentFilter,要定义类型为VIEW勺动作并且能够过滤表示一个网页网址的URI。通常IntentFilter要被注册在AndroidMa
10、nifest.xml文件中。Activity之间的跳转正是通过解析各种Intent来实现的。例如一个Activity调用startActivity(intent)方法,希望跳转到其他的Activity时,会触发系统的Intent解析过程,在所有安装的应用程序中已注册的IntentFilter中查找,并最终挑选出能够匹配Intent的Activity。然后这个新的Activity因为接收到Intent的请求而开始运行,完成Activity的跳转。这种跳转机制提供了两个关键好处:(1)操作请求被Intent封装起来,方便Activity重复利用。保持(2)相互跳转的多个Activity之间实现了松
11、耦合。只要IntentFilier不变,一个ctivity可以随意修改,而不用担心其他Activity找不到它。BroadcastReceiver应用程序可以通过BroadcastReceiver监听一个外部的事件,并做出响应。例如,当应用程序需要对电话呼入这个外部事件做出反应时,可以利用BroadcastReceiver进行处理。再如,当一个后台下载任务成功的事件发生时,需要提示用户下载完成,仍然可以利用BroadcastReceiver来进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来说是透明的,用户是看不到的。BroadcastReceiver只能通过Noti
12、ficationManager来通知用户这些事件发生了。BroadcastReceiver既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。注册完成之后,当事件来临的时候,即使程序没有启动,系统依然可以根据定义,自动启动程序。各种应用也可以通过使用Context.sendBroadcast()将它们自己的IntentBroadcast广播给其他应用程序。ServiceService是一种程序,它可以运行很长时间,但是它却没有用户界面,不可交互,而且不能自己运行。它需要通过某一个Activity或者其他的
13、Context对象来调用120最常见的例子,比如说用户正在运行一个音乐播放器的程序,此时如果想浏览网页,那么,在用户导航到Android的浏览器以后,虽然进入了浏览器屏幕,但是歌曲的播放并没有停止,而是在后台继续播放着。其实播放的动作正是由播放音乐的Service执行着。当然,如果需要的话,Service也是可以停止。通过startService(Intentservice)可以启动一个Service,通过Context.bindService()可以绑定一个Service。ContentProvider对于数据存储,Android与其他的操作系统有一点不太一样,即数据在Android程序中都
14、是私有的,这些数据包括文件类型和数据库类型以及其他类型的数据。这样系统和应用程序的数据就各自独立起来,以避免受到某些不正常程序或是病毒的影响。不过这并不代表各应用程序之间就因此而无法进行数据交换了。当某个应用程序希望与其它的应用共享其数据时,Android提供的ContentProvider就可以发挥作用了。在实现ContentProvider的抽象接口以后,程序便可以将自己的数据暴露出去,其他程序只要有权限,就可以通过这一套标准而统一的接口,读取或是删除该程序的数据1302、系统分析与设计数独游戏背景数独的前身为“九宫格”,最早起源于中国。但当时的算法比现在的更为复杂,要求纵向、横向、斜向上
15、的三个数字之和等于15,而不是数字不能重复。儒家典籍易经中的“九宫图”也是来源于此。到了18世纪末,瑞士数学家莱昂哈德欧文又发明了一种叫做“拉丁方块”的游戏,之后不久,美国的一家数字逻辑游戏杂志开始刊登这类游戏,使此类游戏得到良好发展,之后又在日本得到了广泛的传播。2004年,第一个“数独”游戏被刊登上了英国泰晤士报的封面,此时开始数独游戏才真正为世界所知晓。数独游戏的规则很简单,只需要在空格处填写19的数字,并保证每个数字在每个九宫格内只出现一次,而一般的游戏过程是系统随机生成一个棋局,然后玩家需要在空白处填上相应的数字使其满足游戏规则。由于此类游戏操作简单,不需要特定的语言基础,也不需要进
16、行数字运算且可玩性高、锻炼思维、开发大脑,所以很快风靡全球。游戏功能简介数独游戏的规则很简单,只需在空格处填入19的数字,并保证每个数字在每个九宫格内只能出现一次,且每个数字在每一行、每一列也只能出现一次,而一般的游戏过程是系统随机生成一个棋局,然后玩家需要在空白处填上相应的数字使其满足游戏规则。游戏框架如下图所示:点击图标该游戏的运行步骤如下。.启动游戏后首先进入的便是欢迎界面的动画,在欢迎界面中,”点击屏幕继续,,”闪动,达到提示的效果。.在游戏界面点击屏幕,便进入菜单界面。.在菜单界面单击“关于游戏”菜单可进入“关于”界面,在“关于”界面中介绍了该游戏的目标平台及开发日期。.在菜单界面单
17、击“帮助游戏”菜单可进入“帮助”界面,在“帮助”界面介绍了游戏的基本规则。.在菜单界面单击“开始游戏”菜单可进入游戏界面。.当在游戏过程中单击“暂停”按钮时,便进入暂停状态。.在游戏过程中随时可以通过“换题”按钮来更换题目。.当玩家单击“放弃”按钮时,会提示玩家是否真的需要退出游戏,然后根据玩家的选择进行操作。.当玩家单击“提示”按钮时,界面上会出现一个红心表示当前可以提示玩家输入数字,此时再单击空白处,便会自动填上正确答案。.当玩家将界面中所有的空白全部填满数字时,系统会自动判断所填写的数字正确与否,当有错误时,会出现游戏失败界面;当全部填写正确时,会出现游戏胜利界面。.在胜利或者失败状态时
18、,玩家可以通过点击屏幕任意位置返回欢迎界面.在菜单界面单击“退出游戏”便可退出该游戏。3、系统详细设计欢迎界面的设计和实现主类KLSDActMty实现在本游戏设计中,控制调度模块主要是由KLSDActivity类来实现的KLSDActivity继承自Activity类,它提供了整个游戏的入口。并且在游戏运行过程中也随时需要KLSDActivity的管理。组成该类的成员变量如下所示:WelcomeViewwelcomeView;GameViewgameView;AboutViewaboutView;HelpViewhelpView;HandlermyHandler以上类都是对View的继承,其中
19、WelcomeViewi对欢迎动画界面的引用,GameViewi对游戏界面的引用,AboutView是对目录界面的引用,HelpView是对帮助界面的引用,HandlerHandler主要负责线程之间的通信,通过接受消息来更新UI线程中的控件。这里使用Handler类主要实现的是根据接收到的消息做出相应的切换视图操作,从而控制调度各个视图的显示。Handler机制使得线程问的通信通过Message口Runnable对象来传递和处理。在此模块的实现中,Handler传递的消息内容被封装到一个Message寸象中,Messag升包含了消息的描述和任何形式的可以被Handler发送的数据对象,其最主
20、要的字段是what,此字段由用户自己定义,为消息类型码,接收方可以根据该字段的值来确定收到的消息是关于什么的。这里重点实现了Handler类中的handleMessage()方法,此方法用来接收并处理消息,接收的参数为一个Message寸象。在这里定义了Messagewhat字段,根据接收到的what字段的值来切换到不同的界面,从而实现对整个游戏运行的管理。下面介绍KLSDActivity的成员函数:onCreat():此函数是Activity类的入口函数,在此函数中先将手机设置成全屏模式,然后切换到加载界面并在后台初始化欢迎动画界面。initWelcomeView():此函数实现欢迎界面的切
21、换。initGameView():此函数实现游戏界面的切换。initHelpView():此函数初始化帮助界面。initAboutView():此函数初试化关于界面。上面介绍了实现控制调度模块的KLSDActivity类,可以看出这里主要通过Android中的Handler机制来控制当前屏幕显示哪一个界面,从而完成控制调度功能。欢迎界面WelcomeView类的实现欢迎界面WelcomeVie啖实现的是开机动画的功能,简要流程图如下:Q开始二)图片载入点击屏幕图4.1WelcomeView类功能流程图菜单界面文字载入欢迎界面是通过WelcomeView类实现的。该类继承自SurfaceView
22、类,采用双缓冲机制进行绘图。它可以控制表面的格式,比如大小,显示在屏幕中的位置,最关键是的提供了SurfaceHolder类,使用getHolder方法获取。在用WelcomeView绘制之前必须使用lockCanvas()方法锁定画布,并得到画布,然后在画布上绘制;当绘制完成后,需要使用unlockCanvasAndPost方法来解锁画布,于是才能显小在屏帚上BitmapID创建了存放动画帧图片ID的数组,将其存放到数组中方便管理,在之后进行系统维护时,如需新增动画帧,只需在此数组中添加新的ID即可。在WelcomeView类中,publicWelcomeView(KLSDActivitya
23、ctivity)是此类的构造器,主要用来初始化刷帧线程、动画线程、以及初始化图片,onDraw()方法主要用来绘制屏幕,按次序分别欢迎动画以及菜单界面。onTouchEvent()方法为屏幕的监听方法,该方法通过玩家单击位置的坐标判断出玩家单击的是菜单界面的哪些区域,并根据单击的按钮向Activity的Handler发送消息。WelcomeViewDrawThread类和WelcomeViewGoThrea襄的实现为了实现欢迎界面的动画效果,这里设计了WelcomeViewDrawThread类,这个类主要负责界面的定时刷新,而WelcomeViewGoThread负责动画的生成。Welcom
24、eViewDrawThrea类和WelcomeViewGoThread的生成都继承自Thread类,重写了Thread类里的run()方法,都是通过run()方法实现功能。WelcomeViewDrawThreadrun()方法的代码如下:publicvoidrun()/重写的run方法Canvasc;/声明画布while(this.flag)/循环c=null;try/锁定整个画布c=this.surfaceHolder.lockCanvas(null);synchronized(this.surfaceHolder)/同步welcomeView.onDraw(c);/调用绘制方法final
25、ly/用finally保证一定被执行if(c!=null)/更新屏幕显示内容this.surfaceHolder.unlockCanvasAndPost(c);tryThread.sleep(sleepSpan);/睡眠指定毫秒数catch(Exceptione)/捕获异常e.printStackTrace();/打印异常信息分析其代码,这里主要控制c值的变化,当其值为null时,结合WelcomeView类里的onDraw()方法,绘制背景图片,绘制完成后,c值不为null,解锁屏幕,将画布置空,c值又为null,释放和更新屏幕显示的内容,从而实现刷帧作用。WelcomeViewGoThre
26、ad中run()方法代码如下所示:publicvoidrun()/重写的run方法法while(flag)/循环welcomeView.drawIndex+;/自力口if(welcomeView.drawIndexwelcomeView.bitmapsID.length-1)welcomeView.drawIndex=welcomeView.bitmapsID.length-10;if(welcomeView.drawIndex%5=0)welcomeView.drawString=!welcomeView.drawString;tryThread.sleep(sleepSpan);/睡眠ca
27、tch(Exceptione)e.printStackTrace();/打印异常信息分析该类的run()方法,控制drawIndex的值,每次循环将欢迎界面的drawIndex力口1,然后判断是否到达数组的最后,当到达最后时,将其减10,然后继续进行循环。同时,判断drawIndex是否为5,这样每循环5次改变drawString的值,从而实现文字的闪动效果。HelpView类和AboutView类的实现游戏中关于游戏帮助和游戏说明,我们分别通过HelpView类和AboutView类的实现。HelpView类和AboutView类者B是通过onDraw()方法来绘制界面。由于这两个类在很大程
28、度上是相似的,所以下面只分析HelpView类,代码如下所示:publicHelpView(KLSDActivityactivity)super(activity);this.activity=activity;/surfaceHolder=this.getHolder();/getHolder().addCallback(this);/得到activity的弓I用获彳导surfaceHolder添加Callback接口的实现decodeResource(getResources(),绘制方法helpBitmap=BitmapFactory.R.drawable.help);publicvoi
29、donDraw(Canvascanvas)/canvas.drawColor(Color.WHIT里背景色canvas.drawBitmap(helpBitmap,0,0,null);/绘制图片)publicbooleanonTouchEvent(MotionEventevent)/键盘监听方法if(event.getAction()=MotionEvent.ACTION_DOWN屏幕被按下doublex=event.getX();doubley=event.getY();/得到坐标if(x270&x440&y480)/点击确定按钮activity.myHandler.sendEmptyMes
30、sage(2);)returnsuper.onTouchEvent(event);)publicHelpView(KLSDActivityactivity)为“帮助”界面的构造器,在构造器中先得到activity以及surfaceHolder的引用,然后添加Callback接口的实现并对图片资源进行初始化。onDraw()为重写的绘制方法,在该方法中,首先绘制白色背景,然后将帮助界面的背景图片绘制到指定位置。onTouchEvent()为重写的键盘监听方法,当玩家点击屏幕时,会调用该方法来处理玩家的屏幕事件,在“帮助”界面中该方法实现比较简单,只是判断玩家点击的是否为返回按钮即可。当玩家点击返
31、回按钮时,需要向activity发送Handler消息通知控制器切换屏幕。游戏界面相关类的实现游戏界面实现游戏展示,计时界面展示,以及功能按键。流程图如下图所示:图4.2游戏界面流程图游戏界面GameVieW勺实现首先理解下GameVieWj运行思路,GameVie祢初始化时候读取相关图片信息,包括背景图片,数独背景框图片等等,在初始化同时,启动GameViewDrawThread程进行刷帧,TimeThread线程来更新界面中的时间。当玩家点击背景框空白位置,需要绘制数字键盘时,会启动DrawKeyThread线程绘制数字键盘。当玩家点击按钮时候,相关方法会被调用。以上的过程都需要KLSDA
32、ctivity的参与管理。GameView同样继承自SurfaceView类,其关键也是实现onDraw()方法。onDraw()方法分别绘制游戏界面背景图片,数字背景框,选题提示等等按钮,时间显示区域等。DrawKey()方法实现了数字键盘的绘制,保证在点击空白框时候有圆盘数字选框出现。通过surfaceCreated()和surfaceDestroyed()两个方法负责相关线程的启动和调用工作。时间线程TimeThread的实现TimeThread线程主要用来更新界面中的时间,作为数独游戏玩家计时功能,代码如下:publicclassTimeThreadextendsThreadGameV
33、iewgameView;/声明GameVieW勺弓I用booleanflag=true;/循环标志位publicTimeThread(GameViewgameView)/构造器this.gameView=gameView;/得至1JGameView勺弓I用publicvoidrun()/重写的run方法while(flag)gameView.time+;/时间自加tryThread.sleep(1000);/睡眠一秒种catch(Exceptione)/捕获异常e.printStackTrace();/打印异常信息TimeThread类的实现比较简单,只需每隔一秒钟通过gameView.tim
34、e自加更改一下GameView中表示时间的属性即可。publicTimeThread(GameViewgameView)为时间线程的构造器,在构造器中先得到GameView5引用。然后重写run()方法,通过时间的自加,实现一秒钟功能。数独算法类主要实现数独的生成以及填入数字的检测功能,流程图如下:数独算法基本逻辑本节将对数独算法类ShuDuSuanFa.java进行解释,该类基本上是数学计算,通过一定的算法产生所需要的数独数组,通过特定的接口供其他类使用。该类的目的是创建一个二维数组来表示数独矩阵。使矩阵的每行、每列、每块都没有重复的数字。算法的简单思路是先随机取出一个09的数字,然后检查其
35、所在的行、歹h块是否都符合要求。当符合要求时继续填充下一个,而当不符合要求时,再次随机取出一个没有取出过的数字,再判断。当9个数字都取出过后还没有找到符合要求的数字时,进行回退处理,即将最后一个取出的符合要求的数字进行重新取值,直到所有数字全部填充完毕。在求解数独时候,运用到回溯法,将所有的解(问题的解空间)按照一定结构排列,再进行搜索。一般解空间构造成为为树状结构,用深度优先的策略搜索,一般有两种方式:.只需要一个解的话,找到解即停止。.需要求出所有解,则需做“树的遍历”找到所有解。回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相
36、当大的问题。回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法是一种搜索算法,其基本思路是:在一个问题中,根据题意给出的边界条件划定出所有可能解的范围(称为可能解),根据题意确定出约束条件。利用程序顺次在所有可能解中搜索时按照深度搜索的方式进行。即在第一层选定一个满足约束条件的解,然后以该可能解为出发点,搜索第二层的一个可能解(试探)。如果搜索到第二层的一个可能解,则继续搜索第三层得一个可能解。依次
37、类推,直到所有层得可能解都被找到,则得到了该问题的一个完整解。如果第二层所有的肯可能解都不满足约束条件,则返回第一层,放弃原有的可能解,使用第一层的下一个可能解(回溯)。一次类推,寻找第二层的一个可能解。回溯法相对于其他穷举的特点在于,不必把问题的每一层的所有可能解都遍历一遍,只要当前的可能解不满足约束条件就抛弃该解,寻求下一个可能解,而不必求解其余的下层解。当当前层得所有可能解都不满足约束条件,则回溯到上一层,抛弃上一层的当前可能解。从以上分析中结合数独问题的规则,得出数独问题的约束条件为:每一格的数值范围仅限1-9每一格内的数字在当前行不允许重复每一格内的数字在当前列不允许重复每一格内的数
38、字在当前小宫格内不允许重复由此,回溯法通过约束条件的筛选,在所有解中除掉不可能的解,从而获得问题的一个或者全部解。检测填充结果根据数独游戏的规则,玩家填充81个宫格之后,要满足所有行,所有列和所有小九宫格内不能出现重复的数字,并以此为条件进行检测。列检测首先对各列进行检测,提供了检测列内9个数字是否有重复数据的方法checkLine(),该方法以此遍历列中的9个数字,当遍历到某个数字时,检测该数字后面的数字是否出现重复。比如,当检测到第3个数字是7时,则检测第4-9个数字是否出现7,如果出现重复则停止检测,只有既可以避免重复检测,又可以避免遗漏。publicbooleancheckLine(i
39、ntcol)/检查列是否符合要求for(intj=0;j8;j+)if(njcol=0)continue;for(intk=j+1;k9;k+)if(njcol=nkcol)returnfalse;returntrue;行检测类似于对列数据的检测,还需要对每行进行检测,因此程序提供了对行数据的检测方法checkRow(),该方法代码如下:publicbooleancheckRow(introw)/检查行是否符合要求for(intj=0;j8;j+)if(nrowj=0)continue;for(intk=j+1;k9;k+)if(nrowj=nrowk)returnfalse;returntr
40、ue;小九宫格检测除了对行和列的重复数据检测之外,还需要对小九宫格内的所有数字进行检测,避免出现重复现象。检测原理与行,列检测相同,但需要计算九宫格内数字的位置。Ro林口Col指定了检测九宫格的位置,数独单元格中一共有3X3个九宫格,Row?口Col的范围为0到2。用以下程序完成九宫格内重复数字的检测。publicbooleancheckNine(introw,intcol)/检查3X3区域是否符合要求intj=row/3*3;/获得左上角的坐标intk=col/3*3;for(inti=0;i8;i+)/循环比较if(nj+i/3k+i%3=0)continue;)for(intm=i+1;
41、m9;m+)if(nj+i/3k+i%3=nj+m/3k+m%3)returnfalse;)returntrue;)3.4游戏的测试和运行游戏测试概述当游戏软件制作完成之后,为了验证本游戏是否存在缺陷、能否达到预期的设计标,我们还需要在预设环境(如:模拟环境或真实移动终端设备)中进行调试和运行,以发现游戏中可能存在的问题和不足、解决这些缺陷,从而完善软件功能并进而提升产品质量。作为软件测试的重要组成部分,游戏测试具备软件测试的一切共同特性,但由于游戏本身又具有一定的特殊性,因而游戏测试主要由两个部分组成:(1)传统的软件测试由于测试是软件开发过程中极为重要的组成部分,因而针对软件本身的测试贯穿
42、于软件存在的整个生命周期。首先,程序员需要在程序设计开发过程中按阶段对产生的模块集中测试,以保证系统各模块能实现各自的功能,在此阶段软件的测试一般主要集中在程序的细节部分。当软件制作开发出来之后,为保证软件整体的完善性,还需要在软件工程理论的指导下对整个系统进行测试,这阶段的测试主要有黑盒测试和白盒测试。所谓黑盒测试就是把要测试的对象当作一个黑盒子,不需要知道里面是怎么处理的,只要对输入和输出数据进行测试,这种测试方案属于高端测试,主要是在操作层面对游戏进行测试;而白盒测试正好相反,基于白盒测试的测试方案属于低端测试,是对各种设计细节方面的测试,测试者必须对测试对象的内部处理过程非常了解,对里
43、面所有的分支和循环进行实验从而达到测试的目的。在进行软件测试的过程中,测试人员应根据需要把墨盒和白盒测试有效的结合,以达到发现软件错误并进而完善软件的目的。(2)对游戏性的测试由于游戏特别是在很大程度上是对现实世界的一种模拟,因而它不但包含了人类社会的一部分特性,同时还涉及娱乐性、可玩性等独有特点,所以针对游戏的测试还包括三个部分:游戏情节的测试:主要是针对体现游戏主线的故事情节和游戏世界中的任务系统等进行测试。游戏世界的平衡测试:平衡性主要体现在经济平衡、能力平衡(包含技能、属性等等),测试的目的是为了能保证游戏世界的公平竞争。游戏文化的测试:比如整个游戏世界的风格,是中国文化主导,还是日韩
44、风格等等,大到游戏整体,小到NPC对话,比如一个书生,他的对话就必需斯文,不可以用江湖语言。目前在游戏开发过程中,对游戏性的测试主要有以下几种实现途径:一是通过内部测试人员对以下的三个方面进行测试,由于他们往往都是经过精选而来的职业玩家,对游戏有很深的认识,因而也能较好完成游戏的测试目标;二是邀请一定数量的玩家或游戏媒体人员对外围系统进行测试,其目的主要是测试游戏的可玩性和易用性,及一些外围的Bug;三是通过大范围的内测和公测,让更多的玩家进行试玩。测试环境本游戏的测试环境包括两种,一种是基于Android虚拟设备AVD的测试,在测试之前,首先要创建一个AVD在测试游戏时选用的是基于Android2.3的AVD还有一种便是基于Android手机的测试,在测试之前,需要首先将游戏文件夹下的bin目录下的游戏的apk文件通过数据线传到Android手机上,然后通过Android手机上的第三方文件浏览器找到需要安装的apk文件,即可安装。本人在基于Android手机的测试时,选用的手机为SONYWT19I,SONYWT19I的主要参数为:主屏尺寸:3.2英寸;主屏色彩:彩屏,1600万色;主屏像素:480X320像素(HVGA);CPU高通骁龙SnapdragonMSM82551GHz内存容量:512MBRAM1GROM系统平台:A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《日语学术论文写作》教学大纲
- 2024版家庭装修水电安装协议书
- 2024网络游戏开发运营方与广告代理商的广告投放合同
- 中考名著导读《红岩》
- 2024门窗行业信息化建设与数据服务合同3篇
- 2024雏鸡养殖设备采购合同
- 05 全真模拟(一)-备战2023年中考英语听说高分攻略(北京专用)(答案及听力原文)
- 2024航空器材采购与维修合同
- 2024铜门行业论坛赞助与合作合同3篇
- 临床技能训练 循环系统-卫生部评估课件
- 部编版二年级下册语文第四单元教学设计含语文园地四
- 江西省第一届职业技能大赛分赛场项目技术文件(世赛选拔)网络安全
- GB/T 18029.22-2024轮椅车第22部分:调节程序
- 垃圾焚烧行业经营分析报告
- 合同审查报告模板
- JBT 14589-2024 敷胶双螺杆泵(正式版)
- 新制定《公平竞争审查条例》主题
- 管道开挖修复施工方案
- 新点软件使用培训课件
- ka卖场行业分析
- 产科护理疑难病例讨
评论
0/150
提交评论