




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
俄罗斯方块游戏课程设计目录前言1工程概况111项目名称112设计平台113程序设计思想114运用的控件和主要对象215主要实现的功能216开发人员与分工2正文321游戏设计的具体实现3211游戏界面的设计和背景音乐及特效的实现3212俄罗斯方块的造型3213俄罗斯方块的旋转3214如何实现方块的运动和自动消除满行的方块4215游戏速度和游戏级别自由选择5216游戏得分的计算和游戏菜单的编辑522游戏功能的介绍5有关说明631游戏设计中的不足之处632VB与C语言之间的不同之处7321局部静态变量7322HANDLES和WITHEVENTS7323类型转换运算符7324默认属性和属性参数8325可选参数和按名传递8致谢8参考文献8附件9前言VISUALBASIC继承了BASIC语言易学易用的特点,特别适合于初学者学习WINDOWS系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。于是我们小组着手设计开始一个这样的游戏软件。通过这学期来VISUALBASIC的学习,我初步掌握了VISUALBASIC语言的最基本的知识,于是在化希耀张兵等老师的指导下动手用VISUALBASIC编写俄罗斯方块游戏。无可争议,俄罗斯方块是有史以来最伟大的游戏之一。它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。俄罗斯方块举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似俄罗斯方块触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。在曾经发布过的所有游戏中,俄罗斯方块还被认为是仅有的一个能够真正吸引广泛人群的作品。某些批评家也许会声称,俄罗斯方块要比过去二十年间出现的任何东西都要浪费人们的时间。至于我们,则要欣然提名它为GAMESPOT评选出的历史上最伟大游戏之一。为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用VB语言开发一个经典的俄罗斯方块游戏。工程概况11项目名称俄罗斯方块游戏12设计平台VB全称VISUALBASIC,它是以BASIC语言作为其基本语言的一种可视化编程工具。VB是MICROSOFT公司于1991年退出的WINDOWS应用程序开发工具VISUAL意思是“可视化的”。在它刚推出来时,自身还存在一些缺陷,功能也相对少一些。但是经过多年的开发研究。最近MICROSOFT公司又推出了VB60版本VB60运行环境硬件,要求486以上的处理器、16MB以上内存,50MB以上的硬盘,CDROM驱动器,鼠标。软件要求WINDOWS95以上版本。13程序设计思想游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景和动听的音乐,设置了过关升级的功能,激发大家的娱乐激情。从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片框中构造了一个44的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的函数进行记录,最后就可以得出用户的分数,用IF语句对分数判断,达到一定的积分就可以升级到下一个档次。俄罗斯方块游戏设计的主要步骤为以下10个方面(1)游戏界面的设计。(2)俄罗斯方块的造型。(3)俄罗斯方块的旋转。(4)俄罗斯方块的运动情况(包括向左,向右和向下)。(5)俄罗斯方块的自动消行功能。(6)游戏级别的自由选择。(7)游戏速度的自由选择。(8)游戏得分的计算。(9)游戏菜单选项的设计及功能实现。(10)游戏的背景音乐。14运用的控件和主要对象我们在设计过程中主要用到的控件有COMMAND控件,IMAGE控件,PICTURE控件,LABEL控件,TIMER控件,TEXT控件,WINDOWSMEDIAPLAYER控件等等。15主要实现的功能我们开发的俄罗斯方块游戏,主要实现了以下几种功能1可以灵活控制方块在图形框中运动。2游戏过程中方块可以自由旋转。3当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。4游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度,游戏等级为初始游戏时在基层随机生成一定行数的无规律方块,生成的行数由你来选择,每行至少产生5个以上的无规律方块,这样增加了游戏难度,对于游戏高手来说,无疑不是一个新的挑战。5游戏的得分支持积分,并且按照公式得分原来分数1002同时消除的行数1这样,你同一时间消除的行数越多,你的得分也就越高,当游戏积分到了一定时可以自动升级,这个升级指速度升级。6游戏中提供了一个漂亮的场景和动听的音乐,给你带来无限激情。16开发人员与分工组长李虎同学所做工作如下(1)俄罗斯方块的旋转。(2)俄罗斯方块的运动情况。(3)俄罗斯方块的自动消行功能。(4)游戏得分的计算。(5)游戏菜单选项的设计及功能实现。副组长王志伟同学所做工作如下(1)游戏界面的设计。(2)俄罗斯方块的造型。(3)游戏级别的自由选择。(4)游戏速度的自由选择。(5)游戏的背景音乐。正文21游戏设计的具体实现在我们两个人共同努力下,此次设计,终于能够圆满完成。由于时间的紧促,在设计中,也许会有一些考虑不周之处,但其功能已经能够满足大多用户的需求,相信假以时日,一定能做出一个更经典,更完美的俄罗斯方块游戏,下面我们将对每一步的具体如何实现展示给大家。211游戏界面的设计和背景音乐及特效的实现俄罗斯方块游戏主要由两个界面构成,登陆界面和开始游戏界面。游戏的背景音乐是由一段代码调用系统播放器WINDOWSPLAYER播放背景音乐,由于本次设计主要是针对游戏如何设计的,所以在这里就不对播放背景音乐的功能做介绍了。212俄罗斯方块的造型相信朋友们都玩过俄罗斯方块,对这个游戏的玩法和方块形状都比较熟悉。我们这个游戏只选择了最基本的7中造型,包括长条型,正方型,正S型,反S型,正7型,反7型,T型。如果需要我们可以添加更多的造型。将游戏界面的游戏区图片框分割成1020的小块,每个小块放置一个COMMAND控件,预览区图片框按同样比例分割成44的小块,同样有COMMAND控件构成,我们可以把预览区图片框看作是从游戏区图片框中选取的一个部分,游戏区的小方块编号和预览区编号如下图012345678990919293949596979899游戏区编号预览区编号利用SELECT将方块的7中造型列出,比如长条型的设计,在欲览区中分别有3456和5152535四个方块构成两中形态,用数组为M03M14M25M36SITUATION20M05M115M225M335SITUATION21将它的形状编号为0和1,在后面方便调用,其他的方块造型同样的方法。213俄罗斯方块的旋转俄罗斯方块的旋转主要将方块的位置加以变换得到的,例如上述范例,长条型有两中样式,根据小方块的编号变动来实现整个造型的旋转,比如IFN0182ANDN3905THENCMDFANGJVISIBLETRUENEXTNEXT可以根据你选择的难度系数在底层的每一行随机产生超过半数(即5个以上)以上的小方块,这样适合喜欢高难度的玩家。216游戏得分的计算和游戏菜单的编辑游戏得分的计算主要是根据消除的行数来决定的,当然每一次同时消除的行数不一样,每一行的得分也不一样,如果你每次消除的行数为1,则最后得分是100分,如果同时消除2行,则最后得分是300分,同时消除3行,得分为700分,同时消除4行,得分为1500分,这由公式得分原来分数1002同时消除的行数1。游戏的编辑,读者可以参照下面的功能介绍。22游戏功能的介绍文件F开始F1开始游戏。继续F2继续游戏。暂停F3暂时停止游戏,点击继续的时候可以继续游戏。退出CTRLQ退出游戏。设置选择游戏级别。选择游戏速度。考验显示F5显示欲览区方块。隐藏F6隐藏欲览区方块。帮助操作提示以及版本信息和作者资料。用户界面具体如图图登陆界面图游戏界面图菜单编辑界面图游戏帮助界面有关说明经过两个多星期的设计和开发,俄罗斯方块游戏已经成功。其功能基本符合用户需求,能够完成游戏的控制,方块的变换以及消层等功能。并提供游戏设置,对于一些技术性比较过硬的玩家,可以调游戏级别、以及游戏速度,使得玩家能够充分的发挥竞技游戏的特色,可以不断的挑战自我,挑战极限。31游戏设计中的不足之处但是由于课程设计时间较短,所以该游戏还有许多不尽如人意的地方,比如方块类型太少,退出游戏不能存储进度等多方面问题。这些都有待进一步改善,我们在游戏中还可以更换背景音乐,以适合不同的玩家,在每通过一关可以给玩家播放一段FLASH,吸引玩家去挑战极限,不断提高玩家的兴趣,相信在以后的制作过程中我们将给大家带来一个更新功能更全面的游戏。32VB与C语言之间的不同之处我们这个小游戏也可以用C语言来实现,在程序的编程上没有VB语言方便实用,C语言和VB语言之间存在很多的共同点,虽然语法方面有点差异,但是在编程思路上完全一样,VB能够实现很多C不能做到的功能,如WHEN语句、OPTIONAL参数、局部STATIC变量、对象实例访问静态方法、HANDLES绑定事件、ONERROR处理异常、OBJECT直接后期绑定等等。VB和C语言,编译出来的是同样的CIL,但为什么VB支持很多有趣的特性呢。我们一起来探究一下。321局部静态变量VB支持用STATIC关键字声明局部变量,这样在过程结束的时候可以保持变量的数值PUBLICSUBTEST1STATICIASINTEGERI1实现一个过程调用计数器ENDSUB我们实现了一个简单的过程计数器。每调用一次TEST,计数器的数值就增加1。其实还有很多情况我们希望保持变量的数值。而C的STATIC是不能用在过程内部的。因此要实现过程计数器,我们必须声明一个类级别的变量。这样做明显不如VB好。因为无法防止其他过程修改计数器变量。这就和对象封装一个道理,本来应该是一个方法的局部变量,现在我要被迫把它独立出来,显然是不好的设计。那么VB是怎么生成局部静态变量的呢将上述代码返汇编,我们可以清楚地看到在VB生成的CIL中,I不是作为局部变量,而是作为类的FIELD出现的FIELDPRIVATESPECIALNAMEINT32STATICTEST12001I也就是说,I被改名作为一个类的字段,但被冠以SPECIALNAME。在代码中试图访问STATICTEST12001I是不可能的,因为它不是一个有效的标识符。但是在IL中,将这个变量加一的代码却与一般的类字段完全一样,是通过LDFLD加载的。我觉得这个方法十分聪明,把静态变量变成生命周期一样的类字段,但是又由编译器来控制访问的权限,让它成为一个局部变量。同时也解释了VB为什么要用两个不同的关键字来声明静态变量STATIC和SHARED。由于局部静态变量的实质是类的字段,所以它和真正的局部变量还是有所不同的。比如在多线程条件下,对局部静态变量的访问就和访问字段相同。322HANDLES和WITHEVENTSVB除了可以用C那样的方法来处理事件响应以外,还有从VB5继承下来的独特的事件处理方式WITHEVENTS。我喜欢称这种事件处理方式为静态的事件处理,书写响应事件的方法时就已经决定该方法响应的是哪一个事件,而C则是在代码中绑定事件的。VB中WITHEVENTS静态方法是非常有用的,它可以显著增强代码可读性,同时也让VBNET中的事件处理非常方便,不像C那样离开了窗体设计器就必须手工绑定事件。323类型转换运算符在VISUALBASIC2005中将加入一个新的运算符TRYCAST,相当于C的AS运算符。我一直希望VB有这样一个运算符。VB目前的类型转换运算符主要有CTYPE和DIRECTCAST。他们的用法几乎一样。我详细比较了一下这两个运算符,得出以下结论1在转换成引用类型时,两者没有什么区别,都是直接调用CASTCLASS指令,除非重载了类型转换运算符CTYPE。DIRECTCAST运算符是不能重载的。2转换成值类型时,CTYPE会调用VB指定的类型转换函数(如果有的话),比如将STRING转换为INT32时,就会自动调用。324默认属性和属性参数在原先的VB6里,有一项奇特的功能默认属性。在VB6中,对象的名称可以直接表示该对象的默认属性。325可选参数和按名传递VB从40开始支持“可选参数”这一特性。就是说,函数或子程序的参数有些是可选的,调用的时候可以不输入。其实VB从10开始就有一些函数带有可选参数,只不过到了40才让用户自己开发这样的过程。在VB4里,可选参数可以不带默认值,而在VB里,如果使用可选参数,则必须带有默认值。在调用的时候,VB若发现参数被省略,则自动读取PARAM部分的默认值,并显式传递给过程。这一部分完全由编译器处理,而且没有任何性能损失,和手工传递所有参数是完全一样的。至于按名传递,VB会自动调整参数的顺序,其结果与传统方式的传递也没有任何的不同。这说明我们可以放心地使用这项便利。而且带有可选参数的过程拿到C中,顶多变成不可选参数,也不会造成什么其他的麻烦。PS很多COM组件都使用了默认参数,而且有些过程的参数列表非常长,在VB里可以轻松地处理它们,而在C中经常让开发者传参数传到吐血。致谢在本次课程设计中,我从指导老师化希耀和张兵身上学到了很多东西。老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。另外,在游戏开发过程中许多同学也给于我们很大的帮助,帮助解决了不少的难点,使得游戏能及时开发完成,在此谢谢各位对此次设计的帮助。参考文献1龚沛曾,陆慰民,杨志强VSUALBASIC程序设计教程高等教育出版社出版。2刘新民,蔡琼,白糠生VSUALBASIC60程序设计清华大学出版社出版。3唐凯军,汤惠莉VB6编程80例上手山东电子音像出版社。4卢毅VSUALBASIC实例教程科学出版社出版。5赵欣胜,亢慧娟,刘晟宏VSUALBASIC经典范例50讲科学出版社出版。附件PRIVATESUBHIDEFANGAASINTEGER定义使方块不可见的过程SELECTCASEACASE0A0使游戏区方块不可见CMDFANGN0VISIBLEFALSECMDFANGN1VISIBLEFALSECMDFANGN2VISIBLEFALSECMDFANGN3VISIBLEFALSECASE1A1使预览区方块不可见CMDFANGNEXTM0VISIBLEFALSECMDFANGNEXTM1VISIBLEFALSECMDFANGNEXTM2VISIBLEFALSECMDFANGNEXTM3VISIBLEFALSEENDSELECTENDSUBPRIVATESUBSHOWFANGAASINTEGER定义使方块可见的过程SELECTCASEACASE0A0使游戏区方块可见CMDFANGN0VISIBLETRUECMDFANGN1VISIBLETRUECMDFANGN2VISIBLETRUECMDFANGN3VISIBLETRUECASE1A1使预览区方块不可见CMDFANGNEXTM0VISIBLETRUECMDFANGNEXTM1VISIBLETRUECMDFANGNEXTM2VISIBLETRUECMDFANGNEXTM3VISIBLETRUEENDSELECTENDSUBPRIVATESUBCLEARLINE定义消除整行的过程FORI190TO10STEP10IFCMDFANGIVISIBLETRUEAND_CMDFANGI1VISIBLETRUEAND_CMDFANGI2VISIBLETRUEAND_CMDFANGI3VISIBLETRUEAND_CMDFANGI4VISIBLETRUEAND_CMDFANGI5VISIBLETRUEAND_CMDFANGI6VISIBLETRUEAND_CMDFANGI7VISIBLETRUEAND_CMDFANGI8VISIBLETRUEAND_CMDFANGI9VISIBLETRUETHENFORJI4TOISTEP1T1CMDFANGJVISIBLEFALSECMDFANG2I9JVISIBLEFALSEFORK1TO4000DOEVENTSNEXTT0NEXTLINENUMLINENUM1FORJI1TO0STEP1IFCMDFANGJVISIBLETRUETHENCMDFANGJVISIBLEFALSECMDFANGJ10VISIBLETRUEENDIFNEXTCLEARLINE为了实现连消数行,这里使用递归调用ENDIFNEXTENDSUBPRIVATEFUNCTIONDOWNABLEASBOOLEAN自定义函数,确定方块是否能下降IFN00ANDN1MOD100ANDN2MOD100ANDN3MOD100THENIFCMDFANGN01VISIBLEFALSEAND_CMDFANGN11VISIBLEFALSEAND_CMDFANGN21VISIBLEFALSEAND_CMDFANGN31VISIBLEFALSETHENLEFTABLETRUEELSELEFTABLEFALSEENDIFELSELEFTABLEFALSEENDIFENDFUNCTIONPRIVATEFUNCTIONRIGHTABLEASBOOLEAN自定义函数,确定方块是否能右移IFN0MOD109ANDN1MOD109ANDN2MOD109ANDN3MOD109THENIFCMDFANGN01VISIBLEFALSEAND_CMDFANGN11VISIBLEFALSEAND_CMDFANGN21VISIBLEFALSEAND_CMDFANGN31VISIBLEFALSETHENRIGHTABLETRUEELSERIGHTABLEFALSEENDIFELSERIGHTABLEFALSEENDIFENDFUNCTION俄罗斯方块游戏课程设计目录前言1工程概况111项目名称112设计平台113程序设计思想114运用的控件和主要对象215主要实现的功能216开发人员与分工2正文321游戏设计的具体实现3211游戏界面的设计和背景音乐及特效的实现3212俄罗斯方块的造型3213俄罗斯方块的旋转3214如何实现方块的运动和自动消除满行的方块4215游戏速度和游戏级别自由选择5216游戏得分的计算和游戏菜单的编辑522游戏功能的介绍5有关说明631游戏设计中的不足之处632VB与C语言之间的不同之处7321局部静态变量7322HANDLES和WITHEVENTS7323类型转换运算符7324默认属性和属性参数8325可选参数和按名传递8致谢8参考文献8附件9前言VISUALBASIC继承了BASIC语言易学易用的特点,特别适合于初学者学习WINDOWS系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。于是我们小组着手设计开始一个这样的游戏软件。通过这学期来VISUALBASIC的学习,我初步掌握了VISUALBASIC语言的最基本的知识,于是在化希耀张兵等老师的指导下动手用VISUALBASIC编写俄罗斯方块游戏。无可争议,俄罗斯方块是有史以来最伟大的游戏之一。它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。俄罗斯方块举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似俄罗斯方块触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。在曾经发布过的所有游戏中,俄罗斯方块还被认为是仅有的一个能够真正吸引广泛人群的作品。某些批评家也许会声称,俄罗斯方块要比过去二十年间出现的任何东西都要浪费人们的时间。至于我们,则要欣然提名它为GAMESPOT评选出的历史上最伟大游戏之一。为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用VB语言开发一个经典的俄罗斯方块游戏。工程概况11项目名称俄罗斯方块游戏12设计平台VB全称VISUALBASIC,它是以BASIC语言作为其基本语言的一种可视化编程工具。VB是MICROSOFT公司于1991年退出的WINDOWS应用程序开发工具VISUAL意思是“可视化的”。在它刚推出来时,自身还存在一些缺陷,功能也相对少一些。但是经过多年的开发研究。最近MICROSOFT公司又推出了VB60版本VB60运行环境硬件,要求486以上的处理器、16MB以上内存,50MB以上的硬盘,CDROM驱动器,鼠标。软件要求WINDOWS95以上版本。13程序设计思想游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景和动听的音乐,设置了过关升级的功能,激发大家的娱乐激情。从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片框中构造了一个44的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的函数进行记录,最后就可以得出用户的分数,用IF语句对分数判断,达到一定的积分就可以升级到下一个档次。俄罗斯方块游戏设计的主要步骤为以下10个方面(1)游戏界面的设计。(2)俄罗斯方块的造型。(3)俄罗斯方块的旋转。(4)俄罗斯方块的运动情况(包括向左,向右和向下)。(5)俄罗斯方块的自动消行功能。(6)游戏级别的自由选择。(7)游戏速度的自由选择。(8)游戏得分的计算。(9)游戏菜单选项的设计及功能实现。(10)游戏的背景音乐。14运用的控件和主要对象我们在设计过程中主要用到的控件有COMMAND控件,IMAGE控件,PICTURE控件,LABEL控件,TIMER控件,TEXT控件,WINDOWSMEDIAPLAYER控件等等。15主要实现的功能我们开发的俄罗斯方块游戏,主要实现了以下几种功能1可以灵活控制方块在图形框中运动。2游戏过程中方块可以自由旋转。3当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。4游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度,游戏等级为初始游戏时在基层随机生成一定行数的无规律方块,生成的行数由你来选择,每行至少产生5个以上的无规律方块,这样增加了游戏难度,对于游戏高手来说,无疑不是一个新的挑战。5游戏的得分支持积分,并且按照公式得分原来分数1002同时消除的行数1这样,你同一时间消除的行数越多,你的得分也就越高,当游戏积分到了一定时可以自动升级,这个升级指速度升级。6游戏中提供了一个漂亮的场景和动听的音乐,给你带来无限激情。16开发人员与分工组长李虎同学所做工作如下(1)俄罗斯方块的旋转。(2)俄罗斯方块的运动情况。(3)俄罗斯方块的自动消行功能。(4)游戏得分的计算。(5)游戏菜单选项的设计及功能实现。副组长王志伟同学所做工作如下(1)游戏界面的设计。(2)俄罗斯方块的造型。(3)游戏级别的自由选择。(4)游戏速度的自由选择。(5)游戏的背景音乐。正文21游戏设计的具体实现在我们两个人共同努力下,此次设计,终于能够圆满完成。由于时间的紧促,在设计中,也许会有一些考虑不周之处,但其功能已经能够满足大多用户的需求,相信假以时日,一定能做出一个更经典,更完美的俄罗斯方块游戏,下面我们将对每一步的具体如何实现展示给大家。211游戏界面的设计和背景音乐及特效的实现俄罗斯方块游戏主要由两个界面构成,登陆界面和开始游戏界面。游戏的背景音乐是由一段代码调用系统播放器WINDOWSPLAYER播放背景音乐,由于本次设计主要是针对游戏如何设计的,所以在这里就不对播放背景音乐的功能做介绍了。212俄罗斯方块的造型相信朋友们都玩过俄罗斯方块,对这个游戏的玩法和方块形状都比较熟悉。我们这个游戏只选择了最基本的7中造型,包括长条型,正方型,正S型,反S型,正7型,反7型,T型。如果需要我们可以添加更多的造型。将游戏界面的游戏区图片框分割成1020的小块,每个小块放置一个COMMAND控件,预览区图片框按同样比例分割成44的小块,同样有COMMAND控件构成,我们可以把预览区图片框看作是从游戏区图片框中选取的一个部分,游戏区的小方块编号和预览区编号如下图012345678990919293949596979899345613141516游戏区编号预览区编号利用SELECT将方块的7中造型列出,比如长条型的设计,在欲览区中分别有3456和5152535四个方块构成两中形态,用数组为M03M14M25M36SITUATION20M05M115M225M335SITUATION21将它的形状编号为0和1,在后面方便调用,其他的方块造型同样的方法。213俄罗斯方块的旋转俄罗斯方块的旋转主要将方块的位置加以变换得到的,例如上述范例,长条型有两中样式,根据小方块的编号变动来实现整个造型的旋转,比如IFN0182ANDN3905THENCMDFANGJVISIBLETRUENEXTNEXT可以根据你选择的难度系数在底层的每一行随机产生超过半数(即5个以上)以上的小方块,这样适合喜欢高难度的玩家。216游戏得分的计算和游戏菜单的编辑游戏得分的计算主要是根据消除的行数来决定的,当然每一次同时消除的行数不一样,每一行的得分也不一样,如果你每次消除的行数为1,则最后得分是100分,如果同时消除2行,则最后得分是300分,同时消除3行,得分为700分,同时消除4行,得分为1500分,这由公式得分原来分数1002同时消除的行数1。游戏的编辑,读者可以参照下面的功能介绍。22游戏功能的介绍文件F开始F1开始游戏。继续F2继续游戏。暂停F3暂时停止游戏,点击继续的时候可以继续游戏。退出CTRLQ退出游戏。设置选择游戏级别。选择游戏速度。考验显示F5显示欲览区方块。隐藏F6隐藏欲览区方块。帮助操作提示以及版本信息和作者资料。用户界面具体如图图登陆界面图游戏界面图菜单编辑界面图游戏帮助界面有关说明经过两个多星期的设计和开发,俄罗斯方块游戏已经成功。其功能基本符合用户需求,能够完成游戏的控制,方块的变换以及消层等功能。并提供游戏设置,对于一些技术性比较过硬的玩家,可以调游戏级别、以及游戏速度,使得玩家能够充分的发挥竞技游戏的特色,可以不断的挑战自我,挑战极限。31游戏设计中的不足之处但是由于课程设计时间较短,所以该游戏还有许多不尽如人意的地方,比如方块类型太少,退出游戏不能存储进度等多方面问题。这些都有待进一步改善,我们在游戏中还可以更换背景音乐,以适合不同的玩家,在每通过一关可以给玩家播放一段FLASH,吸引玩家去挑战极限,不断提高玩家的兴趣,相信在以后的制作过程中我们将给大家带来一个更新功能更全面的游戏。32VB与C语言之间的不同之处我们这个小游戏也可以用C语言来实现,在程序的编程上没有VB语言方便实用,C语言和VB语言之间存在很多的共同点,虽然语法方面有点差异,但是在编程思路上完全一样,VB能够实现很多C不能做到的功能,如WHEN语句、OPTIONAL参数、局部STATIC变量、对象实例访问静态方法、HANDLES绑定事件、ONERROR处理异常、OBJECT直接后期绑定等等。VB和C语言,编译出来的是同样的CIL,但为什么VB支持很多有趣的特性呢。我们一起来探究一下。321局部静态变量VB支持用STATIC关键字声明局部变量,这样在过程结束的时候可以保持变量的数值PUBLICSUBTEST1STATICIASINTEGERI1实现一个过程调用计数器ENDSUB我们实现了一个简单的过程计数器。每调用一次TEST,计数器的数值就增加1。其实还有很多情况我们希望保持变量的数值。而C的STATIC是不能用在过程内部的。因此要实现过程计数器,我们必须声明一个类级别的变量。这样做明显不如VB好。因为无法防止其他过程修改计数器变量。这就和对象封装一个道理,本来应该是一个方法的局部变量,现在我要被迫把它独立出来,显然是不好的设计。那么VB是怎么生成局部静态变量的呢将上述代码返汇编,我们可以清楚地看到在VB生成的CIL中,I不是作为局部变量,而是作为类的FIELD出现的FIELDPRIVATESPECIALNAMEINT32STATICTEST12001I也就是说,I被改名作为一个类的字段,但被冠以SPECIALNAME。在代码中试图访问STATICTEST12001I是不可能的,因为它不是一个有效的标识符。但是在IL中,将这个变量加一的代码却与一般的类字段完全一样,是通过LDFLD加载的。我觉得这个方法十分聪明,把静态变量变成生命周期一样的类字段,但是又由编译器来控制访问的权限,让它成为一个局部变量。同时也解释了VB为什么要用两个不同的关键字来声明静态变量STATIC和SHARED。由于局部静态变量的实质是类的字段,所以它和真正的局部变量还是有所不同的。比如在多线程条件下,对局部静态变量的访问就和访问字段相同。322HANDLES和WITHEVENTSVB除了可以用C那样的方法来处理事件响应以外,还有从VB5继承下来的独特的事件处理方式WITHEVENTS。我喜欢称这种事件处理方式为静态的事件处理,书写响应事件的方法时就已经决定该方法响应的是哪一个事件,而C则是在代码中绑定事件的。VB中WITHEVENTS静态方法是非常有用的,它可以显著增强代码可读性,同时也让VBNET中的事件处理非常方便,不像C那样离开了窗体设计器就必须手工绑定事件。323类型转换运算符在VISUALBASIC2005中将加入一个新的运算符TRYCAST,相当于C的AS运算符。我一直希望VB有这样一个运算符。VB目前的类型转换运算符主要有CTYPE和DIRECTCAST。他们的用法几乎一样。我详细比较了一下这两个运算符,得出以下结论1在转换成引用类型时,两者没有什么区别,都是直接调用CASTCLASS指令,除非重载了类型转换运算符CTYPE。DIRECTCAST运算符是不能重载的。2转换成值类型时,CTYPE会调用VB指定的类型转换函数(如果有的话),比如将STRING转换为INT32时,就会自动调用。324默认属性和属性参数在原先的VB6里,有一项奇特的功能默认属性。在VB6中,对象的名称可以直接表示该对象的默认属性。325可选参数和按名传递VB从40开始支持“可选参数”这一特性。就是说,函数或子程序的参数有些是可选的,调用的时候可以不输入。其实VB从10开始就有一些函数带有可选参数,只不过到了40才让用户自己开发这样的过程。在VB4里,可选参数可以不带默认值,而在VB里,如果使用可选参数,则必须带有默认值。在调用的时候,VB若发现参数被省略,则自动读取PARAM部分的默认值,并显式传递给过程。这一部分完全由编译器处理,而且没有任何性能损失,和手工传递所有参数是完全一样的。至于按名传递,VB会自动调整参数的顺序,其结果与传统方式的传递也没有任何的不同。这说明我们可以放心地使用这项便利。而且带有可选参数的过程拿到C中,顶多变成不可选参数,也不会造成什么其他的麻烦。PS很多COM组件都使用了默认参数,而且有些过程的参数列表非常长,在VB里可以轻松地处理它们,而在C中经常让开发者传参数传到吐血。致谢在本次课程设计中,我从指导老师化希耀和张兵身上学到了很多东西。老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。另外,在游戏开发过程中许多同学也给于我们很大的帮助,帮助解决了不少的难点,使得游戏能及时开发完成,在此谢谢各位对此次设计的帮助。参考文献1龚沛曾,陆慰民,杨志强VSUALBASIC程序设计教程高等教育出版社出版。2刘新民,蔡琼,白糠生VSUALBASIC60程序设计清华大学出版社出版。3唐凯军,汤惠莉VB6编程80例上手山东电子音像出版社。4卢毅VSUALBASIC实例教程科学出版社出版。5赵欣胜,亢慧娟,刘晟宏VSUALBASIC经典范例50讲科学出版社出版。附件PRIVATESUBHIDEFANGAASINTEGER定义使方块不可见的过程SELECTCASEACASE0A0使游戏区方块不可见CMDFANGN0VISIBLEFALSECMDFANGN1VISIBLEFALSECMDFANGN2VISIBLEFALSECMDFANGN3VISIBLEFALSECASE1A1使预览区方块不可见CMDFANGNEXTM0VISIBLEFALSECMDFANGNEXTM1VISIBLEFALSECMDFANGNEXTM2VISIBLEFALSECMDFANGNEXTM3VISIBLEFALSEENDSELECTENDSUBPRIVATESUBSHOWFANGAASINTEGER定义使方块可见的过程SELECTCASEACASE0A0使游戏区方块可见CMDFANGN0VISIBLETRUECMDFANGN1VISIBLETRUECMDFANGN2VISIBLETRUECMDFANGN3VISIBLETRUECASE1A1使预览区方块不可见CMDFANGNEXTM0VISIBLETRUECMDFANGNEXTM1VISIBLETRUECMDFANGNEXTM2VISIBLETRUECMDFANGNEXTM3VISIBLETRUEENDSELECTENDSUBPRIVATESUBCLEARLINE定义消除整行的过程FORI190TO10STEP10IFCMDFANGIVISIBLETRUEAND_CMDFANGI1VISIBLETRUEAND_CMDFANGI2VISIBLETRUEAND_CMDFANGI3VISIBLETRUEAND_CMDFANGI4VISIBLETRUEAND_CMDFANGI5VISIBLETRUEAND_CMDFANGI6VISIBLETRUEAND_CMDFANGI7VISIBLETRUEAND_CMDFANGI8VISIBLETRUEAND_CMDFANGI9VISIBLETRUETHENFORJI4TOISTEP1T1CMDFANGJVISIBLEFALSECMDFANG2I9JVISIBLEFALSEFORK1TO4000DOEVENTSNEXTT0NEXTLINENUMLINENUM1FORJI1TO0STEP1IFCMDFANGJVISIBLETRUETHENCMDFANGJVISIBLEFALSECMDFANGJ10VISIBLETRUEENDIFNEXTCLEARLINE为了实现连消数行,这里使用递归调用ENDIFNEXTENDSUBPRIVATEFUNCTIONDOWNABLEASBOOLEAN自定义函数,确定方块是否能下降IFN00ANDN1MOD100ANDN2MOD100ANDN3MOD100THENIFCMDFANGN01VISIBLEFALSEAND_CMDFANGN11VISIBLEFALSEAND_CMDFANGN21VISIBLEFALSEAND_CMDFANGN31VISIBLEFALSETHENLEFTABLETRUEELSELEFTABLEFALSEENDIFELSELEFTABLEFALSEENDIFENDFUNCTIONPRIVATEFUNCTIONRIGHTABLEASBOOLEAN自定义函数,确定方块是否能右移IFN0MOD109ANDN1MOD109ANDN2MOD109ANDN3MOD109THENIFCMDFANGN01VISIBLEFALSEAND_CMDFANGN11VISIBLEFALSEAND_CMDFANGN21VISIBLEFALSEAND_CMDFANGN31VISIBLEFALSETHENRIGHTABLETRUEELSERIGHTABLEFALSEENDIFELSERIGHTABLEFALSEENDIFENDFUNCTIONDINGSCLEPERHAPSNOTATHNOT“PERHAPSNOT,“BUT“CERTAINLYNOT,“MYGOODSIR,ISTHERIGHTANSWERTHERENEVERHASBEENATRUERMETHODTHANTHISDISCOVEREDBYANYMANCLEIBOWTOYOURAUTHORITY,STRANGERLETUSPROCEEDINTHEWAYWHICHYOUPROPOSEATHTHEN,ASWOULDAPPEAR,WEMUSTCOMPELTHEGUARDIANSOFOURDIVINESTATETOPERCEIVE,INTHEFIRSTPLACE,WHATTHATPRINCIPLEISWHICHISTHESAMEINALLTHEFOURTHESAME,ASWEAFFIRM,INCOURAGEANDINTEMPERANCE,ANDINJUSTICEANDINPRUDENCE,ANDWHICH,BEINGONE,WECALLASWEOUGHT,BYTHESINGLENAMEOFVIRTUETOTHIS,MYFRIENDS,WEWILL,IFYOUPLEASE,HOLDFAST,ANDNOTLETGOURE,ANDKNOWHOWGREATISTHEIRPOWER,ASFARASINMANLIESDOINDEEDEXCUSETHEMASSOFTHECITIZENS,WHOONLYFOLLOWTHEVOICEOFTHELAWS,BUTWEREFUSETOADMITASGUARDIANSANYWHODONOTLABOURTOOBTAINEVERYPOSSIBLEEVIDENCETHATTHEREISRESPECTINGTHEGODSOURCITYISFORBIDDENANDNOTALLOWEDTOCHOOSEASAGUARDIANOFTHELAW,ORTOPLACEINTHESELECTORDEROFVIRTUE,HIMWHOISNOTANINSPIREDMAN,ANDHASNOTLABOUREDATTHESETHINGSCLEITISCERTAINLYJUST,ASYOUSAY,THATHEWHOISINDOLENTABOUTSUCHMATTERSORINCAPABLESHOULDBEREJECTED,ANDTHATTHINGSHONOURABLESHOULDBEPUTAWAYFROMHIMATHAREWEASSUREDTHATTHEREARETWOTHINGSWHICHLEADMENTOBELIEVEINTHEGODS,ASWEHAVEALREADYSTATEDCLEWHATARETHEYATHONEISTHEARGUMENTABOUTTHESOUL,WHICHHASBEENALREADYMENTIONEDTHATITISTHEELDEST,ANDMOSTDIVINEOFALLTHINGS,TOWHICHMOTIONATTAININGGENERATIONGIVESPERPETUALEXISTENCETHEOTHERWASANARGUMENTFROMTHEORDEROFTHEMOTIONOFTHESTARS,ANDOFALLTHINGSUNDERTHEDOMINIONOFTHEMINDWHICHORDEREDTHEUNIVERSEIFAMANLOOKUPONTHEWORLDNOTLIGHTLYORSUBSTANCES,ANDTOTHESETHEYASSIGNEDTHECAUSESOFALLTHINGSSUCHSTUDIESGAVERISETOMUCHATHEISMANDPERPLEXITY,ANDTHEPOETSTOOKOCCASIONTOBEABUSIVECOMPARINGTHEPHILOSOPHERSTOSHEDOGSUTTERINGVAINHOWLINGS,ANDTALKINGOTHERNONSENSEOFTHESAMESORTBUTNOW,ASISAID,THECASEISREVERSEDCLEHOWSOATHNOMANCANBEATRUEWORSHIPPEROFTHEGODSWHODOESNOTKNOWTHESETWOPRINCIPLESTHATTHESOULISTHEELDESTOFALLTHINGSWHICHAREBORN,ANDISIMMORTALANDRULESOVERALLBODIESMOREOVER,ASIHAVENOWSAIDSEVERALTIMES,HEWHOHASNOTCONTEMPLATEDTHEMINDOFNATUREWHICHISSAIDTOEXISTINTHESTARS,ANDGONETHROUGHTHEPREVIOUSTRAINING,ANDSEENTHECONNECTIONOFMUSICWITHTHESETHINGS,ANDHARMONIZEDTHEMALLWITHLAWSANDINSTITUTIONS,ISNOTABLETOGIVEAREASONOFSUCHTHINGSASHAVEAREASONANDHEWHOISUNABLETOACQUIRETHISINADDITIONTOTHEORDINARYVIRTUESOFACITIZEN,CANHARDLYBEAGOODRULEROFAWHOLESTATEBUTHESHOULDBETHESUBORDINATEOFOTHERRULERSWHEREFORE,CLEINIASANDMEGILLUS,LETUSCONSIDERWHETHERWEMAYNOTADDTOALLTHEOTHERLAWSWHICHWEHAVEDISCUSSEDTHI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 微生物组学调控-洞察及研究
- 甲醛生产线项目人力资源管理方案
- 水源调度与水质保障优化方案
- 广东省深圳建文外国语学校2026届高三化学第一学期期中达标检测模拟试题含解析
- 全钒液流电池用离子交换膜生产线项目经营管理手册
- 智能化情境创设支持的跨学科项目学习-洞察及研究
- 2025年事业单位工勤技能-黑龙江-黑龙江军工电子设备制造工五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-重庆-重庆护理员四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-福建-福建电工三级(高级工)历年参考题库含答案解析
- 2026届北京市海淀区交大附中化学高一第一学期期中检测模拟试题含解析
- 工程质保期满验收报告模板
- 2023年版下肢动脉硬化闭塞症诊治指南
- 决奈达隆在心房颤动治疗中的应用培训课件
- 涂料行业企业风险分级管控体系实施指南+生产安全事故隐患排查治理体系实施指南
- 2020进口关税税率表
- DB21T 3164-2019 辽宁省绿色建筑施工图设计审查规程
- 工伤知识培训(工伤待遇篇)课件
- 外研版八年级下册英语 module 6 测试
- 交通运输安全管理整套教学课件
- 股权质押合同工商局模板参考
- 建筑热工学基本知识课件
评论
0/150
提交评论