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

📄 frmmain.frm

📁 VB程序设计实例
💻 FRM
📖 第 1 页 / 共 3 页
字号:
            Caption         =   "九"
            Index           =   8
         End
         Begin VB.Menu fast 
            Caption         =   "十"
            Index           =   9
         End
      End
   End
   Begin VB.Menu kaoyan 
      Caption         =   "考验(&K)"
      Begin VB.Menu yincang 
         Caption         =   "隐藏"
         Shortcut        =   {F5}
      End
      Begin VB.Menu xianshi 
         Caption         =   "显示"
         Shortcut        =   {F6}
      End
   End
   Begin VB.Menu help 
      Caption         =   "帮助(&H)..."
      Begin VB.Menu about 
         Caption         =   "操作提示"
         Shortcut        =   {F7}
      End
   End
End
Attribute VB_Name = "frmmain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Dim IsMusicOn As Boolean

Dim RetValue As Long
Private n(3), m(3) As Integer                                         'n(3)记录游戏区的四个活动方块的编号
                                                                      'm(3)记录预览区的四个活动方块的编号
Private situation, situation2, linenum, t As Integer                  'situation记录游戏区的方块样式
                                                                      'situation2记录预览区的方块样式
                                                                      'linenum记录一次消除的行数
                                                                                                                                           
 Dim no As Integer
 Dim num As Integer
 Dim dx(), dy(), xp(), yp(), am(), stx(), sty() As Double
Private Sub hidefang(a As Integer)                                    '定义使方块不可见的过程
    Select Case a
    Case 0                                                            'a=0使游戏区方块不可见
        cmdfang(n(0)).Visible = False
        cmdfang(n(1)).Visible = False
        cmdfang(n(2)).Visible = False
        cmdfang(n(3)).Visible = False
    Case 1                                                            'a=1使预览区方块不可见
        cmdfangnext(m(0)).Visible = False
        cmdfangnext(m(1)).Visible = False
        cmdfangnext(m(2)).Visible = False
        cmdfangnext(m(3)).Visible = False
    End Select
End Sub
Private Sub showfang(a As Integer)                                    '定义使方块可见的过程
    Select Case a
    Case 0                                                            'a=0使游戏区方块可见
        cmdfang(n(0)).Visible = True
        cmdfang(n(1)).Visible = True
        cmdfang(n(2)).Visible = True
        cmdfang(n(3)).Visible = True
    Case 1                                                            'a=1使预览区方块不可见
        cmdfangnext(m(0)).Visible = True
        cmdfangnext(m(1)).Visible = True
        cmdfangnext(m(2)).Visible = True
        cmdfangnext(m(3)).Visible = True
    End Select
End Sub
Private Sub clearline()                                               '定义消除整行的过程
    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 _
           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
            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
    Next
End Sub
Private Function downable() As Boolean                                '自定义函数,确定方块是否能下降
    If n(0) < 190 And n(1) < 190 And n(2) < 190 And n(3) < 190 Then
        If cmdfang(n(0) + 10).Visible = False And _
           cmdfang(n(1) + 10).Visible = False And _
           cmdfang(n(2) + 10).Visible = False And _
           cmdfang(n(3) + 10).Visible = False Then
            downable = True
        Else: downable = False
        End If
    Else: downable = False
    End If
End Function
Private Function leftable() As Boolean                                 '自定义函数,确定方块是否能左移
    If n(0) Mod 10 <> 0 And n(1) Mod 10 <> 0 And n(2) Mod 10 <> 0 And n(3) Mod 10 <> 0 Then
        If cmdfang(n(0) - 1).Visible = False And _
           cmdfang(n(1) - 1).Visible = False And _
           cmdfang(n(2) - 1).Visible = False And _
           cmdfang(n(3) - 1).Visible = False Then
            leftable = True
        Else: leftable = False
        End If
    Else: leftable = False
    End If
End Function
Private Function rightable() As Boolean                                 '自定义函数,确定方块是否能右移
    If n(0) Mod 10 <> 9 And n(1) Mod 10 <> 9 And n(2) Mod 10 <> 9 And n(3) Mod 10 <> 9 Then
        If cmdfang(n(0) + 1).Visible = False And _
           cmdfang(n(1) + 1).Visible = False And _
           cmdfang(n(2) + 1).Visible = False And _
           cmdfang(n(3) + 1).Visible = False Then
            rightable = True
        Else: rightable = False
        End If
    Else: rightable = False
    End If
