毕业设计论文  俄罗斯方块游戏_第1页
毕业设计论文  俄罗斯方块游戏_第2页
毕业设计论文  俄罗斯方块游戏_第3页
毕业设计论文  俄罗斯方块游戏_第4页
毕业设计论文  俄罗斯方块游戏_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计论文正文题目俄罗斯方块游戏专业班级姓名学号指导教师职称俄罗斯方块游戏摘要在现代信息高速发展的时代,电子游戏已经深入了人们的日常生活,成为了老少咸宜的娱乐方式,但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的艺术,设计,声音和软件,所以并不是人人皆知,直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如汽车,家电等传统行业,也正因为如此,游戏人才的教育培养远落后于行业的发展。俄罗斯方块是一个老少咸宜的小游戏,它实现有四个正方形的色块组成,然后存储于一个数组的四个元素中,计算机随机产生七种不同类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键进行向左,向右,向下,翻转操作。然后程序根据这七种方块折叠成各种不同的类型。论文描述了游戏开发的背景,意义,算法分析,功能实现,功能测试。以C为开发语言进行设计与实现。关键词电子游戏,算法,C,测试THERUSSIANSQUAREPIECEABSTRACTINTHEERAOFHIGHSPEEDDEVELOPMENTOFELECTRONICOFINFORMATION,COMPUTERGAMEHASENTERPEOPLESDAILYLIFE,BECOMEANAMUSEMENTADAPTTOOLDANDYOUNGBUTGAMEDESIGNISACOMBINATIONOFFASTMOVINGTECHNOLOGY,THECOMPLEXITYOFINTEGRATINGDESIGN,ART,AUDIOANDSOFTWAREINTOASINGLEPRODUCTION,SOTHISTHECHNOLOGYISNTKNOWNBYEVERYONEUPTODATE,THEREAREFEWPEOPLEWORKATGAMEDESIGNALLTHESAME,WHEREAS,THEDEVELOPMENTOFGAMEINDUSTRYMOREFASTERTHANTRADITIONALINDUSTRYASHOMEAPPLIANCESANDAUTOMOBILE,BYTHEREASONOFTHISSITUATION,THEEDUCATIONANDTRAININGOFPERSONWITHABLITYOFGAMEDESIGNDROPBEHINDTHEDEVELOPMENTOFGAMEINDUSTRYTHERUSSIANSQUAREPIECEISAGETAWAYDRAMAWITHALLPROPEROLDYOUNG,ITCARRYOUTTOBECONSTITUTEBYFOURPIECESOFCOLOURSOFEXACTSQUAREPIECE,THENSAVEINONEFOURCHEMICALELEMENTSOFTHEPIECESET,RANDOMCREATIONDISSIMILARITYOFCALCULATORSEVENTHESQUAREPIECEOFTHECATEGORYTYPE,CONTROLITACCORDINGTOTHECALCULATORCLOCKINCERTAINTIMECONTINUOUSLYCREATION,THECUSTOMERISINSIDEOUTACCORDINGTOFOURDIRECTIONSKEYCONTROLOFTHEKEYBOARD,TOLEFT,RIGHTWARDSANDGETDOWN,THEREALIZATIONOFTHECONTROLKEYISTOBECARRYOUTBYTHEEVENTHANDINGOFTHEDIRECTIONKEYOFTHEKEYBOARDTHENTHEPROCEDUREPILEDSACCORDINGTOTHESESEVENKINDSOFSQUAREPIECESVARIOUSDIFFERENTMODELTHETHESISHASDESCRIBEDTHEGAMEHISTORY,HASDEVELOPEDTHISGAMEHISTORY,HASDEVELOPEDTHISGAMEENVIRONMENT,DEVELOPMENTSIGNIFICANCEOFGAMEKNOWLEDGEABIDINGBYASOFTWAREENGINEERING,DEFINITIONBEGINSFROMSOFTWAREPROBLEM,PROCEEDTOCARRYOUTFEASIBILITYSTUDY,NEEDANALYSIS,ESSENTIALSDESIGN,THEATLASTHASCARRIEDOUTATESTINGONTHESOFTWAREENGINEERINGKNOWLEDGEHIERARCHYTHECOMPUTERGAMESDESIGNANDPRACTICEAREDESIGNEDOECLIPSEDEVELOPINGPLATFORMWITHCDEVELOPINGINSTRUMENT,UNDERMICROSOFTWINDOWSXPSYSTEMTHISTIMEKEYWORDSELECTRONICGAMECALCULATEWAYCTEST目录1引言111课题背景112毕设意义22需求与算法分析321需求分析3211游戏需求3212游戏界面需求4213游戏形状方块需求422算法分析5221定义方块的数据结构5222俄罗斯方块流程53系统功能实现731产生主窗口732定义俄罗斯方块数据结构833游戏的主逻辑934销行功能实现1135中断操作流程的实现1336变形的实现1537游戏区域绘图的实现1638游戏方块绘制2039烟花燃放功能224功能测试2441测试环境2442图像功能测试2443销行和计分功能测试2744速度功能测试285总结29参考文献30致谢31俄罗斯方块的程序设计1引言计算机游戏产业在随着网络的发展有了长足的发展。游戏最早起源于纯文字的交互游戏MUD,MUD是英文MULTIUSERDUNGEONS的缩写。纯文字交互,顾名思义,是一纯文字的形式来进行游戏。即,所有的场景描述、物品的样子、所有人的行动、时间的描述都是用文字的方式表达的。总之,文字MUD是一个很需要想象力的游戏形式,需要从文字转化成玩家自己脑海中的现实场景。随着电子元器件的发展,电子产品迅速发展。掌上游戏机和电视游戏机在80年代和90年代风靡一时,此时由苏联人ALEXPAJITNOV制作的游戏俄罗斯方块在掌上游戏机和电视游戏机上流行,其造成的轰动和经济价值成为游戏史上的大事。所以本文通过用C实现俄罗斯方块学习游戏的整个设计和测试过程,学习用基于WINDOWS的游戏程序设计。11课题背景俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,(控制键的实现是由键盘的方向键的消息函数实现)。然后程序根据这七种方块堆叠成各种不同的模型。基于WINDOWS的游戏设计有很多方式,如基于JAVA跨平台的设计,基于NET平台的设计和基于MFC的设计,三种设计各有优缺。基于JAVA的设计能够充分运用JAVA跨平台的特性,便于移植,可以做到一次代码在不同环境下的运行,从而大大提高可移植性,便于在移动设备上运行,但是基于JAVA的设计由于运行在虚拟机上,效率比较低。基于NET平台的设计可以利用NET平台提高的接口大大简化设计过程,然而其通用性不好,需要NET平台支持,在执行效率上也不如MFC程序。基于MFC的程序设计具有执行高效的特点,跟WINDOWS的契合比较好,但不具有跨平台能力。相比三种设计方案,为了能够在WINDOWS平台上以更好的性能运行,本文采用VC基于MFC的设计,来完成俄罗斯方块的游戏。12毕设意义此次毕设通过用C设计与实现俄罗斯方块游戏。包括系统的需求分析;系统总框图及每个模块的设计分析;MFC应用程序架构;框架的扩展;算法的设计与实现;游戏的内部实现游戏区域绘图的实现;系统存在的问题及错误处理;以及游戏的测试和改进。通过此次毕业设计,我对软件设计的过程有了清晰的认识,通过编写游戏的各个方面工作学习了设计思想,程序架构,数据结构和算法,同时也对WINDOWS程序设计特别是基于MFC的程序设计有了直观的认识。通过游戏的测试学习到了常用的测试过程,测试方法。2需求与算法分析21需求分析211游戏需求功能性需求如下随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,若同时消去两行以上则会放烟花来庆祝,游戏可以设置难度,难度主要由方块的下降速度决定,下降速度越大难度越大,若在游戏中各形状填满了给定区域,为输者。如下表(表21)为游戏功能性需求表。功能简介顺时针旋转顺时针旋转转块逆时针旋转逆时针旋转转块绘制转块指定画板上绘制转块擦除矩形指定画板上擦除矩形右移动右移动转块左移动左移动转块下移动下移动转块丢下转块在画板上丢下转块燃放烟花在面板内根据一次得分多少燃放烟花计分根据用户消去的行数计分表21示例作为玩家,玩家可以控制难度,查看帮助等,对于操作性的需求如下玩家可以自己来控制方块下落的速度。玩家可以自己来控制游戏的难度。玩家可以看到游戏的积分。对本游戏有帮助说明和作者介绍等212游戏界面需求良好的用户界面,有提示显示和分数显示。让方块在一定的区域内运动和变形,该区域用一种颜色表明,即用一种颜色作为背景,最好设为黑色。还需用另一种颜色把黑色围起来,宽度适中,要实现美感。将整体界面分为三部分左侧半部分用来存放俄罗斯方块,是游戏的活动区,用户操作的图形变化在这个主界面区完成。右上侧部分显示下一次要产生的俄罗斯方块形状,以便用户预先知道,增加游戏的可玩性。右侧下半部分用来显示用户的分数和当前等级,以便让用户有成就感增加可玩性。如图为整体的界面设计需求效果,将整个界面分成了三部分,显得简易清爽,作为用户界面让玩家感觉比较舒服得体。如图21所示图21示例213游戏形状方块需求良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。为了使游戏更加美观更具可玩性,在绘制方块的过程中不采用默认的绘制方式,而是用经过处理的图片效果,这样让组成的方块更加美观,同时彩色的方块也让人赏心悦目,增加了游戏的可玩性。下图(图22)就是用来拼接方块颜色的样板色。图22示例由图可见这种带有实体效果的方块比一般的二维方块更具立体效果,更美观,会更吸引玩家。22算法分析221定义方块的数据结构对于方块在某一瞬间的位置标识,我们采用一个42的小数组标识出来,即用4个存储单位空间存储当前下坠物的每一子块的位置,也就是说,用4个存储单位空间存储当前下坠物的每一子块的位置来对整个下坠物件的位置进行标识,而每个存储空间的大小就是一个典的坐标值X,Y,而每个方块按照从左到右的方式进行编号,并且在编号过程中对于同一列的方块实行从上到下进行编号。如图23所示方块编号图23示例方块表示方法,即四个小方块的坐标设定其中一个方块是原点,坐标为0,0;右侧方块坐标1,0,下面的方块坐标0,1,以此类推。如下为程序中定义的各种X0,Y0X1,Y1X2,Y2X3,Y32301X0,Y0X1,Y1X2,Y2X3,Y30123方块的数据结构定义。222俄罗斯方块流程俄罗斯方块流程(图24)到达底部游戏结束到达底部结束销行操作生成下一个下坠物将新生的下坠物代替旧的“下一个下坠物“将旧的“下一个下坠物”用作当前下坠物销行操作游戏结束处理下降一个单位开始图24示例如图中所示是俄罗斯方块的处理流程,从开始判断是否到底底部,到达则做销行操作,然后生成下一个下坠物,将新的下坠物代替旧的下一个下坠物,将旧的下坠物当做当前的下坠物,下到底部判断是否做销行操作,然后判断游戏是否结束,未结束则继续新一轮的生产方块,若方块达到了顶部,占满了空间则游戏结束。3系统功能实现31产生主窗口通过INITINSTANCE函数来初始化窗口的各个信息,包括窗口的位置,位图信息按钮和时钟初始化等。INITINSTANCE函数的实现如下,程序首先调用CREATWINDOW函数创建初始窗口句柄,然后设置窗口显示坐标,将窗口居中,用空的位图来初始化使界面内都是是空的。定义好窗口和时钟最后讲窗口显示出来。BOOLINITINSTANCEHINSTANCEHINSTANCE,INTNCMDSHOWHWNDHWNDINTX,YHINSTHINSTANCE/STOREINSTANCEHANDLEINOURGLOBALVARIABLEHWNDCREATEWINDOWSZWINDOWCLASS,SZTITLE,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,HINSTANCE,NULLIFHWNDRETURNFALSE/窗口居中,高度包含标题栏的30XGETSYSTEMMETRICSSM_CXSCREENYGETSYSTEMMETRICSSM_CYSCREENMOVEWINDOWHWND,XGAMEWIDTH/2,YGAMEHEIGHT30/2,GAMEWIDTH,GAMEHEIGHT30,FALSE/设置DCHDCWINDOWGETDCHWNDHDCMEMCREATECOMPATIBLEDCHDCWINDOWHDCCANVASCREATECOMPATIBLEDCHDCWINDOW/用空位图初始化DCHMAPNULLCREATECOMPATIBLEBITMAPHDCWINDOW,GAMEWIDTH,GAMEHEIGHTSELECTOBJECTHDCCANVAS,HMAPNULLSELECTOBJECTHDCMEM,HMAPNULL/位图初始化BMSTARTINITHINSTANCE,IDB_BITMAP_STARTBMSTARTSETDEVICEHDCCANVAS,HDCMEMBMSTARTINITSIZELIST1,PICW,PICHBMBACKINITHINSTANCE,IDB_BITMAP_BACKBMBACKSETDEVICEHDCCANVAS,HDCMEMBMBACKINITSIZELIST1,200,200BMSQUAREINITHINSTANCE,IDB_BITMAP_SQUAREBMSQUARESETDEVICEHDCCANVAS,HDCMEMBMSQUAREINITSIZELIST5,22,22BMBOMBINITHINSTANCE,IDB_BITMAP_BOMBBMBOMBSETDEVICEHDCCANVAS,HDCMEMBMBOMBINITSIZELIST5,22,22,1/按钮MYBUTTONINITHINSTANCE,IDB_BITMAP_BUTTONMYBUTTONSETDEVICEHDCCANVAS,HDCMEMMYBUTTONINITBUTTON6,BTRECT/按钮MYCLOCKINITHWND,TIME_INFO/时钟SRANDUNSIGNEDTIMENULL/初始化随机函数/显示窗口SHOWWINDOWHWND,NCMDSHOWUPDATEWINDOWHWNDRETURNTRUE32定义俄罗斯方块数据结构俄罗斯方块通过坐标来实现,其数据结构如下/每四个点,表示一种方块/一维,二维都可以做POINTGL_SQUARE28/方形0,0,1,0,0,1,1,1,/长条0,1,0,0,0,1,0,2,/Z1,1,0,1,0,0,1,0,/Z1,1,0,1,0,0,1,0,/L1,1,1,0,0,0,1,0,/L1,0,0,0,1,0,1,1,/1,0,0,0,1,0,0,1,33游戏的主逻辑将新的下坠物放置到游戏区域中去,这时可能出现马上到达底部的情况,因此需要对它进行判断,如果是到达底部,则进行销行处理,并且修改相应的数据状态。而判断是否已经到达了底部,可以通过当前下坠物件所对应的接触面的方块位置为被占用状态来确定,利用数组记录17种下坠物的14种形态的接触面信息。统计分数在消行处理里面有一个专门用来统计消行数的变量,然后根据变量的值决定分数的多少,程序统计分数是消一行得10分,同时消2行得30分,消得3行得60分,消得4行得100分。如果总分数达到过关条件就过关,改变游戏速度。没有达到过关分数或者没有满行,则加载下一个方块继续游戏。如图31所示是否堆积方块,判断接触面状态及是否得分2统计分数判断是否过关关数增加,游戏速度将变快。调用游戏速度模块增加游戏速度视图重绘(INVALIDATEVIEW)1判断行满、处理销行、堆积方块向下移动图31示例以下为实际代码中游戏的主要逻辑检测函数CHECKGAME的代码部分,根据系统的状态确定是否生产新的方块还是移动当前方块直到其落到底部判断是否该销行,进行下次的循环。IFINVALIDSQUARENOWID/如果没有当前移动的方块/生成当前方块MEMCPYSQUARENOWPOSX4SQUARENOWPOSY0ITIME0IFCANMOVE/如果新生成的方块无法移动,失败ISTATEGAME_FAILMYCLOCKRESTARTTIME_FAIL/生成下一个CREATENEXTELSE/移动当前方块ITIMEIFITIME12ISPEEDITIME0IFCANMOVE/清除当前方块SQUARENOWIDINVALID/写入数组PUTSPAREELSESQUARENOWPOSY34销行功能实现当俄罗斯方块占满了空间内的一块或者多行时,系统就该消去一行,同时给用户相应的得分,当用户得分达到20分以上时则根据分数等级给予用户烟花表演以示鼓励。用户游戏空间有19行,10列,每次判断销行时从最低行开始判断是否十列都被俄罗斯方块填满,填满则清楚该行然后循环判断。其代码如下。VOIDGAMEBOXCLEARROWINTIINTM,N/行列INTINUMINTISCOREROW0,10,30,60,100/分值,1行10分,2行30,3行60,4行100INTIROW/消去多少行IROW0/第19行,是最底一行FORM19M0MINUM0FORN0N0I/移动MEMCPYGAMEMAPI,GAMEMAPI1,10SIZEOFINTMEMSETGAMEMAP0,0,10SIZEOFINTM/重要,再次检测这一行IFINUM0/空行,不再判断BREAK/以下代码会根据消去的行数,判断是否然后烟花,以及燃放烟花的级数。ISCOREISCOREROWIROW/增加分数IFIROW2/消除两行以上BEGINBOMBIROW35中断操作流程的实现(1)处理键盘事件关于按键命令消息的响应,可以通过对WM_KEYDOWN消息的处理函数进行截获并重写来实现,下面是对该处理函数KEYPROC。根据输入的字符选择适当的操作。VOIDGAMEBOXKEYPROCINTIKEY/只有游戏进行中,才响应按键IFISTATEGAME_INRETURNSWITCHIKEYCASEVK_UPROTATEBREAKCASEVK_LEFTMOVELEFTBREAKCASEVK_RIGHTMOVERIGHTBREAKCASEVK_DOWNMOVEDOWNBREAK以上就是在输入上下左右键时要做的操作,程序会根据键盘输入选择是向哪移动。以下为一些功能键输入后的反应,如输入F2可燃放2级的烟花,输入F3可燃放3级烟花,输入F4可燃放4级烟花。按F12可以加快游戏的速度,按ESC可以退回到主菜单然后退出游戏。CASEKEY_F2BEGINBOMB2BREAKCASEKEY_F3BEGINBOMB3BREAKCASEKEY_F4BEGINBOMB4BREAKCASEKEY_F12IFISPEED9|M19|VALIDGAMEMAPMNICAN0BREAKIFICANFORI0I0BMSQUARESHOWSQUARENOWICOLOR,X0SQUARENOWCHIPIXITEM_EDGE,Y0SQUARENOWCHIPIYITEM_EDGE最后在整个界面内,20行,10列根据当前的GAMEMAP确定每一个方块格是否该绘图,如果该相应的MAP中需要绘制则绘制其图像。/已经放置的方块FORM0M4RETURNISTARTBOMB1MAGICOBJ0X120MAGICOBJ0Y430MAGICOBJ0XOFF0MAGICOBJ0YOFF16ISIZE2/设置初始上抛速度ISCENESCENE0ISCALEISIZETABLEISIZE/设置粒子数量烟花的具体燃放过程通过GAMEBOX类中的SHOWBOMB函数燃放烟花,然后过程会将粒子上抛到空中,然后通过MYBITMAP燃放烟花对象BMBOMB来显示烟花。VOIDGAMEBOXSHOWBOMBINTIIFISTARTBOMBIFSCENE0ISCENE/一个粒子上抛至顶点BMBOMBSHOWNOBACKPIC0,MAGICOBJ0X,MAGICOBJ0Y/刷新坐标MAGICOBJ0YMAGICOBJ0YOFFMAGICOBJ0YOFFIFMAGICOBJ0YOFF0ISCENESCENE1/动画2FORI0I15ISTARTBOMB0/停止4功能测试对于编写好的游戏软件,需要进行各种测试来保证软件的正常运行,常见的测试手段包括黑盒测试和白盒测试,软件测试主要工作内容是验证VERIFICATION和确认VALIDATION,验证VERIFICATION是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。确认VALIDATION是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件。本文中着重用黑盒测试来测试软件的各个功能是否正确。41测试环境本文中俄罗斯方块的测试环境如下硬件环境联想PC机,INTEL5300双核CPU,2GB内存,250G硬盘软件环境WINDOWSXP操作系统42图像功能测试当游戏在刚刚启动后会进入其启动界面,在启动界面中显示学号和姓名,启动过程如下图41所示图41示例程序正常运行过程中,其初始界面如上图显示,初始界面后会显示游戏的控制界面如下,在控制界面上显示开始,操作和设置等几个按钮,如图42所示图42示例当选择操作按钮时,显示操作的提示页面如下图显示操作按键的用法等。如下图43所示图43示例在主界面选择设置按钮则可以显示设置游戏速度的窗口,如下图44所示,通过点击左右来调整速度图44示例当选择游戏开始时,就进入游戏的主界面,如图主界面分为以下三部分,主游戏窗口,右上角的下一个方块窗口和游戏的分数级速度窗口。如下图45所示图45示例当游戏失败时就会显示游戏失败的窗口,如下图46所示图46示例43销行和计分功能测试当游戏完成了一行时就会消去一行,当消去的行数大于2行时系统就会通过燃放烟花来庆祝,以增加游戏性,如下就是游戏的销行后加分的情况。以下就是消去2行时,燃放的烟花数目。同时燃放2行加30分,计分情况正常。如下图47所示图47示例当同时消去3行时,程序加60分,同时燃放大烟花庆祝,燃放效果如下,燃放的烟花效果更大。如下图48所示图48示例当同时消去4行时,程序加100分,同时燃放的烟花数目增大,效果增强,如下图49所示图49示例44速度功能测试当玩家的分数等级达到一定等级后游戏的速度就会增大,游戏有9个速度等级,根据游戏当前的等级来设置下落的速度,根据测试结果显示,游戏中速度设置合适,下落速度等级满足用户习惯。5总结通过此次完整的游戏设计实现过程,学习了游戏开发的各个步骤,从游戏的需求设计,概要设计,到游戏的流程设计,详细设计,最后代码实现,测试。通过这一系列的流程加深了对软件过程的理解,对软件的需求分析方式方法有清晰的认识,运用软件开发过程的瀑布模型按照软件的开发流程一步一步进行开发,最终完成了毕业设计。对于游戏的主体设计,当软件的开发过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论