2.1.5游戏速度和游戏级别自由选择 游戏速度的自由选择无非就是改变时钟控件的频率,我们在菜单中添加了选择速度的功能,还有添加了考验功能,将欲览窗中的方块造型隐藏,给玩家提高了难度,如果你不愿意接受考验也可以点击显示还原成原来状态。 内容来自www.paper51.com
游戏级别的自由选择是让用户选择游戏开始时候,游戏区底部出现一定行数的随机方块,同样给玩家增加了难度,功能代码如下: 内容来自论文无忧网 www.paper51.com For i = 19 To 20 - Val(txthard.Text) Step-1 内容来自www.paper51.com For j = i * 10 To i * 10 + 9 http://www.paper51.com If Rnd >= 0.5 Then cmdfang(j).Visible = True copyright paper51.com
Next copyright paper51.com Next http://www.paper51.com 可以根据你选择的难度系数在底层的每一行随机产生超过半数(即5个以上)以上的小方块,这样适合喜欢高难度的玩家。 内容来自www.paper51.com 2.1.6游戏得分的计算和游戏菜单的编辑 http://www.paper51.com 游戏得分的计算主要是根据消除的行数来决定的,当然每一次同时消除的行数不一样,每一行的得分也不一样,如果你每次消除的行数为1,则最后得分是100分,如果同时消除2行,则最后得分是300分,同时消除3行,得分为700分,同时消除4行,得分为1500分,这由公式:得分= 原来分数+ 100 * (2 ^ 同时消除的行数-1)。 内容来自论文无忧网 www.paper51.com 游戏的编辑,读者可以参照下面的功能介绍。 内容来自论文无忧网 www.paper51.com 2.2 游戏功能的介绍 http://www.paper51.com 文件F------开始F1:开始游戏。 paper51.com 继续F2:继续游戏。 内容来自论文无忧网 www.paper51.com
暂停F3:暂时停止游戏,点击继续的时候可以继续游戏。 paper51.com 退出Ctrl+Q:退出游戏。 http://www.paper51.com
设置-------选择游戏级别。 copyright paper51.com 选择游戏速度。 copyright paper51.com 考验-------显示F5:显示欲览区方块。 copyright paper51.com 隐藏F6:隐藏欲览区方块。 copyright paper51.com 帮助-------操作提示以及版本信息和作者资料。 内容来自论文无忧网 www.paper51.com 用户界面具体如图: paper51.com
内容来自www.paper51.com 图—登陆界面 图—游戏界面 内容来自论文无忧网 www.paper51.com
内容来自www.paper51.com 图—菜单编辑界面 图—游戏帮助界面 copyright paper51.com 有关说明 http://www.paper51.com 经过两个多星期的设计和开发,俄罗斯方块游戏已经成功。其功能基本符合用户需求,能够完成游戏的控制,方块的变换以及消层等功能。并提供游戏设置,对于一些技术性比较过硬的玩家,可以调游戏级别、以及游戏速度,使得玩家能够充分的发挥竞技游戏的特色,可以不断的挑战自我,挑战极限。 http://www.paper51.com 3.1游戏设计中的不足之处 内容来自论文无忧网 www.paper51.com 但是由于课程设计时间较短,所以该游戏还有许多不尽如人意的地方,比如方块类型太少,退出游戏不能存储进度等多方面问题。这些都有待进一步改善,我们在游戏中还可以更换背景音乐,以适合不同的玩家,在每通过一关可以给玩家播放一段flash,吸引玩家去挑战极限,不断提高玩家的兴趣,相信在以后的制作过程中我们将给大家带来一个更新功能更全面的游戏。 内容来自www.paper51.com 3.2 VB与C语言之间的不同之处 内容来自www.paper51.com 我们这个小游戏也可以用C语言来实现,在程序的编程上没有VB语言方便实用,C语言和VB语言之间存在很多的共同点,虽然语法方面有点差异,但是在编程思路上完全一样,VB能够实现很多C#不能做到的功能,如When语句、Optional参数、局部Static变量、对象实例访问静态方法、Handles绑定事件、On Error处理异常、Object直接后期绑定等等。VB和C#语言,编译出来的是同样的CIL,但为什么VB支持很多有趣的特性呢。我们一起来探究一下。 内容来自www.paper51.com 3.2.1局部静态变量 paper51.com VB支持用Static关键字声明局部变量,这样在过程结束的时候可以保持变量的数值: 内容来自www.paper51.com Public Sub Test1() 内容来自论文无忧网 www.paper51.com Static i As Integer copyright paper51.com i += 1 '实现一个过程调用计数器 paper51.com
End Sub 内容来自www.paper51.com 我们实现了一个简单的过程计数器。每调用一次Test,计数器的数值就增加1。其实还有很多情况我们希望保持变量的数值。而C#的static是不能用在过程内部的。因此要实现过程计数器,我们必须声明一个类级别的变量。这样做明显不如VB好。因为无法防止其他过程修改计数器变量。这就和对象封装一个道理,本来应该是一个方法的局部变量,现在我要被迫把它独立出来,显然是不好的设计。那么VB是怎么生成局部静态变量的呢?将上述代码返汇编,我们可以清楚地看到在VB生成的CIL中,i不是作为局部变量,而是作为类的Field出现的: .field private specialname int32 $STATIC$Test1$2001$i paper51.com
也就是说,i被改名作为一个类的字段,但被冠以specialname。在代码中试图访问$STATIC$Test1$2001$i是不可能的,因为它不是一个有效的标识符。但是在IL中,将这个变量加一的代码却与一般的类字段完全一样,是通过ldfld加载的。我觉得这个方法十分聪明,把静态变量变成生命周期一样的类字段,但是又由编译器来控制访问的权限,让它成为一个局部变量。同时也解释了VB为什么要用两个不同的关键字来声明静态变量——Static和Shared。由于局部静态变量的实质是类的字段,所以它和真正的局部变量还是有所不同的。比如在多线程条件下,对局部静态变量的访问就和访问字段相同。 paper51.com 3.2.2 Handles和WithEvents copyright paper51.com VB除了可以用C#那样的方法来处理事件响应以外,还有从VB5继承下来的独特的事件处理方式——WithEvents。 copyright paper51.com 我喜欢称这种事件处理方式为静态的事件处理,书写响应事件的方法时就已经决定该方法响应的是哪一个事件,而C#则是在代码中绑定事件的。VB中WithEvents静态方法是非常有用的,它可以显著增强代码可读性,同时也让VB.net中的事件处理非常方便,不像C#那样离开了窗体设计器就必须手工绑定事件。 copyright paper51.com |