[程式]VB俄羅斯方塊怎麼寫落下判定


Recommended Posts

如題: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

鏈接文章
分享到其他網站

請登入後來留意見

在登入之後,您才能留意見



立即登入