End Function
Private Sub loadfangkuai()                                            '定义随机产生一种方块的过程
    Select Case Int(Rnd * 6)
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 0                                                            '这是长条型方块
        Select Case Int(Rnd * 2)
        Case 0
            m(0) = 3: m(1) = 4: m(2) = 5: m(3) = 6: situation2 = 0
        Case 1
            m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 35: situation2 = 1
        End Select
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 1                                                            '这是正方形方块
            m(0) = 4: m(1) = 5: m(2) = 14: m(3) = 15: situation2 = 2
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 2                                                            '这是正S型方块
        Select Case Int(Rnd * 2)
        Case 0
            m(0) = 6: m(1) = 5: m(2) = 15: m(3) = 14: situation2 = 3
        Case 1
            m(0) = 4: m(1) = 14: m(2) = 15: m(3) = 25: situation2 = 4
        End Select
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 3                                                            '这是反S型方块
        Select Case Int(Rnd * 2)
        Case 0
            m(0) = 4: m(1) = 5: m(2) = 15: m(3) = 16: situation2 = 5
        Case 1
            m(0) = 5: m(1) = 15: m(2) = 14: m(3) = 24: situation2 = 6
        End Select
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 4                                                             '这是T型方块
        Select Case Int(Rnd * 4)
        Case 0
            m(0) = 4: m(1) = 5: m(2) = 6: m(3) = 15: situation2 = 7
        Case 1
            m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 14: situation2 = 8
        Case 2
            m(0) = 16: m(1) = 15: m(2) = 14: m(3) = 5: situation2 = 9
        Case 3
            m(0) = 24: m(1) = 14: m(2) = 4: m(3) = 15: situation2 = 10
        End Select
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 5                                                            '这是正7字型方块
        Select Case Int(Rnd * 4)
        Case 0
            m(0) = 4: m(1) = 5: m(2) = 15: m(3) = 25: situation2 = 11
        Case 1
            m(0) = 5: m(1) = 15: m(2) = 14: m(3) = 13: situation2 = 12
        Case 2
            m(0) = 25: m(1) = 24: m(2) = 14: m(3) = 4: situation2 = 13
        Case 3
            m(0) = 14: m(1) = 4: m(2) = 5: m(3) = 6: situation2 = 14
        End Select
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 6                                                            '这是反7字型方块
        Select Case Int(Rnd * 4)
        Case 0
            m(0) = 5: m(1) = 4: m(2) = 14: m(3) = 24: situation2 = 15
        Case 1
            m(0) = 15: m(1) = 5: m(2) = 4: m(3) = 3: situation2 = 16
        Case 2
            m(0) = 24: m(1) = 25: m(2) = 15: m(3) = 5: situation2 = 17
        Case 3
            m(0) = 4: m(1) = 14: m(2) = 15: m(3) = 16: situation2 = 18
        End Select
    End Select
End Sub
Private Sub zhuan()                                                   '定义使方块旋转的过程
    Select Case situation
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 0                                                            '这是长条型方块
        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
    Case 1
        If (n(0) + 18) Mod 10 < 8 And (n(3) - 9) Mod 10 > 0 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 = 0
            End If
        End If
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 2                                                             '这是正方形方块
    
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 3                                                             '这是正S型方块
        If n(0) - 11 > 1 Then
            If cmdfang(n(0) - 11).Visible = False And _
               cmdfang(n(3) + 2).Visible = False Then
                hidefang 0
                n(0) = n(0) - 11
                n(2) = n(2) - 9
                n(3) = n(3) + 2
                showfang 0
                situation = 4
            End If
        End If
    Case 4
        If (n(3) - 2) Mod 10 < 9 Then
            If cmdfang(n(2) + 9).Visible = False And _
               cmdfang(n(3) - 2).Visible = False Then
                hidefang 0
                n(0) = n(0) + 11
                n(2) = n(2) + 9
                n(3) = n(3) - 2
                showfang 0
                situation = 3
            End If
        End If
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 5                                                              '这是反S型方块
        If n(0) - 9 > 1 Then
            If cmdfang(n(0) - 9).Visible = False And _
               cmdfang(n(3) - 2).Visible = False Then
                hidefang 0
                n(0) = n(0) - 9
                n(2) = n(2) - 11
                n(3) = n(3) - 2
                showfang 0
                situation = 6
            End If
        End If
    Case 6
        If (n(3) + 2) Mod 10 > 0 Then
            If cmdfang(n(2) + 11).Visible = False And _
               cmdfang(n(3) + 2).Visible = False Then
                hidefang 0
                n(0) = n(0) + 9
                n(2) = n(2) + 11
                n(3) = n(3) + 2
                showfang 0
                situation = 5
            End If
        End If
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Case 7                                                               '这是T型方块
        If n(0) - 9 > 0 Then
            If cmdfang(n(0) - 9).Visible = False Then
                hidefang 0
                n(0) = n(0) - 9
                n(2) = n(2) + 9
                n(3) = n(3) - 11
                showfang 0
                situation = 8
            End If
        End If
    Case 8
        If (n(0) + 11) Mod 10 > 0 Then
            If cmdfang(n(0) + 11).Visible = False Then
                hidefang 0
                n(0) = n(0) + 11
                n(2) = n(2) - 11
                n(3) = n(3) - 9
                showfang 0
                situation = 9
            End If
        End If
    Case 9
        If n(0) + 9 < 199 Then
            If cmdfang(n(0) + 9).Visible = False Then
                hidefang 0
                n(0) = n(0) + 9
                n(2) = n(2) - 9
                n(3) = n(3) + 11
                showfang 0
                situation = 10
            End If
        End If
    Case 10
        If (n(0) - 11) Mod 10 < 9 Then
            If cmdfang(n(0) - 11).Visible = False Then
                hidefang 0
                n(0) = n(0) - 11
                n(2) = n(2) + 11
                n(3) = n(3) + 9

⌨️ 快捷键说明

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