嘉哲

可發文群組
  • 內容數

    1
  • 註冊日期

  • 最後上線

文章 發表由 嘉哲

  1. 如題:VB俄羅斯方塊怎麼寫落下判定

    https://drive.google.com/file/d/0B4DBK-x__ieBZ1JLZmFLdlVnNFk/edit?usp=sharing

    ↗這是檔案,必須用VB打開

    不是C++

    我想只差這一步就可以完成了

    以下為程式碼:

    Dim D, i, M, T, Q, W, R(9, 13) 'D為遊戲亂數, i為陣列係數, M為餘數,T為轉計次, Q為時間變數

    Private Sub Form_Load()

    'Dim變數屬性

    i = 0

    D = 0

    Q = 0

    W = 0

    form1.Width = 8500

    'box form

    For x = 0 To 3

    With box(x)

    '.Caption = x

    .Width = 500

    .Height = 500

    .Top = -1000

    .Left = -1000

    .Visible = False

    End With

    Next x

    'side form

    For x = 0 To 46

    With side(x)

    .Width = 500

    .Height = 500

    .Top = -1000

    .Left = -1000

    End With

    Next x

    'Line the side

    side(0).Top = side(0).Height

    side(0).Left = side(0).Width * 2

    For x = 0 To 9

    side(x).Top = side(0).Top

    side(x + 1).Left = side(x).Left + side(x + 1).Width

    Next x

    For x = 10 To 23

    side(x).Top = side(x - 1).Top + side(x).Width

    side(x).Left = side(0).Left

    Next x

    side(24).Top = side(9).Top + side(24).Height

    For x = 24 To 37

    side(x + 1).Top = side(x).Top + side(x + 1).Width

    side(x).Left = side(9).Left

    Next x

    side(38).Left = side(23).Left + side(38).Width

    For x = 38 To 45

    side(x).Top = side(23).Top

    side(x + 1).Left = side(x).Left + side(x + 1).Width

    Next x

    boxapper

    End Sub

    Sub boxapper()

    Randomize

    D = Fix(Rnd * 4) + 1

    T = 0

    W = 0

    For x = 0 To 3

    Select Case D

    Case Is = 1 ' T type

    box(i + x).BackColor = &HFF&

    Select Case x

    Case Is = 0

    box(i + x).Left = side(4).Left

    box(i + x).Top = side(4).Top + box(i + x).Height * 2

    Case Is = 1

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height

    Case Is = 2

    box(i + x).Left = side(6).Left

    box(i + x).Top = side(6).Top + box(i + x).Height * 2

    Case Is = 3

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height * 2

    End Select

    Case Is = 2 ' L type

    box(i + x).BackColor = &H80FF&

    Select Case x

    Case Is = 0

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height

    Case Is = 1

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height * 2

    Case Is = 2

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height * 3

    Case Is = 3

    box(i + x).Left = side(6).Left

    box(i + x).Top = side(6).Top + box(i + x).Height * 3

    End Select

    Case Is = 3 ' I type

    box(i + x).BackColor = &HFF00&

    Select Case x

    Case Is = 0

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height

    Case Is = 1

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height * 2

    Case Is = 2

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height * 3

    Case Is = 3

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height * 4

    End Select

    Case Is = 4 ' 口 type

    box(i + x).BackColor = &HC0C000

    Select Case x

    Case Is = 0

    box(i + x).Left = side(4).Left

    box(i + x).Top = side(4).Top + box(i + x).Height

    Case Is = 1

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height

    Case Is = 2

    box(i + x).Left = side(4).Left

    box(i + x).Top = side(4).Top + box(i + x).Height * 2

    Case Is = 3

    box(i + x).Left = side(5).Left

    box(i + x).Top = side(5).Top + box(i + x).Height * 2

    End Select

    End Select

    Next x

    End Sub

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

    'Key Contorl

    'form1.Caption = KeyCode

    If c1.Visible = True Then

    Timer1 = False

    Timer2 = True

    End If

    '資料

    Label1.Caption = "i=" & i & " D=" & D

    Label2.Caption = "KeyCode=" & KeyCode

    Label4.Caption = "box(i).left=" & box(i).Left

    Label5.Caption = "box(i).top=" & box(i).Top

    Select Case KeyCode

    Case Is = 16 'hold shift

    x = plays(3).Caption

    plays(3).Caption = plays(0).Caption

    plays(0).Caption = x

    Case Is = 39 'right

    For x = 0 To 3

    box(i + x).Left = box(i + x).Left + box(i + x).Width

    Next x

    Case Is = 37 'left

    For x = 0 To 3

    box(i + x).Left = box(i + x).Left - box(i + x).Width

    Next x

    Case Is = 38 'turn

    T = T + 1

    M = T Mod 4

    Select Case D

    Case Is = 1 ' T type

    Select Case M

    Case Is = 1

    box(i + 3).Left = box(i).Left

    box(i + 1).Left = box(i).Left

    box(i + 2).Left = box(i).Left - box(i).Width

    box(i + 3).Top = box(i).Top + box(i).Height

    box(i + 1).Top = box(i).Top - box(i).Height

    box(i + 2).Top = box(i).Top

    Case Is = 2

    box(i + 3).Left = box(i).Left - box(i).Width

    box(i + 1).Left = box(i).Left + box(i).Width

    box(i + 2).Left = box(i).Left

    box(i + 3).Top = box(i).Top

    box(i + 1).Top = box(i).Top

    box(i + 2).Top = box(i).Top + box(i).Height

    Case Is = 3

    box(i + 3).Left = box(i).Left

    box(i + 1).Left = box(i).Left

    box(i + 2).Left = box(i).Left + box(i).Width

    box(i + 3).Top = box(i).Top + box(i).Height

    box(i + 1).Top = box(i).Top - box(i).Height

    box(i + 2).Top = box(i).Top

    Case Is = 0

    box(i + 3).Left = box(i).Left - box(i).Width

    box(i + 1).Left = box(i).Left + box(i).Width

    box(i + 2).Left = box(i).Left

    box(i + 3).Top = box(i).Top

    box(i + 1).Top = box(i).Top

    box(i + 2).Top = box(i).Top - box(i).Height

    End Select

    Case Is = 2 'L type

    Select Case M

    Case Is = 1

    box(i + 0).Left = box(i + 2).Left + box(i + 2).Width * 2

    box(i + 1).Left = box(i + 2).Left + box(i + 2).Width

    box(i + 3).Left = box(i + 2).Left

    box(i + 0).Top = box(i + 2).Top

    box(i + 1).Top = box(i + 2).Top

    box(i + 3).Top = box(i + 2).Top - box(i + 2).Height

    Case Is = 2

    box(i + 0).Left = box(i + 2).Left

    box(i + 1).Left = box(i + 2).Left + box(i + 2).Width

    box(i + 3).Left = box(i + 2).Left

    box(i + 0).Top = box(i + 2).Top - box(i + 2).Height

    box(i + 1).Top = box(i + 0).Top

    box(i + 3).Top = box(i + 2).Top + box(i + 2).Height

    Case Is = 3

    box(i + 0).Left = box(i + 2).Left + box(i + 2).Width * 2

    box(i + 1).Left = box(i + 2).Left + box(i + 2).Width

    box(i + 3).Left = box(i + 0).Left

    box(i + 0).Top = box(i + 2).Top

    box(i + 1).Top = box(i + 2).Top

    box(i + 3).Top = box(i + 2).Top + box(i + 2).Height

    Case Is = 0

    box(i + 0).Left = box(i + 2).Left

    box(i + 1).Left = box(i + 2).Left - box(i + 2).Width

    box(i + 3).Left = box(i + 2).Left

    box(i + 0).Top = box(i + 2).Top - box(i + 2).Height

    box(i + 1).Top = box(i + 3).Top

    box(i + 3).Top = box(i + 2).Top + box(i + 2).Height

    End Select

    Case Is = 3 'I type

    Select Case M

    Case Is = 1

    box(i + 0).Left = box(i + 2).Left - box(i).Width * 2

    box(i + 1).Left = box(i + 2).Left - box(i).Width

    box(i + 3).Left = box(i + 2).Left + box(i).Width

    box(i + 0).Top = box(i + 2).Top

    box(i + 1).Top = box(i + 2).Top

    box(i + 3).Top = box(i + 2).Top

    Case Is = 3

    box(i + 0).Left = box(i + 2).Left - box(i).Width * 2

    box(i + 1).Left = box(i + 2).Left - box(i).Width

    box(i + 3).Left = box(i + 2).Left + box(i).Width

    box(i + 0).Top = box(i + 2).Top

    box(i + 1).Top = box(i + 2).Top

    box(i + 3).Top = box(i + 2).Top

    Case Is = 2

    box(i + 0).Left = box(i + 2).Left

    box(i + 1).Left = box(i + 2).Left

    box(i + 3).Left = box(i + 2).Left

    box(i + 0).Top = box(i + 2).Top - box(i).Height * 2

    box(i + 1).Top = box(i + 2).Top - box(i).Height

    box(i + 3).Top = box(i + 2).Top + box(i).Height

    Case Is = 0

    box(i + 0).Left = box(i + 2).Left

    box(i + 1).Left = box(i + 2).Left

    box(i + 3).Left = box(i + 2).Left

    box(i + 0).Top = box(i + 2).Top - box(i).Height * 2

    box(i + 1).Top = box(i + 2).Top - box(i).Height

    box(i + 3).Top = box(i + 2).Top + box(i).Height

    End Select

    End Select

    Case Is = 40 'slow down

    If box(i + 3).Top >= side(38).Top - box(i + 3).Height Then '未完成

    Else

    For x = 0 To 3

    box(i + x).Top = box(i + x).Top + box(i + x).Height

    Next x

    End If

    Case Is = 32 'space down 未完成

    Case Is = 70 'F 資料

    If form1.Width = 11100 Then

    form1.Width = 8500

    Else

    form1.Width = 11100

    End If

    End Select

    End Sub

    Private Sub c1_Click()

    'Start

    c1.Visible = False

    c2.Visible = False

    c3.Visible = False

    c4.Visible = True

    form1.Caption = "Tetris Battle"

    For x = 0 To i + 3

    box(x).Visible = True

    Next x

    Timer1 = True

    Timer3 = True

    End Sub

    Private Sub c4_Click()

    'Stop

    c1.Visible = True

    c2.Visible = True

    c3.Visible = True

    c4.Visible = False

    c1.Caption = "Resume"

    form1.Caption = "Stop"

    For x = 0 To i + 3

    box(x).Visible = False

    Next x

    Timer1 = False

    Timer3 = False

    End Sub

    Private Sub Timer1_Timer()

    If box(i + 3).Top >= side(38).Top - box(i + 3).Height Then '未完成

    i = i + 4

    For x = 0 To 3

    Load box(i + x)

    Set box(i + x).Container = form1

    box(i + x).Visible = True

    Next x

    boxapper

    Else

    Q = Q + 1

    End If

    If Q >= 60 Then

    Q = 0

    For x = 0 To 3

    box(i + x).Top = box(i + x).Top + box(i + x).Height

    Next x

    End If

    End Sub

    Private Sub Timer2_Timer()

    If Timer3 = False Then

    Else

    Timer1 = True

    Timer2 = False

    End If

    End Sub

    Private Sub Timer3_Timer()

    If time(1).Caption = 60 Then

    time(0).Caption = Val(time(0).Caption) + 1

    time(1).Caption = 0

    Else

    time(1).Caption = Val(time(1).Caption) + 1

    End If

    End Sub