俄羅斯方塊(1)

來源:互聯網
上載者:User

這兩天開始做俄羅斯方塊,算是這幾天來比較複雜的一個了,分了幾步來實現 

這裡用VB實現方塊的幾種變形,用方向鍵控制方塊的移動

Sub new_block(intType As Integer)
    Select Case intType
    Case 1
        block(0).Left = block(0).Width * 0
        block(0).Top = block(0).Height * 0
        block(1).Left = block(0).Width * 1
        block(1).Top = block(0).Height * 0
        block(2).Left = block(0).Width * 2
        block(2).Top = block(0).Height * 0
        block(3).Left = block(0).Width * 3
        block(3).Top = block(0).Height * 0
    Case 2
        block(0).Left = block(0).Width * 0
        block(0).Top = block(0).Height * 0
        block(1).Left = block(0).Width * 1
        block(1).Top = block(0).Height * 0
        block(2).Left = block(0).Width * 0
        block(2).Top = block(0).Height * 1
        block(3).Left = block(0).Width * 1
        block(3).Top = block(0).Height * 1
    Case 3
        block(0).Left = block(0).Width * 1
        block(0).Top = block(0).Height * 0
        block(1).Left = block(0).Width * 0
        block(1).Top = block(0).Height * 1
        block(2).Left = block(0).Width * 1
        block(2).Top = block(0).Height * 1
        block(3).Left = block(0).Width * 2
        block(3).Top = block(0).Height * 1
    Case Else
        block(0).Left = block(0).Width * 0
        block(0).Top = block(0).Height * 0
        block(1).Left = block(0).Width * 1
        block(1).Top = block(0).Height * 0
        block(2).Left = block(0).Width * 2
        block(2).Top = block(0).Height * 0
        block(3).Left = block(0).Width * 3
        block(3).Top = block(0).Height * 0
    End Select
    Dim i As Integer
    For i = 0 To 3
    block(i).Visible = True
    Next
End Sub
_________________________________________________
Sub block_move(fx As Integer)
Dim i As Integer
Dim x As Integer
Dim y As Integer
If can_move(fx) = False Then
   Exit Sub
End If
For i = 0 To 3
    x = block(i).Left / block(i).Width
    y = block(i).Top / block(i).Height
    Select Case fx
        Case 1
            x = x - 1
        Case 2
            y = y - 1
        Case 3
            x = x + 1
        Case 4
            y = y + 1
    End Select
    block(i).Left = block(i).Width * x
    block(i).Top = block(i).Height * y
Next
End Sub
_________________________________________________
Private Sub Command1_Click()
    If IsNumeric(Text1.Text) Then
        new_block CInt(Text1.Text)
    End If
End Sub
_________________________________________________
Private Sub file_KeyDown(KeyCode As Integer, Shift As Integer)
    block_move KeyCode - 36
End Sub
_________________________________________________
Function can_move(fx As Integer) As Boolean
    Dim i As Integer
    Dim x As Integer
    Dim y As Integer
    can_move = True
    For i = 0 To 3
        x = block(i).Left / block(i).Width
        y = block(i).Top / block(i).Height
        Select Case fx
            Case 1
                x = x - 1
            Case 2
                y = y - 1
            Case 3
                x = x + 1
            Case 4
                y = y + 1
        End Select
            If x < 0 Or x > 9 Or y < 0 Or y > 14 Then
                can_move = False
                Exit Function
            End If
    Next
End Function

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.