




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
连连看游戏设计与实现摘要“连连看”游戏是一款常见游戏。游戏速度节奏快,画面清晰可爱,适合大众玩家。本文主要介绍了游戏的设计过程,其中游戏主要分为4个模块,游戏界面模块、图片随机生成模块、图片消除路径判断、背景音乐模块。游戏核心模块中图片随机生成采用了数字和图片绑定,运用随机函数以及数组交换的算法,实现了游戏图片初始化状态,有效的解决了图片排布问题,方案简单易行;另一核心模块图片消除路径判断,主要采用了分类判断的算法,将连连看图片的位置一一归类,分类设计函数判断位置,实现游戏的基本消除功能。算法思路清晰,便于理解和编码。本游戏实现了连连看的基本功能,可以准确的消除图片、记录分数、提示时间,同时设计了人性化的提示,解决僵局的功能,创新实现了新的连连看规则消除图片后给予时间奖励,激发了玩家的积极性。关键词QT;连连看;算法;数组LINKGAMEDESIGNANDIMPLEMENTATIONABSTRACTLINKGAMEISACOMMONGAMETHEGAMEHASFASTPACEDSPEEDANDTHECUTEPICTURETHATISFITFORPUBLICPLAYERSTHISPAPERDESCRIBESTHEDESIGNPROCESSOFTHEGAME,WHERETHEGAMEISDIVIDEDINTOFOURMODULES,THEGAMEINTERFACEMODULE,THEMODULEOFRANDOMLYGENERATEDPICTURES,ELIMINATINGPATHJUDGMENT,BACKGROUNDMUSICMODULESGAMECOREMODULE,THEMODULEOFRANDOMLYGENERATEDPICTURES,BINDPICTURESANDIMAGES,USETHERANDOMFUNCTIONANDAARRAYEXCHANGEALGORITHM,ANDACHIEVEGAMEPICTUREINITIALIZATIONSTATE,EFFECTIVELYSOLVETHEPROBLEMOFPICTUREARRANGEMENT,THEPLANISSIMPLEANOTHERCOREMODULEPICTURES,ELIMINATEPATHJUDGMENT,MAINLYUSESCLASSIFICATIONALGORITHMSTODETERMINETHELOCATIONOFLINKGAMEPICTUREANDCLASSIFYIT,CLASSIFICATIONFUNCTIONSJUDGETHELOCATION,ANDREALIZETHEBASICFUNCTIONOFTHEGAMECANCELLATIONALGORITHMISCLEAR,EASYTOUNDERSTANDANDENCODINGTHEGAMEREALIZETHEBASICFUNCTIONOFLINKGAME,ITCANELIMINATETHEEXACTPICTURE,RECORDINGSCORES,SUGGESTINGTHATTIME,ANDDESIGNHUMANETIPS,THEFUNCTIONOFSOLVINGTHEDEADLOCKITACHIEVESNEWRULESAFTERELIMINATIONOFTHEPICTUREYOUCANBEGIVENTIMEBONUSTHATISSTIMULATINGTHEENTHUSIASMOFTHEPLAYERSKEYWORDSQTLINKALGORITHMARRAY目录摘要IABSTRACTII1绪论111游戏简介1111游戏背景1112游戏规则112游戏功能1121美观大气的界面1122背景音乐的添加1123奖励时间的设置1124提示功能1125僵局的重置1126得分记录、难度2127开始、重新开始、退出213游戏设计的主要工作2131游戏设计需要解决的问题2132游戏设计需要使用的算法2133游戏设计创新点22系统分析421技术可行性分析4211算法分析4212开发语言分析14213开发平台分析1522需求分析17221环境分析17222功能需求分析17223性能需求18224可靠性和可用性需求183游戏概要设计1931任务概述19311目标19312需求概述1932总体设计19321处理流程19322系统结构图20323游戏界面模块设计20324图片的随机生成20325图片消除路径判断21326背景音乐的模块234详细设计2441视图层设计24411界面效果图,如图4124412思路2442逻辑层设计24421图片偶数对存放以及随机生成24422图片消除路径判断详细设计2643其他控件的设计实现30431重排按钮实现30432提示按钮实现31433奖励时间和进度条的逻辑实现32434音乐模块实现345游戏测试3551软件测试35511软件测试简介35512测试方法35513测试步骤3552连连看游戏系统测试3653游戏系统性能分析36结论37参考文献38致谢39外文原文40中文翻译491绪论11游戏简介111游戏背景连连看游戏是游戏中经典中的经典,曾经风靡网络,无论是单机版的还是网络对战的,它以简单,容易上手,图片新颖的特点获得了大量的粉丝,它是一款经久不衰的休闲小游戏,适合闲来无事的大众,以供消遣。游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。“连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书。随着FLASH应用的流行,网上出现了多种在线FLASH版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者JONEVEY在MANYOU开放平台上推出的“宠物连连看”最为流行。112游戏规则连连看游戏规则简单,就是在游戏界面中找到两个相同的图片,用不超过3根直线能够连接起来,就可以成功消除图片,得到分数,获得时间奖励,在规定时间内将图片全部消除,便获得胜利。12游戏功能121美观大气的界面本连连看游戏采用蓝色背景作为主色调,界面简洁大方,按钮及提示框排布合理,便于玩家的操作。122背景音乐的添加只要打开游戏,游戏的背景音乐就缓缓的流露出来,滋润心田,选择相应的按钮后,还会有提示音,成功连线消除图片后能播放消除的提示音。123奖励时间的设置玩家成功消除一对图片后,对应的时间进度条就会增加一定的奖励时间,来鼓励玩家消除。124提示功能当玩家陷入困境,不知道怎么消除图片,继续游戏时,提示按钮可以帮助他成功消除当前的图片,但是提示的次数有限,用完不再生效。125僵局的重置由于游戏的图片生成是随机的,因此,在消除到一定阶段的时候,可能会出现有图片但是不满足消除规则的情况,重排的按钮可以实现图片的重新加载,从而能够再次消除。126得分记录、难度为了提高玩家的游戏的积极性,以及为了保证游戏的完整性,游戏将统计玩家的得分情况,消除一对图片,就会得到相应的分数,以数据反应玩家的游戏完成进展。同时为了给游戏增加一些可变因数,玩家在成功完成一轮游戏后,难度会增加,难度增加反应到游戏中就是缩短了一轮游戏的时间,但是图片的数量没有改变,这就无形中增添了游戏的可玩性。127开始、重新开始、退出开始,重新开始,退出等按钮实现相应的游戏控制。13游戏设计的主要工作131游戏设计需要解决的问题开始制作游戏时,主要要解决的问题有以下几个方面如何设置整个游戏的界面;如何控制连连看游戏中随机图片的生成且每种图片必须为偶数个;游戏开始后,判断鼠标两次点击的图片能否消去,即图片是否相同且图片之间路径的判断;如何判断游戏是否结束以及输赢问题等。132游戏设计需要使用的算法针对游戏中最核心的两个问题,1连连看游戏中随机图片的生成且每种图片必须为偶数个,2图片是否相同且图片之间路径的判断,我们需要使用合适的算法来解决这两个棘手的问题。1图片成对出现而且随机,为了保证成对,我们可以在存放的时候按照顺序成组来存放,保证组的数量是偶数就可以实现,但是同时又存在一个问题,图片在哪里存放,怎么引用图片,为了简化图片的存放,结合连连看的表格形式,这里我们应用二维数组、采用转化的原则,将图片依次编号和二维数组对应,数组中的数字是0表示为空白,大于0的代表对应的图标编号,这样图标就可以容易替换成任何的图片或者文字,这就很好的解决了图片的按组存放规则;接下来还需要解决一个问题就是如何将图片的顺序打乱,这就需要应用到关键方法随机函数,通过随机函数和对换的思路,我们可以将图片成功的随机排列,基本解决了随机性的问题。2图片是否相同且图片之间路径的判断,这是连连看中最重要和最基础的部分,我们主要采用分类判别的方法,这其实是一种递归的算法,把复杂的问题按照层次剥离出来,每次简化一个步骤,就是递归的实现过程,我们将连连看图片的位置归类,总结出3个类别,即通过0,1,2个转角连接,0个转角是直连的方式,是递归的第一步,1个转角的形式可以转化为两次直连的方式判断,2个转角同样可以转化为1次1个转角,1次0个转角的判断。这样图片的位置模式大致就清晰了,1,2转角均可以用0个转角解决,递归的方式简单易行,便于理解,思路层次分明。其他的问题均是围绕这两个问题产生的,由此可以这两个问题的重要性以及良好算法设计的必要性。133游戏设计创新点1游戏规则创新,当玩家在成功消除图片之后,会给予时间的奖励,时间进度条增加,增强了玩家消除的积极性。2提示功能,当玩家无思路的时候,可以通过该功能,解决玩家的困惑。3,重置功能,当游戏陷入僵局的时候,重置功能可以成功解除僵局,使游戏继续进行。4音乐,游戏在开始后,背景音乐就进行播放,当鼠标点击图片的时候,配对的点击音乐也进行播放,用于提示。5时间进度条,游戏开始以后,时间以进度条的方式提示,相比原来数字的提示更加清晰。6图片消除算法,算法设计合理、思路清晰,涵盖全部情况,采用递归的方式便于游戏编码的实现。2系统分析21技术可行性分析211算法分析连连看程序的关键是判断用户点击两个图案能否消除,两张图片消除的条件有两个1图片相同2图片间连线的转角数不能超过两个(即用不超过三根直线连接两张图片)根据判断能否通过不超过三根直线连接两张图片的原则,有两种实用的算法,下面是讨论方案1分类判断法这里实质上是一种递归的思想,要判断图片A与图片B能否通过一条有N个转角的路径相连,可以转化为判断能否找到图片C,C与A能直线相连,且C与B能用一条有N1个转角的路径相连。若这样的图片C存在,那么A与B就可以通过一条有N个转角的路径相连。分类法一根据转角数不得超过2个的规则,我们可以分为转角数分别为0个、1个、2个这三种情况分别讨论。A0转角连通(直线连通)两个图片的纵坐标或横坐标相等,且两者连线间没有其他图案阻隔。(红色块为欲消除块)如图21图21直线连通B一个转角连通其实相当于两个图片划出一个矩形,这两个图片是一对对角顶点,另外两个顶点如果可以同时和这两个棋子直连,那就说明可以“一折连通“。(红色块为欲消除块,黑色代表其他阻拦块,圆圈代表折点)如图22图22一个转角连通C两个转角连通判断图片A与图片B能否经过有两个转角的路径连通实质上可以转化为判断能否找到一个点C,这个C点与A可以直线连通,且C与B可以通过有一个转角的路径连通。这样就将问题转化为了0个转角和1个转角的情况,0个转角可以直接相连,1个转角可以转化为以C点和B点为对顶角的矩形中寻找另外两个对顶角之一,看能否分别和B、C相直连。若能找到这样一个C点,那么A与B就可以经过有两个转角的路径连通。判断是否经两个转角连通的算法需要做两个方向上的扫描水平扫描和垂直扫描。水平扫描为了判断A,B能否通过2个转角连通,则从A开始在水平方向上向左右扫描,并判断经过的点能否与B点经过1个转角连通。显然C点能与B点经1个转角连通,故A,B能经2个转角连通。(红色块为欲消除块,黑色代表其他阻拦块,黄色C代表折点,绿色代表折线),如图23图23水平扫描垂直扫描为了判断A,B能否通过2个转角连通,则从A开始在垂直方向上下扫描,并判断经过的点能否与B点经过1个转角连通。显然C点能与B点经1个转角连通,故A,B能经2个转角连通(红色块为欲消除块,黑色代表其他阻拦块,黄色C代表折点,绿色代表折线),如图24图24垂直扫描2分类法二也可以如下类别进行分析连连看的消除算法A两张图片左右相邻,如图25图25左右相邻B张图片上下相邻,如图26图26上下相邻C两张图片在同一行,它们中间相隔且没有其它图片遮挡,如图27图27同一行示例1两张图片在同一行,它们中间相隔且有其它图片遮挡,但是它们存在不超过2个转弯的路径,如图28图28同一行示例2D两张图片在同一列,它们中间相隔且没有其它图片遮挡,如图29图29同一列示例1两张图片在同一列,它们中间相隔且有其它图片遮挡,但是它们存在不超过2个转弯的路径,如图210图210同一列示例2E两张图片相邻,但是它们存在不超过2个转弯的路径,如图211图211图片相邻,不超过2个转弯路径F两张图片不相邻,但是它们存在不超过2个转弯的路径,如图212图212图片不相邻,不超过2个转弯路径总结分类法一和分类法二均涵盖了连连看图片全部位置情况,可以实现准确实现连连看的消除功能,但是分类二的细节太多,颗粒度太小,分类一的分支清晰明确,颗粒度合适,因此在这里我选择了分类法一。2以转角数为基准的广度优先搜索法这种算法参考编程之美这种算法的动机若能将所有与图片A经过不多于2个转角的路径相连的图片找出来,加入一个集合S中。那么判断B与A能否相连只需判断B是否存在于集合S中即可。采用广度优先搜索算法可以方便的实现这一构想。算法的思路如下1定义空集S与T,将A加入集合S2找出所有与A能直接相连的点,将其加入集合S3找出与集合S中的点能直接相连的点,加入集合T,然后将T中所有元素加入到集合S中,清空集合T4找出与集合S中的点能直接相连的点,加入集合T,然后将T中所有元素加入到集合S中5若B在集合S中,则A,B可以相连。否则A,B不能相连模仿图论中广度优先搜索的算法,可以写出以转角为基准的广度优先搜索的伪代码如下(实际编程实现这一算法时可以采取优化措施,不一定要搜索出所有与A转角不超过2的点。)/判断图片A与图片B能否经过不多于2个转角的路径相连的算法BOOLMATCHPICTUREA,PICTUREBSETS/已经搜索到的点的集合,集合S中每个元素与A都可以通过不多于个转角的路径连通SETT/临时存储搜索到的点将A加入到S中INTCROSSNUM0/用于记录当前搜索到节点的最大转角数WHILEB不在S中QSTRINGCH“IMAGES/“CHCHQSTRINGNUMBERMAPIQSTRING“PNG“QPIXMAPPIXMAPCHQICONICONPIXMAPIMAGEISETICONICONIMAGEISETICONSIZEQSIZESIZE,SIZEIMAGEISHOWIMAGEISETPALETTEQPALETTEQTLIGHTGRAY/设置选中颜色LIGHTGRAYCONNECTIMAGEI,SIGNALCLICKED,THIS,SLOTON_IMAGE_CLICK接下来,需要实现图片的随机排布,这里使用到随机函数产生随机数,通过遍历数组中的图片,然后交换随机下标和遍历下标对应的图片,这样就实现了图片的随机排布。下述代码是图片随机排布的实现。SRANDUNSIGNEDTIMENULLFORI0IX2DIRECT1FORINTXX1DIRECTXX2XDIRECTIFARRMAPY1XBLANK_STATERETURNFALSERETURNTRUEY直连的方式BOOLPAINTAREAY1_Y2INTX1,INTY1,INTX2,INTY2IFX1X2RETURNFALSEINTDIRECT1IFY1Y2DIRECT1FORINTYY1DIRECTYY2YDIRECTIFARRMAPYX1BLANK_STATERETURNFALSERETURNTRUE一个转角连通其实相当于两个图片划出一个矩形,这两个图片是一对对角顶点,另外两个顶点如果可以同时和这两个棋子直连,那就说明可以“一折连通“。(红色块为欲消除块,黑色代表其他阻拦块,圆圈代表折点),如图43图43一个转角连通一个转角连接方式BOOLPAINTAREAONECORNERLINKINTX1,INTY1,INTX2,INTY2,QLISTPATH/1CONNERINTXYARRMAPY1X2IFXYBLANK_STATERETURNTRUEINTYXARRMAPY2X1IFYXBLANK_STATERETURNTRUERETURNFALSE两个转角连通判断图片A与图片B能否经过有两个转角的路径连通实质上可以转化为判断能否找到一个点C,这个C点与A可以直线连通,且C与B可以通过有一个转角的路径连通。这样就将问题转化为了0个转角和1个转角的情况,0个转角可以直接相连,1个转角可以转化为以C点和B点为对顶角的矩形中寻找另外两个对顶角之一,看能否分别和B、C相直连。若能找到这样一个C点,那么A与B就可以经过有两个转角的路径连通。判断是否经两个转角连通的算法需要做两个方向上的扫描水平扫描和垂直扫描。水平扫描为了判断A,B能否通过2个转角连通,则从A开始在水平方向上向左右扫描,并判断经过的点能否与B点经过1个转角连通。显然C点能与B点经1个转角连通,故A,B能经2个转角连通。(红色块为欲消除块,黑色代表其他阻拦块,黄色C代表折点,绿色代表折线),如图44图44水平扫描垂直扫描为了判断A,B能否通过2个转角连通,则从A开始在垂直方向上下扫描,并判断经过的点能否与B点经过1个转角连通。显然C点能与B点经1个转角连通,故A,B能经2个转角连通(红色块为欲消除块,黑色代表其他阻拦块,黄色C代表折点,绿色代表折线),如图45图45垂直扫描两个转角连接的方式BOOLPAINTAREATWOCORNERLINKINTX1,INTY1,INTX2,INTY2,QLISTPATH/2CONNERINTXYBLANK_STATEINTYXBLANK_STATE/UPFORINTYY11Y0YXYARRMAPYX1YXARRMAPYX2IFXYBLANK_STATEBREAKIFYXBLANK_STATEPATHAPPENDCOORDINATEX2,YRETURNTRUE/DOWNFORINTYY11YAPPENDCOORDINATEX1,YPATHAPPENDCOORDINATEX2,YRETURNTRUE/LEFTFORINTXX11X0XYXARRMAPY1XXYARRMAPY2XIFYXBLANK_STATEBREAKIFXYBLANK_STATEPATHAPPENDCOORDINATEX,Y2RETURNTRUE/RIGHTFORINTXX11XAPPENDCOORDINATEX,Y1PATHAPPENDCOORDINATEX,Y2RETURNTRUERETURNFALSE43其他控件的设计实现431重排按钮实现重排按钮实际上调用了逻辑层的功能,使用随机生成函数重新生成图片,与初始化状态不一样的是,这里的随机排布的对象是现有的图片,不需要对全部图片进行排布。VOIDMAINWINDOWON_PUSHBUTTON_2_CLICKEDBOOLCHECKEDIFNEWGAMEISPLAYINGRETURNIFNEWGAMECANGETRANDOMRETURNUILBLRESETSETTEXTQSTRINGNUMBERNEWGAMEGETRESETMAINWINDOWRESETIMAGEVOIDMAINWINDOWRESETIMAGENEWGAMERANDOMINTMAPNEWGAMEGETMYMAPFORINTI1ISETICONICON432提示按钮实现提示按钮关键是要实现图片的提示功能,找到可以连接的图片,这里就需要确定图片的位置,扫描可以连接的图片,记录下他们的位置,然后用变量保存下来,然后调用绘图事件,绘制图片的外框,用背景色提示。VOIDMAINWINDOWON_PUSHBUTTON_CLICKEDBOOLCHECKEDIFNEWGAMEISPLAYINGRETURNIFNEWGAMECANGETTIPRETURNINTAX,AY,BX,BYUILBLTIPSETTEXTQSTRINGNUMBERNEWGAMEGETTIPIFNEWGAMETIPAX,AY,BX,BYPRINTF“XIXIDTDTDTDN“,AX,AY,BX,BYIMAGEAX1NEWGAMEGETSIZEYAY1SETPALETTEQPALETTEQTREDIMAGEBX1NEWGAMEGETSIZEYBY1SETPALETTEQPALETTEQTRED/WHITEBOOLGAMETIPINTSTARTXPBRTIMESETVALUEUIPBRTIMEMAXIMUMUIPBRTIMEVALUEADDTIMEUIPBRTIMEVALUEADDTIMEUIPBRTIMEMAXIMUMPAIRREPLAYDELETEMAINWINDOWBTNFRONTDELETEBTNNEXTMAINWINDOWFLAGFALSEMAINWINDOWBTNFRONTNULLBTNNEXTNULLIFNEWGAMENEEDRANDOMNEWGAMERANDOMELSE/当前选择的成为前一个SELREPLAYMAINWINDOWBTNFRONTSETPALETTEQPALETTEQTLIGHTGRAY/控件的背景颜色MAINWINDOWBTNFRONTBTNNEXTBTNNEXTSETPALETTEQPALETTEQTWHITEELSESELREPLAYMAINWINDOWFLAGTRUEMAINWINDOWBTNFRONTBTNNEXTBTNNEXTSETPALETTEQPALETTEQTWHITEUILBLSCORESETTEXTQSTRINGNUMBERNEWGAMEGETSCORE/判断是否游戏已经结束IFNEWGAMEISWINQMESSAGEBOXINFORMATIONTHIS,“WIN“,QSTRINGQOBJECTTR“分数“QSTRINGQSTRINGNUMBERNEWGAMEGETSCOREVOIDMAINWINDOWTIMEREVENTQTIMEREVENTIFNEWGAMEISPLAYINGUIPBRTIMESETVALUEUIPBRTIMEVALUE1IFUIPBRTIMEVALUEINCLUDE“PLAYERH“PLAYERPLAYERQSTRINGPATHMUSICPHONONCREATEPLAYERPHONONMUSICCATEGORY,PHONONMEDIASOURCEPATHVOIDPLAYERSTARTMUSICPLAYVOIDPLAYERREPLAYMUSICSTOPMUSICPLAYPHONONMEDIAOBJECTPLAYERGETMUSICRETURNMUSIC5游戏测试51软件测试511软件测试简介测试是软件开发过程中的一个非常重要的环节。通过测试可以用来检验一个系统的性能和品质是否达到系统最初设计时给出的各项需求指标。测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并利用这些用例来运行程序以便发现错误,这个过程与整个软件开发过程基本上是平行进行的。一个规范化的测试过程通常包括以下基本的测试活动(1)制定测试计划。在充分考虑了整个项目的开发时间和开发进度以及一些人为因素和客观条件后制定测试计划,保证其是基本可行的。测试计划应主要包括测试的内容、进度安排、测试所需的环境等。(2)编制测试大纲。测试大纲是测试的依据。(3)根据测试大纲设计和生成测试用例,产生测试设计说明文档。(4)实施测试。依据预先编制好的测试大纲和设计好的测试用例,对被测软件进行完整的测试。(5)生成测试报告。512测试方法软件测试方法可以分为静态测试和动态测试。(1)静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助分析的手段对程序进行检测。(2)动态测试是指通过运行程序来发现错误,可以采用黑盒测试法和白盒测试法。黑盒测试法也称功能测试或数据驱动测试,其是在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。在测试过程中,把程序看作一个不能打开的黑盒子,测试者在程序接口进行测试,只需要检查程序功能是否达到了系统功能需求各项指标,判断程序是否能在保持外部信息的完整性的同时适当程度地接受数据输入并产生相应的输出信息。经常使用的黑盒测试方法主要有等价类划分、边界值划分、错误推测和因果图等,主要应用于软件确认测试。白盒测试法也称结构测试或逻辑驱动测试,它是在知道产品内部工作过程前提下,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。白盒测试常用的技术有逻辑覆盖、循环覆盖和基本路径测试等。513测试步骤有效的软件测试实际上分为4步进行,即单元测试、集中测试、确认测试、系统测试。(1)单元测试单元测试也称模块测试,侧重于模块中的内部处理逻辑和数据结构。(2)集成测试即使所有模块通过了单元测试,但在集成以后仍可能出现问题,这就需要集成测试来发现错误。集成测试通常可以分为非增量式集成和增量式集成。(3)确认测试经过集成测试以后,软件就被集成起来,这时软件接口方面的问题都已解决,将进入确认测试阶段。确认测试的任务是进一步检查软件的功能和性能是否与用户要求的达成一致。(4)系统测试是将已经确认的软件、计算机硬件、外设和网络等其它因素结合在一起,进行系统的各种集成测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求相矛盾的地方。52连连看游戏系统测试(1)测试环境WINDOWS操作系统,QT平台环境(2)对程序单个模块进行测试1)开始游戏、重新开始模块测试方法点击开始游戏,运行游戏。游戏过程中点击重新开始,运行游戏。测试结果转至游戏主界面,实现游戏的初始化。游戏重新初始化,重新载入。2)音效模块测试方法运行游戏,点击游戏主界面的图,进行测试。测试结果进入系统后,播放背景音乐,在按不同按钮的时候发出点击声效。3)重置模块测试方法点击重置按钮,进行测试。测试结果实现了将地图上现有的所有图案打乱,重新排列再展现出来。4)消除提示模块测试方法点击系统提示按钮,进行测试。测试结果实现了系统提示消除两个相同图案的功能。5)游戏退出模块测试方法在游戏菜单中点击退出按钮,进行测试。测试结果游戏成功退出。(3)对程序整个模块进行测试测试方法用QT打开程序,打开游戏,运行游戏进行测试。测试结果系统成功实现了进入游戏、退出游戏、音乐播放、图像消除、重置、系统提示消除,进度条显示,难度升级等功能,达到了系统设计时的功能需求指标。53游戏系统性能分析经过对系统进行测试和运行。总结出游戏系统性能如下(1)界面友好,游戏操作方便系统风格可爱,界面简单,功能较完善,游戏操作简单。(2)系统响应较快,运行较稳定在系统运行时,游戏过程中的消息响应处理很快,且系统整体运行安全且稳定。(3)部分系统功能仍需完善由于开发时间等方面的原因,该系统还可以在联网进行玩家比赛、难度调节等方面予以完善。结论经过这几天的奋战,毕业设计终于有些眉目了,不说程序做的有多么精致,耐玩,基本功能还是全部实现了,看到自己的成果,想想都特别欣慰,先玩起自己的游戏来没有了纯粹的玩的感觉,仿佛每次点击一个按钮都是在运行一次算法,大脑的思路全部定格在算法的实现上,同时玩游戏时甚至带着一种找BUG的心里,想测验一下自己的游戏到底有没有逻辑上的错误,总而言之,设计连连看给我带来了全新的思考方式。从定了题目开始,我就觉得连连看这个题目是最最简单的游戏,甚至不用怎么思考,程序顺利的就会实现,但是当自己真正接触连连看时,不超过三条线的消除算法就让我想了好久,直观上讲,是用小于等于三条线连接两张相同的图片就好,但是怎么把自然语翻译成计算机语言,这个就让人没有思路,因为感觉图片的位置无法归类,这么讲的话,分类就是当前必须要解决的问题,通过查阅资料,书籍,我发现图片的位置也是有规律可寻找的,大致就是直连,一个拐点,两个拐点,细化的话,可以分成相邻的,同行同列的,不相邻的,这么一归类发现连连看的雏形就好像出现了,毕竟这是核心算法,有了这个连连看算是实现了一半接下来的任务,就是熟悉C和QT环境,为此我把教学视频反复看了几遍,能够自己将控件摆放,熟悉了事件,信号槽函数机制,把实现连连看的基本功算是掌握了。有了良好的算法,熟悉了编程语言,编程环境,那么剩下的任务就是努力编程了,在克服了大量的语法错误带来的失败感后,我成功将核心模块实现了,并且能够使用,模块间传递的数据也准确无误,这给我带来了很大的自信心。这次的毕业设计中,给我感触最深的就是算法设计,一个游戏程序离不开良好的算法,所以现在最想做的事情就是想把经典算法重新学习一遍,以便于以后能够再次用得到。参考文献1DUNCANTEMPLELANGWORKINGWITHMETADATAFROMC/CCODEINRTHERGCCTRANSLATIONUNITPACKAGEJCOMPUTATIONALSTATISTICS,2009,VOL242,PP2832932张静媛,黄丹丹等THECPROGRAMMINGLANGUAGEM电子科技,2006,113GROSSEKUNSTLEVERALFWAUTOMATICFORTRANTOCCONVERSIONWITHFABLEJSOURCECODEFORBIOLOGYANDMEDICINE,2012,714SRENSNIELSENDENSEANDSPARSEMATRIXCLASSESUSINGTHECSTANDARDTEMPLATELIBRARYJCOMPUTATIONALECONOMICS,1999,VOL141,PP47685MARKSUMMERFIELDADVANCEDQTPROGRAMMINGCREATINGGREATSOFTWAREWITHCANDQT4MPRENTICEHALL,20116吴子平,徐爱钧基于QT/EMBEDDED的嵌入式GUI的研究与构建J电脑开发与应用2012017游燕珍,赵国锋,徐川基于QT/E的嵌入式GUI的研究及其移植J微计算机信息2008148郑振杰C程序设计M北京人民邮电出版社,20059柴欣,C/C程序设计J河北大学出版社,200210余苏宁、王明福,C程序设计D北京高等教育出版社,200311吕凤翥C语言程序设计第2版M电子工业出版社,2007212李云清、杨庆红、揭安全数据结构M人民邮电大学出版社,20046致谢毕业设计中困难重重,但是最终结果还是好的,在毕业设计初期,我毫无思路,没有任何突破口,甚至都有点灰心丧气,通过与老师的交流,我发现毕业设计本来就是个学习的过程,这是个绝佳的锻炼自学能力的实践,这中间的困难都需要自己去克服,老师只是引导,没有人能替代自己。在多次和老师邮件交流后,老师严谨的治学态度和清晰的设计思路都给我留下了深刻的印象,于是乎我通过不断地查阅资料,阅读大量的程序实例,逐渐建立了自己的模型,这期间老师也对我提出了任务要求,安排我每天的任务量,起初有些不适应,逐渐的习惯了就感觉每天都有提高,编程的过程中不断的出现令人烦恼的BUG,在老师的指点下,我一一的克服了这些错误,实现了连连看游戏,尽管过程很艰辛,但是这个学习的过程令人难忘,最终页收获了不少经验。在这个过程中,我认真研究了C和QT,学会了布局管理器、二维绘图模型、信号和槽,建立了从需求分析到测试的严格的开发程序的概念,规范了程序编写的步骤,提高了自己实际动手的能力,最终实现了小程序,这令我感到很欣慰。最后感谢,一直以来帮助我的老师和同学,在我最困惑的时候给我求解的思路,帮助我,支持我,感谢你们一路的陪伴,谢谢。外文原文BACKGROUNDCISTHEMAINDEVELOPMENTLANGUAGEUSEDBYMANYOFGOOGLESOPENSOURCEPROJECTSASEVERYCPROGRAMMERKNOWS,THELANGUAGEHASMANYPOWERFULFEATURES,BUTTHISPOWERBRINGSWITHITCOMPLEXITY,WHICHINTURNCANMAKECODEMOREBUGPRONEANDHARDERTOREADANDMAINTAINTHEGOALOFTHISGUIDEISTOMANAGETHISCOMPLEXITYBYDESCRIBINGINDETAILTHEDOSANDDONTSOFWRITINGCCODETHESERULESEXISTTOKEEPTHECODEBASEMANAGEABLEWHILESTILLALLOWINGCODERSTOUSECLANGUAGEFEATURESPRODUCTIVELYSTYLE,ALSOKNOWNASREADABILITY,ISWHATWECALLTHECONVENTIONSTHATGOVERNOURCCODETHETERMSTYLEISABITOFAMISNOMER,SINCETHESECONVENTIONSCOVERFARMORETHANJUSTSOURCEFILEFORMATTINGONEWAYINWHICHWEKEEPTHECODEBASEMANAGEABLEISBYENFORCINGCONSISTENCYITISVERYIMPORTANTTHATANYPROGRAMMERBEABLETOLOOKATANOTHERSCODEANDQUICKLYUNDERSTANDITMAINTAININGAUNIFORMSTYLEANDFOLLOWINGCONVENTIONSMEANSTHATWECANMOREEASILYUSE“PATTERNMATCHING“TOINFERWHATVARIOUSSYMBOLSAREANDWHATINVARIANTSARETRUEABOUTTHEMCREATINGCOMMON,REQUIREDIDIOMSANDPATTERNSMAKESCODEMUCHEASIERTOUNDERSTANDINSOMECASESTHEREMIGHTBEGOODARGUMENTSFORCHANGINGCERTAINSTYLERULES,BUTWENONETHELESSKEEPTHINGSASTHEYAREINORDERTOPRESERVECONSISTENCYANOTHERISSUETHISGUIDEADDRESSESISTHATOFCFEATUREBLOATCISAHUGELANGUAGEWITHMANYADVANCEDFEATURESINSOMECASESWECONSTRAIN,OREVENBAN,USEOFCERTAINFEATURESWEDOTHISTOKEEPCODESIMPLEANDTOAVOIDTHEVARIOUSCOMMONERRORSANDPROBLEMSTHATTHESEFEATURESCANCAUSETHISGUIDELISTSTHESEFEATURESANDEXPLAINSWHYTHEIRUSEISRESTRICTEDOPENSOURCEPROJECTSDEVELOPEDBYGOOGLECONFORMTOTHEREQUIREMENTSINTHISGUIDENOTETHATTHISGUIDEISNOTACTUTORIALWEASSUMETHATTHEREADERISFAMILIARWITHTHELANGUAGEHEADERFILESINGENERAL,EVERYCCFILESHOULDHAVEANASSOCIATEDHFILETHEREARESOMECOMMONEXCEPTIONS,SUCHASUNITTESTSANDSMALLCCFILESCONTAININGJUSTAMAINFUNCTIONCORRECTUSEOFHEADERFILESCANMAKEAHUGEDIFFERENCETOTHEREADABILITY,SIZEANDPERFORMANCEOFYOURCODETHEFOLLOWINGRULESWILLGUIDEYOUTHROUGHTHEVARIOUSPITFALLSOFUSINGHEADERFILESTHEDEFINEGUARDALLHEADERFILESSHOULDHAVEDEFINEGUARDSTOPREVENTMULTIPLEINCLUSIONTHEFORMATOFTHESYMBOLNAMESHOULDBE_H_TOGUARANTEEUNIQUENESS,THEYSHOULDBEBASEDONTHEFULLPATHINAPROJECTSSOURCETREEFOREXAMPLE,THEFILEFOO/SRC/BAR/BAZHINPROJECTFOOSHOULDHAVETHEFOLLOWINGGUARDIFNDEFFOO_BAR_BAZ_H_DEFINEFOO_BAR_BAZ_H_ENDIF/FOO_BAR_BAZ_H_HEADERFILEDEPENDENCIESDONTUSEANINCLUDEWHENAFORWARDDECLARATIONWOULDSUFFICEWHENYOUINCLUDEAHEADERFILEYOUINTRODUCEADEPENDENCYTHATWILLCAUSEYOURCODETOBERECOMPILEDWHENEVERTHEHEADERFILECHANGESIFYOURHEADERFILEINCLUDESOTHERHEADERFILES,ANYCHANGETOTHOSEFILESWILLCAUSEANYCODETHATINCLUDESYOURHEADERTOBERECOMPILEDTHEREFORE,WEPREFERTOMINIMIZEINCLUDES,PARTICULARLYINCLUDESOFHEADERFILESINOTHERHEADERFILESYOUCANSIGNIFICANTLYMINIMIZETHENUMBEROFHEADERFILESYOUNEEDTOINCLUDEINYOUROWNHEADERFILESBYUSINGFORWARDDECLARATIONSFOREXAMPLE,IFYOURHEADERFILEUSESTHEFILECLASSINWAYSTHATDONOTREQUIREACCESSTOTHEDECLARATIONOFTHEFILECLASS,YOURHEADERFILECANJUSTFORWARDDECLARECLASSFILEINSTEADOFHAVINGTOINCLUDE“FILE/BASE/FILEH“HOWCANWEUSEACLASSFOOINAHEADERFILEWITHOUTACCESSTOITSDEFINITIONWECANDECLAREDATAMEMBERSOFTYPEFOOORFOOFOREXAMPLE,VIRTUALANDRECURSIVEFUNCTIONSARENOTNORMALLYINLINEDUSUALLYRECURSIVEFUNCTIONSSHOULDNOTBEINLINETHEMAINREASONFORMAKINGAVIRTUALFUNCTIONINLINEISTOPLACEITSDEFINITIONINTHECLASS,EITHERFORCONVENIENCEORTODOCUMENTITSBEHAVIOR,EG,FORACCESSORSANDMUTATORSTHEINLHFILESYOUMAYUSEFILENAMESWITHAINLHSUFFIXTODEFINECOMPLEXINLINEFUNCTIONSWHENNEEDEDTHEDEFINITIONOFANINLINEFUNCTIONNEEDSTOBEINAHEADERFILE,SOTHATTHECOMPILERHASTHEDEFINITIONAVAILABLEFORINLININGATTHECALLSITESHOWEVER,IMPLEMENTATIONCODEPROPERLYBELONGSINCCFILES,ANDWEDONOTLIKETOHAVEMUCHACTUALCODEINHFILESUNLESSTHEREISAREADABILITYORPERFORMANCEADVANTAGEIFANINLINEFUNCTIONDEFINITIONISSHORT,WITHVERYLITTLE,IFANY,LOGICINIT,YOUSHOULDPUTTHECODEINYOURHFILEFOREXAMPLE,ACCESSORSANDMUTATORSSHOULDCERTAINLYBEINSIDEACLASSDEFINITIONMORECOMPLEXINLINEFUNCTIONSMAYALSOBEPUTINAHFILEFORTHECONVENIENCEOFTHEIMPLEMENTERANDCALLERS,THOUGHIFTHISMAKESTHEHFILETOOUNWIELDYYOUCANINSTEADPUTTHATCODEINASEPARATEINLHFILETHISSEPARATESTHEIMPLEMENTATIONFROMTHECLASSDEFINITION,WHILESTILLALLOWINGTHEIMPLEMENTATIONTOBEINCLUDEDWHERENECESSARYANOTHERUSEOFINLHFILESISFORDEFINITIONSOFFUNCTIONTEMPLATESTHISCANBEUSEDTOKEEPYOURTEMPLATEDEFINITIONSEASYTOREADDONOTFORGETTHATAINLHFILEREQUIRESADEFINEGUARDJUSTLIKEANYOTHERHEADERFILEFUNCTIONPARAMETERORDERINGWHENDEFININGAFUNCTION,PARAMETERORDERISINPUTS,THENOUTPUTSPARAMETERSTOC/CFUNCTIONSAREEITHERINPUTTOTHEFUNCTION,OUTPUTFROMTHEFUNCTION,ORBOTHINPUTPARAMETERSAREUSUALLYVALUESORCONSTREFERENCES,WHILEOUTPUTANDINPUT/OUTPUTPARAME
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 架管占地协议书
- 2025年自考法律专业试题及答案
- 2025年春季汽车专业试题及答案
- 2025年海纳ai面试题库及答案java
- 2025年国金ai面试题库及答案
- 2025医疗行业信息化建设中的医疗数据标准化挑战与对策
- STEM课程在K2教育中的跨文化教学策略与效果评估
- 树皮采购协议书
- 校友基金协议书
- 校园消杀协议书
- 护理康复操作规范
- 软组织损伤课件
- 工资欠薪协商协议书
- 直播切片授权协议书
- 影视剧组演员保密协议
- 国土空间规划试题及答案
- 2025至2030全球泛铁路工务后市场现状调查与发展潜力评估报告
- 2025-2030中国防火门行业市场发展趋势与前景展望战略研究报告
- 市政府关于消费提振工作情况的报告
- 2025-2030中国女性游戏行业市场发展分析及发展趋势与投资研究报告
- 制粉系统分析-直吹式制粉系统(锅炉原理)
评论
0/150
提交评论