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

📄 frmform.frm

📁 visual basic课程设计案例精编
💻 FRM
📖 第 1 页 / 共 3 页
字号:

Sub Init()
'每个方块的初始化过程
    picPictureNow.Visible = False
    tmrDrop.Enabled = False
    Type_Now = Type_Next
    picPictureNow.Picture = imgPictureNext.Picture
    imgPictureNowBackup.Picture = picPictureNow.Picture
    Call Sel_Next
    intRotate = 0
    picPictureNow.Left = 4
    picPictureNow.Top = 0
    picPictureNow.Visible = True
    tmrDrop.Enabled = True
    tmrDrop.Interval = HScroll1.Value
    Label1.Caption = "速度: " + Str(600 - HScroll1.Value)
    Call HScroll1_Change
End Sub

Sub GetCoor()
'获取一个方块的 4 个点的坐标
    For i = 1 To 4  'init
        Xs(i).cX = 0
        Xs(i).cY = 0
        Xs(i).cZ = False
    Next
    CurX = picPictureNow.Left + 1
        Select Case Type_Now
            Case 1  '长条
                If intRotate Mod 2 = 1 Then
                    Xs(1).cX = CurX
                    Xs(1).cY = picPictureNow.Top + 1
                    Xs(1).cZ = True
                    For i = 2 To 4
                        Xs(i).cX = CurX + i - 1
                        Xs(i).cY = picPictureNow.Top + 1
                        Xs(i).cZ = True
                    Next
                Else
                    Xs(1).cX = CurX
                    Xs(1).cY = picPictureNow.Top + 4
                    Xs(1).cZ = True
                    For i = 2 To 4
                        Xs(i).cX = CurX
                        Xs(i).cY = picPictureNow.Top + i - 1
                        Xs(i).cZ = False
                    Next
                End If
            Case 2  '2字
                If intRotate Mod 2 = 1 Then
                    Xs(1).cX = CurX
                    Xs(1).cY = picPictureNow.Top + 3
                    Xs(1).cZ = True
                    Xs(2).cX = CurX + 1
                    Xs(2).cY = picPictureNow.Top + 2
                    Xs(2).cZ = True
                    For i = 3 To 4
                        Xs(i).cX = CurX + i - 3
                        Xs(i).cY = picPictureNow.Top + 5 - i
                        Xs(i).cZ = False
                    Next
                Else
                    Xs(1).cX = CurX
                    Xs(1).cY = picPictureNow.Top + 1
                    Xs(1).cZ = True
                    Xs(2).cX = CurX + 1
                    Xs(2).cY = picPictureNow.Top + 2
                    Xs(2).cZ = True
                    Xs(3).cX = CurX + 2
                    Xs(3).cY = picPictureNow.Top + 2
                    Xs(3).cZ = True
                    Xs(4).cX = CurX + 1
                    Xs(4).cY = picPictureNow.Top + 1
                    Xs(4).cZ = False
                End If
            Case 3  '7字
                Select Case intRotate Mod 4
                    Case 0
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 1
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 3
                        Xs(2).cZ = True
                        For i = 3 To 4
                            Xs(i).cX = CurX + 1
                            Xs(i).cY = picPictureNow.Top + i - 2
                            Xs(i).cZ = False
                        Next
                    Case 1
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 2
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 2
                        Xs(2).cZ = True
                        Xs(3).cX = CurX + 2
                        Xs(3).cY = picPictureNow.Top + 2
                        Xs(3).cZ = True
                        Xs(4).cX = CurX + 2
                        Xs(4).cY = picPictureNow.Top + 1
                        Xs(4).cZ = False
                    Case 2
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 3
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 3
                        Xs(2).cZ = True
                        For i = 3 To 4
                            Xs(i).cX = CurX
                            Xs(i).cY = picPictureNow.Top + i - 2
                            Xs(i).cZ = False
                        Next
                    Case 3
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 2
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 1
                        Xs(2).cZ = True
                        Xs(3).cX = CurX + 2
                        Xs(3).cY = picPictureNow.Top + 1
                        Xs(3).cZ = True
                        Xs(4).cX = CurX
                        Xs(4).cY = picPictureNow.Top + 1
                        Xs(4).cZ = False
                End Select
            Case 4  'T字
                Select Case intRotate Mod 4
                    Case 0
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 2
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 2
                        Xs(2).cZ = True
                        Xs(3).cX = CurX + 2
                        Xs(3).cY = picPictureNow.Top + 2
                        Xs(3).cZ = True
                        Xs(4).cX = CurX + 1
                        Xs(4).cY = picPictureNow.Top + 1
                        Xs(4).cZ = False
                    Case 1
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 3
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 2
                        Xs(2).cZ = True
                        For i = 3 To 4
                            Xs(i).cX = CurX
                            Xs(i).cY = picPictureNow.Top + i - 2
                            Xs(i).cZ = False
                        Next
                    Case 2
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 1
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 2
                        Xs(2).cZ = True
                        Xs(3).cX = CurX + 2
                        Xs(3).cY = picPictureNow.Top + 1
                        Xs(3).cZ = True
                        Xs(4).cX = CurX + 1
                        Xs(4).cY = picPictureNow.Top + 1
                        Xs(4).cZ = False
                    Case 3
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 2
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 3
                        Xs(2).cZ = True
                        For i = 3 To 4
                            Xs(i).cX = CurX + 1
                            Xs(i).cY = picPictureNow.Top + i - 2
                            Xs(i).cZ = False
                        Next
                End Select
            Case 5  '反7字
                Select Case intRotate Mod 4
                    Case 0
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 3
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 1
                        Xs(2).cZ = True
                        For i = 3 To 4
                            Xs(i).cX = CurX
                            Xs(i).cY = picPictureNow.Top + i - 2
                            Xs(i).cZ = False
                        Next
                    Case 1
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 1
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 1
                        Xs(2).cZ = True
                        Xs(3).cX = CurX + 2
                        Xs(3).cY = picPictureNow.Top + 2
                        Xs(3).cZ = True
                        Xs(4).cX = CurX + 2
                        Xs(4).cY = picPictureNow.Top + 1
                        Xs(4).cZ = False
                    Case 2
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 3
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 3
                        Xs(2).cZ = True
                        For i = 3 To 4
                            Xs(i).cX = CurX + 1
                            Xs(i).cY = picPictureNow.Top + i - 2
                            Xs(i).cZ = False
                        Next
                    Case 3
                        Xs(1).cX = CurX
                        Xs(1).cY = picPictureNow.Top + 2
                        Xs(1).cZ = True
                        Xs(2).cX = CurX + 1
                        Xs(2).cY = picPictureNow.Top + 2
                        Xs(2).cZ = True
                        Xs(3).cX = CurX + 2
                        Xs(3).cY = picPictureNow.Top + 2
                        Xs(3).cZ = True
                        Xs(4).cX = CurX
                        Xs(4).cY = picPictureNow.Top + 1
                        Xs(4).cZ = False
                End Select
            Case 6  '反2字
                If intRotate Mod 2 = 1 Then
                    Xs(1).cX = CurX
                    Xs(1).cY = picPictureNow.Top + 2
                    Xs(1).cZ = True
                    Xs(2).cX = CurX + 1
                    Xs(2).cY = picPictureNow.Top + 3
                    Xs(2).cZ = True
                    For i = 3 To 4
                        Xs(i).cX = CurX + i - 3
                        Xs(i).cY = picPictureNow.Top + i - 2
                        Xs(i).cZ = False
                    Next
                Else
                    Xs(1).cX = CurX
                    Xs(1).cY = picPictureNow.Top + 2
                    Xs(1).cZ = True
                    Xs(2).cX = CurX + 1
                    Xs(2).cY = picPictureNow.Top + 2
                    Xs(2).cZ = True
                    Xs(3).cX = CurX + 2
                    Xs(3).cY = picPictureNow.Top + 1
                    Xs(3).cZ = True
                    Xs(4).cX = CurX + 1
                    Xs(4).cY = picPictureNow.Top + 1
                    Xs(4).cZ = False
                End If
            Case 7  '田字
                    Xs(1).cX = CurX
                    Xs(1).cY = picPictureNow.Top + 2
                    Xs(1).cZ = True
                    Xs(2).cX = CurX + 1
                    Xs(2).cY = picPictureNow.Top + 2
                    Xs(2).cZ = True
                    For i = 3 To 4
                        Xs(i).cX = CurX + i - 3
                        Xs(i).cY = picPictureNow.Top + 1
                        Xs(i).cZ = False
                    Next
        End Select
End Sub

Sub Judge_Full()
'判断是否堆满
    R_Value = picPictureNow.Top + 1   'MinY
    rx_value = picPictureNow.Top + picPictureNow.Height 'MaxY
    For i = rx_value To R_Value Step -1
        If Total(1, i) And Total(2, i) And Total(3, i) And Total(4, i) And Total(5, i) And _
          Total(6, i) And Total(7, i) And Total(8, i) And Total(9, i) And Total(10, i) Then
                '如果一行已经堆满,则将此行上面的图象全部向下移动一点
                k = BitBlt(picBackGround.hDC, 0, 20, 200, (i - 1) * 20, picBackGround.hDC, 0, 0, vbSrcCopy)
                For j = i To 1 Step -1
                    For k = 1 To 10
                        Total(k, j) = Total(k, j - 1)
                    Next k
                Next j
                i = i + 1
        End If
    Next i
    '如果目前方块的顶点位置 <=0 ,则表示全部堆满
    If picPictureNow.Top <= 1 Then
        Select Case MsgBox("你输了!想再试试吗?", 4 + 32)
          Case vbYes
            mnuGameNew_Click
          Case Else
            Call Global_Init
        End Select
    End If
End Sub

'判断方块能否翻转
Function Judge_Rotate()
        Select Case Type_Now
            Case 1  '长条
                If intRotate Mod 2 = 1 Then
                    If GetValue(0, 4) Then    'Get Y Value
                        If MaxY - MinY >= 3 Then
                            Adjust_Top = MinY - 1
                            Judge_Rotate = True
                            Exit Function
                        End If
                    End If
                    Judge_Rotate = False
                    Exit Function
                Else
                    If GetValue(1, 4) Then 'Get X Value
                        If MaxX - MinX >= 3 Then
                            If MaxX - CurX <= 2 Then
                                Adjust_Left = MaxX - 3 - 1
                            Else
                                If CurX = MinX Then
                                    Adjust_Left = CurX - 1
                                Else
                                    Adjust_Left = CurX - 1 - 1
                                End If
                            End If
                            Judge_Rotate = True
                            Exit Function
                        End If

⌨️ 快捷键说明

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