visual basic继承了basic语言易学易用的特点,特别合适于初学者学习windows系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们愈来愈多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,因而出现了各种各样的休闲软件,如聊天工具,游戏等等。因而我们小组着手设计开始1个这样的游戏软件。通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,因而在牛荣和李鹏等老师的指点下动手用Visual Basic编写俄罗斯方块游戏。
我们之所以选择开发俄罗斯方块游戏,无可争议,《俄罗斯方块》是有史以来最伟大的游戏之1。在曾发布过的所有游戏中,《俄罗斯方块》还被认为是唯一的1个能够真正吸引广泛人群的作品。谁能说清楚,迄今为止人们究竟花了多少万个小时在这个游戏上?或许这些时间本来可以被花在更具生产力的活动上。某些批评家或许会宣称,《俄罗斯方块》要比过去210年间出现的任何东西都要浪费人们的时间。至于我们,则要怅然提名它为GameSpot评选出的历史上最伟大游戏之1。
为了怀念经典,也为了能够给大多的计算机用户在工作之余找到1个休闲、文娱的1个方式,我们小组开始着手用VB语言开发1个经典的俄罗斯方块游戏。
工程概况
2.1项目名称
俄罗斯方块游戏
2.2设计平台
VB全称Visual Basic,它是以Basic语言作为其基本语言的1种可视化编程工具。
Vb是microsoft公司于1991年退出的windows利用程序开发工具visual意思是“可视化的”。在它刚推出来时,本身还存在1些缺点,功能也相对少1些。但是经过量年的开发研究。最近microsoft公司又推出了VB6.0版本
VB6.0运行环境:硬件,要求486以上的处理器、16MB以上内存,50MB以上的硬盘,cd-rom驱动器,鼠标。软件:要求windows 95以上版本。
2.3程序设计思想
游戏是用来给大家文娱的,所以要能在使用的进程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景和动听的音乐,设置了过关升级的功能,激起大家的文娱豪情。
从游戏的基本玩法动身,主要就是俄罗斯方块的形状和旋转,我们在设计中在1个图片框中构造了1个4*4的网状小块,由这些小块组合成新的形状,每4个小块连接在1起就能够构造出1种造型,因此我们总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在1个欲览窗体中提早展现形状供用户参考,然后将展现的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就能够使用键盘的方向键来控制方块的运动,然后利用递归语句对每行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由着落,方块向下的速度是有时钟控件控制的,用户也能够使用向下键加快着落速度,定义1个变量,对消除的函数进行记录,最后就能够得出用户的分数,用if语句对分数判断,到达1定的积分就能够升级到下1个档次。
俄罗斯方块游戏设计的主要步骤为以下10个方面:
(1)游戏界面的设计。
(2)俄罗斯方块的造型。
(3)俄罗斯方块的旋转。
(4)俄罗斯方块的运动情况(包括向左,向右和向下)。
(5)俄罗斯方块的自动消行功能。
(6)游戏级别的自由选择。
(7)游戏速度的自由选择。
(8)游戏得分的计算。
(9)游戏菜单选项的设计及功能实现。
(10)游戏的背景音乐及殊效。
2.4应用的控件和主要对象
我们在设计进程中主要用到的控件有:command控件,image控件,picture控件,label控件,timer控件,text控件,windows media player控件等等。
2.5主要实现的功能
我们开发的俄罗斯方块游戏,主要实现了以下几种功能:
1.可以灵活控制方块在图形框中运动。
2.游戏进程中方块可以自由旋转。
3.当某1行的方块排列满时,将自动将这1行方块消除,然后将上面所有方块向下移动,可以支持连续消行。
4.游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块着落速度,游戏等级为初始游戏时在基层随机生成1定行数的无规律方块,生成的行数由你来选择,每行最少产生5个以上的无规律方块,这样增加了游戏难度,对游戏高手来讲,无疑不是1个新的挑战。
5.游戏的得分支持积分,并且依照公式:
得分=原来分数+ 100*(2 ^同时消除的行数⑴)
你同1时间消除的行数越多,你的得分也就越高,当游戏积分到了1定时可以自动升级,这个升级指速度升级。
6.游戏中提供了1个漂亮的场景和动听的音乐,给你带来无穷豪情。
2.6开发人员
由于这次课程设计所选的题目太复杂,而时间又比较紧张,指点老师建议和同学分工完成。我们小组成员包括组长孙磊周,副组长邹海星,此游戏由我们两个人共同开发而成。
正文
3.1游戏设计的具体实现
在我们两个人共同努力下,此次设计,终究能够美满完成。由于时间的紧促,在设计中,或许会有1些斟酌不周的地方,但其功能已能够满足大多用户的需求,相信假以光阴,1定能做出1个更经典,更完善的俄罗斯方块游戏,下面我们将对每步的具体如何实现展现给大家。
3.1.1游戏界面的设计和背景音乐及殊效的实现
俄罗斯方块游戏主要由两个界面构成,登陆界面和开始游戏界面,在登陆界面中我们可以首先看到圣诞节的晚上飘梅花的场景,梅花从窗体顶部做函数曲线的着落运动,在窗体中定义1个Image控件组,在通用中定义梅花X坐标变量动态数组,Y坐标变量动态数组,步距X的变量动态数组,步距Y的变量动态数组,和振幅变量动态数组。然后在窗体form_load中可以定义梅花的数量,利用随机函数产生随机的梅花坐标,步距和振幅,Image控件在运行时候就调用梅花图片,Image控件就能够由时钟控件控制着落速度,可以自由调理,梅花按snow(i).Left= xp(i)+ am(i)* Sin(dx(i))函数在做纵向的正玄函数轨迹运动,竖直方向上为自由着落运动,,有am(i)来控制梅花的左右移动振幅。我们就能够看到1个梅花在空中自由飘舞的画面了。
背景画面是用photoshop软件处理的漂亮图案,本来画面中的动画效果都是由Image控件制作的,还有点击进入游戏的按钮是由Label控件实现的,由于Image控件没有置前置后功能,不能将下雪的场景体现完全性,所以将这些图案全部放在背景上,不影响雪花飘落的效果,当点击画面的时候1样可以进入游戏界面。
游戏的背景音乐是由1段代码调用系统播放器Windows Player播放背景音乐,由于本次设计主要是针对游戏如何设计的,所以在这里就不对播放背景音乐的功能做介绍了。
3.1.2俄罗斯方块的造型
相信朋友们都玩过俄罗斯方块,对这个游戏的玩法和方块形状都比较熟习。我们这个游戏只选择了最基本的7中造型,包括长条型,正方型,正S型,反S型,正7型,反7型,T型。如果需要我们可以添加更多的造型。将游戏界面的游戏区图片框分割成10*20的小块,每一个小块放置1个command控件,预览区图片框按一样比例分割成4*4的小块,一样有command控件构成,我们可以把预览区图片框看做是从游戏区图片框当选取的1个部份,游戏区的小方块编号和欲览区编号以下图:
0 1 2 3 4 5 6 7 8 9
…………………………
…………………………
90 91 92 93 94 95 96 97 98 99
3 4 5 6
13 14 15 16
23 24 25 26
33 34 35 36
游戏区编号欲览区编号
利用Select将方块的7中造型列出,比如长条型的设计,在欲览区中分别有3.4.5.6和5.15.25.354个方块构成两中形态,用数组为:
m(0)= 3: m(1)= 4: m(2)= 5: m(3)= 6: situation2= 0
m(0)= 5: m(1)= 15: m(2)= 25: m(3)= 35: situation2= 1
将它的形状编号为0和1,在后面方便调用,其他的方块造型一样的方法。
3.1.3俄罗斯方块的旋转
俄罗斯方块的旋转主要将方块的位置加以变换得到的,例如上述范例,长条型有两中样式,根据小方块的编号变动来实现全部造型的旋转,比如:
If n(0)- 18>= 2 And n(3)+ 9<= 198 Then
If cmdfang(n(0)- 18).Visible= False And _
cmdfang(n(1)- 9).Visible= False And _
cmdfang(n(3)+ 9).Visible= False Then
hidefang 0
n(0)= n(0)- 18
n(1)= n(1)- 9
n(3)= n(3)+ 9
showfang 0
situation= 1
End If
End If
方块的造型在旋转的时候存在1个公式,固然首先要判断是不是满足旋转的要求,以上是1个长条型由横着变成竖立状态的旋转,我们以它的造型中的第3个小方块n(3)为中心旋转,在开始运动的时候,长条形要产生旋转最少要运动到第3行,才能由横着变成竖立状态,游戏区图形框中第3行的第1个方块的编号为20,所以长条造型的第1个小方块的编号n(0)必须要大于20。一样,长条型方块在着落到底部的时候也有限制。如果长条着落到最后1行也将没法由横着变成竖立状态。
3.1.4如何实现方块的运动和自动消除满行的方块
我们的这个俄罗斯方块游戏主要是利用command控件的visible属性完成效果的,其实在游戏区图形框可以看成是由许多的command小方块组成,方块运动的进程就是造型里方块显示或隐藏,就像现在的霓虹灯效果1样,由时钟控件控制visible属性改变的速度,上1层的消失,下1层的显示,从视觉效果可以看到方块的着落运动效果。
方块在着落的进程中会自动判断每行方块的visible属性,如果全部为true时,就会将这1行小方块的visible属性全部变成false,在将上面的小方块向下移动,利用for语句进行循环判断,将所有这样情况的行改变小方块visible属性。当有多行同时出现这样情况时使用递归调用,实现连续消行。具体程序代码以下:
For i= 190 To 10 Step⑴0
If cmdfang(i).Visible= True And _
cmdfang(i+ 1).Visible= True And _
cmdfang(i+ 2).Visible= True And _
cmdfang(i+ 3).Visible= True And _
cmdfang(i+ 4).Visible= True And _
cmdfang(i+ 5).Visible= True And _
cmdfang(i+ 6).Visible= True And _
cmdfang(i+ 7).Visible= True And _
cmdfang(i+ 8).Visible= True And _
cmdfang(i+ 9).Visible= True Then
For j= i+ 4 To i Step⑴
t= 1
cmdfang(j).Visible= False
cmdfang(2* i+ 9- j).Visible= False
For k= 1 To 4000
DoEvents
Next
t= 0
Next
linenum= linenum+ 1
For j= i- 1 To 0 Step⑴
If cmdfang(j).Visible= True Then
cmdfang(j).Visible= False
cmdfang(j+ 10).Visible= True
End If
Next
clearline'为了实现连消数行,这里使用递归调用
End If
Next
3.1.5游戏速度和游戏级别自由选择
游戏速度的自由选择不过就是改变时钟控件的频率,我们在菜单中添加了选择速度的功能,还有添加了考验功能,将欲览窗中的方块造型隐藏,给玩家提高了难度,如果你不愿意接受考验也能够点击显示还原成原来状态。
游戏级别的自由选择是让用户选择游戏开始时候,游戏区底部出现1定行数的随机方块,一样给玩家增加了难度,功能代码以下:
For i= 19 To 20- Val(txthard.Text) Step⑴
For j= i* 10 To i* 10+ 9
If Rnd>= 0.5 Then cmdfang(j).Visible= True
Next
Next
可以根据你选择的难度系数在底层的每行随机产生超过半数(即5个以上)以上的小方块,这样合适喜欢高难度的玩家。
3.1.6游戏得分的计算和游戏菜单的编辑
游戏得分的计算主要是根据消除的行数来决定的,固然每次同时消除的行数不1样,每行的得分也不1样,如果你每次消除的行数为1,则最后得分是100分,如果同时消除2行,则最后得分是300分,同时消除3行,得分为700分,同时消除4行,得分为1500分,这由公式:得分=原来分数+ 100*(2 ^同时消除的行数⑴)。
游戏的编辑,读者可以参照下面的功能介绍。
3.2游戏功能的介绍
文件-------开始:开始游戏。
继续:继续游戏。
暂停:暂时停止游戏,点击继续的时候可以继续游戏。
退出:退出游戏。
设置-------选择游戏级别。
选择游戏速度。
考验-------显示:显示欲览去方块。
隐藏:隐藏欲览去方块。
帮助-------操作提示和版本信息和作者资料。
用户界面具体如图:
图—登陆界面图—游戏界面
图—菜单编辑界面图—游戏帮助界面
有关说明
经过两个多星期的设计和开发,俄罗斯方块游戏已成功。其功能基本符适用户需求,能够完成游戏的控制,方块的变换和消层等功能。并提供游戏设置,对1些技术性比较过硬的玩家,可以调游戏级别、和游戏速度,使得玩家能够充分的发挥竞技游戏的特点,可以不断的挑战自我,挑战极限。
4.1游戏设计中的不足的地方
但是由于课程设计时间较短,所以该游戏还有许多不尽如人意的地方,比如方块类型太少,退出游戏不能存储进度等多方面问题。这些都有待进1步改良,我们在游戏中还可以更换背景音乐,以合适不同的玩家,在每通过1关可以给玩家播放1段flash,吸引玩家去挑战极限,不断提高玩家的兴趣,相信在以后的制作进程中我们将给大家带来1个更新功能更全面的游戏。
4.2VB与C语言之间的不同的地方
我们这个小游戏也能够用C语言来实现,在程序的编程上没有VB语言方便实用,C语言和VB语言之间存在很多的共同点,虽然语法方面有点差异,但是在编程思路上完全1样,VB能够实现很多C#不能做到的功能,如When语句、Optional参数、局部Static变量、对象实例访问静态方法、Handles绑定事件、On Error处理异常、Object直接后期绑定等等。VB和C#语言,编译出来的是一样的CIL,但为何VB支持很多有趣的特性呢。我们1起来探究1下。
4.21局部静态变量
VB支持用Static关键字声明局部变量,这样在进程结束的时候可以保持变量的数值:
Public Sub Test1()
Static i As Integer
i+= 1'实现1个进程调用计数器
End Sub
我们实现了1个简单的进程计数器。每调用1次Test,计数器的数值就增加1。其实还有很多情况我们希望保持变量的数值。而C#的static是不能用在进程内部的。因此要实现进程计数器,我们必须声明1个类级别的变量。这样做明显不如VB好。由于没法避免其他进程修改计数器变量。这就和对象封装1个道理,本来应当是1个方法的局部变量,现在我要被迫把它独立出来,明显是不好的设计。那末VB是怎样生成局部静态变量的呢?将上述代码返汇编,我们可以清楚地看到在VB生成的CIL中,i不是作为局部变量,而是作为类的Field出现的:.field private specialname int32$STATIC$Test1$2001$i
也就是说,i被改名作为1个类的字段,但被冠以specialname。在代码中试图访问$STATIC$Test1$2001$i是不可能的,由于它不是1个有效的标识符。但是在IL中,将这个变量加1的代码却与1般的类字段完全1样,是通过ldfld加载的。我觉得这个方法10分聪明,把静态变量变成生命周期1样的类字段,但是又由编译器来控制访问的权限,让它成为1个局部变量。同时也解释了VB为何要用两个不同的关键字来声明静态变量——Static和Shared。由于局部静态变量的实质是类的字段,所以它和真实的局部变量还是有所不同的。比如在多线程条件下,对局部静态变量的访问就和访问字段相同。
4.2.2Handles和WithEvents
VB除可以用C#那样的方法来处理事件响应之外,还有从VB5继承下来的独特的事件处理方式——WithEvents。
我喜欢称这类事件处理方式为静态的事件处理,书写响应事件的方法时就已决定该方法响应的是哪个事件,而C#则是在代码中绑定事件的。VB中WithEvents静态方法是非常有用的,它可以显著增强代码可读性,同时也让VB.net中的事件处理非常方便,不像C#那样离开了窗体设计器就必须手工绑定事件。
4.2.3类型转换运算符
在Visual Basic 2005中将加入1个新的运算符——TryCast,相当于C#的as运算符。我1直希望VB有这样1个运算符。VB目前的类型转换运算符主要有CType和DirectCast。他们的用法几近1样。我详细比较了1下这两个运算符,得出以下结论:
1.在转换成援用类型时,二者没有甚么区分,都是直接调用castclass指令,除非重载了类型转换运算符CType。DirectCast运算符是不能重载的。
2.转换成值类型时,CType会调用VB指定的类型转换函数(如果有的话),比如将String转换为Int32时,就会自动调用。
4.2.4默许属性和属性参数
在本来的VB6里,有1项奇特的功能——默许属性。在VB6中,对象的名称可以直接表示该对象的默许属性。
4.2.5可选参数和按名传递
VB从4.0开始支持“可选参数”这1特性。就是说,函数或子程序的参数有些是可选的,调用的时候可以不输入。其实VB从1.0开始就有1些函数带有可选参数,只不过到了4.0才让用户自己开发这样的进程。在VB4里,可选参数可以不带默许值,而在VB里,如果使用可选参数,则必须带有默许值。在调用的时候,VB若发现参数被省略,则自动读取.param部份的默许值,并显式传递给进程。这1部份完全由编译器处理,而且没有任何性能损失,和手工传递所有参数是完全1样的。至于按名传递,VB会自动调剂参数的顺序,其结果与传统方式的传递也没有任何的不同。这说明我们可以放心肠使用这项便利。而且带有可选参数的进程拿到C#中,顶多变成不可选参数,也不会造成甚么其他的麻烦。
PS.很多COM组件都使用了默许参数,而且有些进程的参数列表非常长,在VB里可以轻松地处理它们,而在C#中常常让开发者传参数传到吐血。
4.2.6在经过对照以后可得以下1个结论:
1.目前的主流编程语言没有简单的,如果你想学精通的话。
2.VB的门坎比较低,编程思想较容易接受。
3.学习C不能短时间内见到成效。
4.据用户调查69%的考生觉得VB更容易接受
致谢
在本次课程设计中,我从指点老师牛荣和李鹏身上学到了很多东西。老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他不管在理论上还是在实践中,都给与我很大的帮助,使我得到很多的提高这对我以后的工作和学习都有1种巨大的帮助,感谢他耐心的辅导。
在游戏开发进程中化希耀老师和杜义君老师也给于我们很大的帮助,帮助解决了很多的难点,使得游戏能及时开发完成,还有所有的同学一样给与我很多帮助,这里1并表示感。
参考文献:
[1]Vsual Basic程序设计教程作者:龚沛曾,陆慰民,杨志强高等教育出版社出版
[2]Vsual Basic 6.0程序设计作者:刘新民,蔡琼,白糠生清华大学出版社出版
[3]80例上手 VB6编程作者:唐凯军,汤惠莉山东电子音像出版社
[4]Vsual Basic实例教程作者:卢毅科学出版社出版
[5]Vsual Basic经典范例50讲作者:赵欣胜,亢慧娟,刘晟宏科学出版社出版
今难以想象,《俄罗斯方块》居然是1款比我年龄还要大的游戏。迄今为止,已有30余年历史,是1款非常古老的游戏。
小时候如果能用盗版掌上游戏机,玩1会《俄罗斯方块》,就已是让我非常开心的文娱活动了。如果玩儿到很高分时不谨慎game over了,真是捶胸顿足。
《俄罗斯方块》是1款奇异的游戏。看起来非常简单,只有几种不同的形状,玩法也没有甚么难以理解的地方,却恍如有魔力1样吸引着人们玩得停不下来。
近日全球最大的游戏文娱媒体公布历史上10大畅销游戏榜单,《俄罗斯方块》就勇夺第1。不但历史最悠久,而且是登陆平台最多的游戏。
最初的版本,《俄罗斯方块》的雏形,更像是括号不是方块。设计这个游戏和参与游戏制作的人,其中有1位当年才106岁。
后来,又被那位106岁的“程序员”将游戏移植到当时最为主流的MS-DOS系统上。后来又出现了多个版本。
《俄罗斯方块》在智能手机或电脑上都可以玩儿,版本也很多。在手机利用商店里搜索“俄罗斯方块”,可以看到几10种不同版本。
俄罗斯方块游戏机改版本需要具有1定的电子技术和编程能力,以下是改版本的基本步骤。
1、肯定目标版本:需要确认要升级的版本和目前的版本,和升级所需的软件和硬件资源。
2、准备工具和材料:需要准备相应的编程器、线缆和软件等工具和材料,和备份原始程序和数据。
3、连接装备和电脑:需要将游戏机和编程器通过线缆连接,同时将编程器连接到电脑上。
4、下载升级软件:需要从官方或第3方渠道下载目标版本的升级软件,并依照软件说明进行安装和配置。
5、烧录升级程序:需要使用编程器将升级程序烧录到游戏机的主板中,这个进程需要依照编程器软件的操作指南进行,确保烧录进程稳定和成功。
6、测试和调试:升级完成后,需要对游戏机进行测试和调试,确保升级后的程序和数据可以正常运行和保存。
各位老铁们好,相信很多人对升级版俄罗斯方块都不是特别的了解,因此呢,今天就来为大家分享下关于升级版俄罗斯方块的问题知识,还望可以帮助大家,解决大家的1些困惑,下面1起来看看吧!