⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module.bas

📁 自己做的俄罗斯方块游戏,vb开发
💻 BAS
📖 第 1 页 / 共 2 页
字号:
    End If
Next Y

For Y = 0 To 3                                        '2个for用来检测上面state处理后是否违法,既方块数组加上x,y坐标后在相应地图数组元素中是非NULL
    For x = 0 To 3                                    '这里只对上面state处理后有效。left和right是不可能出现这种情况的
        If fang.Are(Y, x) = 1 Then
        If Map(fang.Y + Y, fang.x + x) <> "Null" Then
           Judge = "error"                            '违法则函数返回error
        End If
        End If
    Next x
Next Y
End Function
Function Move(char As String, fang As kuai) '
Main_F.Main_P.Cls
Dim state As Integer
Dim x_temp As Integer
Select Case char
       Case "state"
            Sound (".\sound\state.wav")        '播放转“形态”的声音
            state = fang.state                 '临时记录方块现在形态(为以后可能要恢复原状态临时保存)
            x_temp = fang.x                     '临时记录方块的x坐标(因为在judge中可能会改变x值,为以后可能要恢复原状态临时保存)
            If fang.state < 4 Then              '变换形态,(1,2,3,4种状态可变)
               fang.state = fang.state + 1
            Else
               fang.state = 1
            End If
            s = Clear_are(fang.Are)             '清空现在的方块数组
            s = Create_are(fang.mode, fang.state, fang.Are)    '根据形态构件新方块(mode不变,x,y不变,只变换state和相应的数组)
            
            If Judge(char, fang) = "error" Then      '判断变换以后的方块是否违法
               fang.x = x_temp                       '如果违法则恢复原数组x坐标
               fang.state = state                    '恢复原state
               s = Clear_are(fang.Are)               '清空方块数组
               s = Create_are(fang.mode, fang.state, fang.Are)   '构件方块数组
            End If
        Case "down"                               '按↓时
           Module.Sound (".\sound\down.wav")
           s = Judge(char, fang)                  'judge不会返回值,但是有可能在按下时被石化所以调用judge函数处理
           fang.Y = fang.Y + 1                    '方块y坐标向下移动一格
        Case "right"
            If Judge(char, fang) <> "error" Then  '当judge返回不是error使表示可以右移
            fang.x = fang.x + 1                   '方块x坐标右移
            End If
        Case "left"
            If Judge(char, fang) <> "error" Then '左移
            fang.x = fang.x - 1
            End If
End Select
s = Dis_are(fang)   '显示方块
Load_map            '显示地图
End Function

Function Dis_are(fang As kuai)   '显示方块
For Y = 0 To 3                   '显示方法为每个are数组元素为1的x,y坐标对应加上fang.x,fang.y坐标,就是实际方块位置坐标
    For x = 0 To 3
    If fang.Are(Y, x) = 1 Then
    Main_F.Main_P.PaintPicture Main_F.Are(2).Picture, (fang.x + x) * 20, (fang.Y + Y) * 20, 20, 20, 0, 0, 20, 20
    End If
    Next x
Next Y
End Function

Function Clear_are(value() As Integer)   '清空方块的数组
For Y = 0 To 3
    For x = 0 To 3
      value(x, Y) = 0
    Next x
Next Y
End Function

Function Next_are(fang As kuai)           '初始化方块数组
Dim f
Dim fangtemp As kuai                      '临时储存kuai类型的变量,用于交换2个方块类型(外部的fang1,和fangnext)
fang = fangnext                           '把事先随机生成的方块给到外部fang1(fang的实际参数)
Main_F.Next_P.Cls                         '为显示新的下一个方块,清理显示“下一个方块”的pic控件。
Randomize                                 '随机生成下一个方块的mode,state
fangtemp.mode = Int(5 * Rnd + 1)
fangtemp.state = Int(4 * Rnd + 1)
s = Create_are(fangtemp.mode, fangtemp.state, fangtemp.Are)  '构件方块数组
For Y = 0 To 3
    For x = 0 To 3
    If fangtemp.Are(Y, x) = 1 Then
    Main_F.Next_P.PaintPicture Main_F.Are(2).Picture, x * 20, Y * 20, 20, 20, 0, 0, 20, 20  '在“下一个方块”pic控件里显示新的下一个方块
    End If
    Next x
Next Y
fangnext = fangtemp    '把下一个方块给到全模块变量里,为下一次fang1赋值作准备
End Function
Function zuobiao(fang As kuai)  '此函数调整方块初始位置
fang.x = MapX / 2               '用4*4数组表示方块会出现左右不对称,致使统一初始位置后显示位置却不一样所以写此函数调整
fang.Y = 0
Select Case fang.mode
       Case 1, 2, 5
       Select Case fang.state
              Case 2, 4
              fang.x = MapX / 2
              fang.Y = -1
       End Select
       Case 4
       Select Case fang.state
             Case 2, 4
             fang.x = MapX / 2
             fang.Y = -3
       End Select
End Select
End Function

Function Create_are(mode, state, value() As Integer) '建立各种方块类型和方块状态的模型(每次人为改变方块时也调用此函数来改变)
Select Case mode
       Case 1
       Select Case state
              Case 1
              value(0, 0) = 1
              value(1, 0) = 1
              value(2, 0) = 1
              value(2, 1) = 1
              Case 2
              value(1, 0) = 1
              value(1, 1) = 1
              value(1, 2) = 1
              value(2, 0) = 1
              Case 3
              value(0, 0) = 1
              value(0, 1) = 1
              value(1, 1) = 1
              value(2, 1) = 1
              Case 4
              value(1, 2) = 1
              value(2, 0) = 1
              value(2, 1) = 1
              value(2, 2) = 1
      End Select
      Case 2
      Select Case state
             Case 1
             value(2, 0) = 1
             value(0, 1) = 1
             value(1, 1) = 1
             value(2, 1) = 1
             Case 2
             value(1, 0) = 1
             value(2, 0) = 1
             value(2, 1) = 1
             value(2, 2) = 1
             Case 3
             value(0, 0) = 1
             value(0, 1) = 1
             value(1, 0) = 1
             value(2, 0) = 1
             Case 4
             value(1, 0) = 1
             value(1, 1) = 1
             value(1, 2) = 1
             value(2, 2) = 1
      End Select
      Case 3
      value(0, 0) = 1
      value(0, 1) = 1
      value(1, 0) = 1
      value(1, 1) = 1
      Case 4
      Select Case state
             Case 1, 3
             value(0, 1) = 1
             value(1, 1) = 1
             value(2, 1) = 1
             value(3, 1) = 1
             Case 2, 4
             value(3, 0) = 1
             value(3, 1) = 1
             value(3, 2) = 1
             value(3, 3) = 1
     End Select
     Case 5
     Select Case state
            Case 1
            value(0, 0) = 1
            value(1, 0) = 1
            value(1, 1) = 1
            value(2, 0) = 1
            Case 2
            value(1, 0) = 1
            value(1, 1) = 1
            value(1, 2) = 1
            value(2, 1) = 1
            Case 3
            value(0, 1) = 1
            value(1, 0) = 1
            value(1, 1) = 1
            value(2, 1) = 1
            Case 4
            value(1, 1) = 1
            value(2, 0) = 1
            value(2, 1) = 1
            value(2, 2) = 1
     End Select
End Select
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -