优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

俄罗斯方块游戏的设计与实现

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:
游戏设计的具体实现
在我们两个人共同努力下,此次设计,终于能够圆满完成。由于时间的紧促,在设计中,也许会有一些考虑不周之处,但其功能已经能够满足大多用户的需求,相信假以时日,一定能做出一个更经典,更完美的俄罗斯方块游戏,下面我们将对每一步的具体如何实现展示给大家。
2.1.1游戏界面的设计和背景音乐及特效的实现
俄罗斯方块游戏主要由两个界面构成,登陆界面和开始游戏界面。
游戏的背景音乐是由一段代码调用系统播放器Windows Player播放背景音乐,由于本次设计主要是针对游戏如何设计的,所以在这里就不对播放背景音乐的功能做介绍了。
利用Select将方块的7中造型列出,比如长条型的设计,在欲览区中分别有3.4.5.6和5.15.25.35四个方块构成两中形态,用数组为:                              
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,在后面方便调用,其他的方块造型同样的方法。 copyright think58
[资料来源:www.THINK58.com]

2.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 think58.com

[资料来源:http://think58.com]


                situation = 1
            End If
        End If
方块的造型在旋转的时候存在一个公式,当然首先要判断是否满足旋转的要求,以上是一个长条型由横着变成竖立状态的旋转,我们以它的造型中的第三个小方块n(3)为中心旋转,这样,在开始运动的时候,长条形要发生旋转最少要运动到第三行,才能由横着变成竖立状态,游戏区图形框中第三行的第一个方块的编号为20,所以长条造型的第一个小方块的编号n(0)必须要大于20。同样,长条型方块在下落到底部的时候也有限制。如果长条下落到最后一行也将无法由横着变成竖立状态。
2.1.4如何实现方块的运动和自动消除满行的方块
我们的这个俄罗斯方块游戏主要是利用command控件的visible属性完成效果的,其实在游戏区图形框可以看成是由许多的command小方块组成,方块运动的过程就是造型里方块显示或者隐藏,就像现在的霓虹灯效果一样,由时钟控件控制visible属性改变的速度,上一层的消失,下一层的显示,这样,从视觉效果可以看到方块的下落运动效果。 本文来自think58 [来源:http://www.think58.com]
方块在下落的过程中会自动判断每一行方块的visible属性,如果全部为true时,就会将这一行小方块的visible属性全部变成false,在将上面的小方块向下移动,利用for语句进行循环判断,将所有这样情况的行改变小方块visible属性。当有多行同时出现这样情况时使用递归调用,实现连续消行。具体程序代码如下:
 For i = 190 To 10 Step -10
        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 _ 本文来自think58 [来源:http://think58.com]
           cmdfang(i + 8).Visible = True And _
           cmdfang(i + 9).Visible = True Then
            For j = i + 4 To i Step -1
                t = 1
                cmdfang(j).Visible = False
                cmdfang(2 * i + 9 - j).Visible = False
                For k = 1 To 4000
                    DoEvents
                Next
                t = 0

本文来自think58 [资料来源:http://www.THINK58.com]


            Next
            linenum = linenum + 1
            For j = i - 1 To 0 Step -1
                If cmdfang(j).Visible = True Then
                    cmdfang(j).Visible = False
                    cmdfang(j + 10).Visible = True
                End If
            Next
            clearline       '为了实现连消数行,这里使用递归调用
        End If think58.com
[资料来源:http://THINK58.com]

    Next
2.1.5游戏速度和游戏级别自由选择
游戏速度的自由选择无非就是改变时钟控件的频率,我们在菜单中添加了选择速度的功能,还有添加了考验功能,将欲览窗中的方块造型隐藏,给玩家提高了难度,如果你不愿意接受考验也可以点击显示还原成原来状态。
游戏级别的自由选择是让用户选择游戏开始时候,游戏区底部出现一定行数的随机方块,同样给玩家增加了难度,功能代码如下:
 For i = 19 To 20 - Val(txthard.Text) Step -1     
            For j = i * 10 To i * 10 + 9
                If Rnd >= 0.5 Then cmdfang(j).Visible = True
            Next
        Next
可以根据你选择的难度系数在底层的每一行随机产生超过半数(即5个以上)以上的小方块,这样适合喜欢高难度的玩家。
2.1.6游戏得分的计算和游戏菜单的编辑
游戏得分的计算主要是根据消除的行数来决定的,当然每一次同时消除的行数不一样,每一行的得分也不一样,如果你每次消除的行数为1,则最后得分是100分,如果同时消除2行,则最后得分是300分,同时消除3行,得分为700分,同时消除4行,得分为1500分,这由公式:得分 = 原来分数+ 100 * (2 ^ 同时消除的行数-1)。

copyright think58

[资料来源:http://THINK58.com]


游戏的编辑,读者可以参照下面的功能介绍。