檢舉 [程式]VB俄羅斯方塊怎麼寫落下判定 在 電玩版 發表於 September 11, 2014 如題: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 = 0D = 0Q = 0W = 0form1.Width = 8500'box formFor x = 0 To 3 With box(x) '.Caption = x .Width = 500 .Height = 500 .Top = -1000 .Left = -1000 .Visible = False End WithNext x'side formFor x = 0 To 46 With side(x) .Width = 500 .Height = 500 .Top = -1000 .Left = -1000 End WithNext x'Line the sideside(0).Top = side(0).Heightside(0).Left = side(0).Width * 2For x = 0 To 9 side(x).Top = side(0).Top side(x + 1).Left = side(x).Left + side(x + 1).WidthNext xFor x = 10 To 23 side(x).Top = side(x - 1).Top + side(x).Width side(x).Left = side(0).LeftNext xside(24).Top = side(9).Top + side(24).HeightFor x = 24 To 37 side(x + 1).Top = side(x).Top + side(x + 1).Width side(x).Left = side(9).LeftNext xside(38).Left = side(23).Left + side(38).WidthFor x = 38 To 45 side(x).Top = side(23).Top side(x + 1).Left = side(x).Left + side(x + 1).WidthNext xboxapperEnd SubSub boxapper()RandomizeD = Fix(Rnd * 4) + 1T = 0W = 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 xEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)'Key Contorl'form1.Caption = KeyCodeIf c1.Visible = True Then Timer1 = False Timer2 = TrueEnd If'資料Label1.Caption = "i=" & i & " D=" & DLabel2.Caption = "KeyCode=" & KeyCodeLabel4.Caption = "box(i).left=" & box(i).LeftLabel5.Caption = "box(i).top=" & box(i).TopSelect 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 IfEnd SelectEnd SubPrivate Sub c1_Click()'Startc1.Visible = Falsec2.Visible = Falsec3.Visible = Falsec4.Visible = Trueform1.Caption = "Tetris Battle"For x = 0 To i + 3 box(x).Visible = TrueNext xTimer1 = TrueTimer3 = TrueEnd SubPrivate Sub c4_Click()'Stopc1.Visible = Truec2.Visible = Truec3.Visible = Truec4.Visible = Falsec1.Caption = "Resume"form1.Caption = "Stop"For x = 0 To i + 3 box(x).Visible = FalseNext xTimer1 = FalseTimer3 = FalseEnd SubPrivate 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 + 1End IfIf Q >= 60 Then Q = 0 For x = 0 To 3 box(i + x).Top = box(i + x).Top + box(i + x).Height Next xEnd IfEnd SubPrivate Sub Timer2_Timer()If Timer3 = False ThenElse Timer1 = True Timer2 = FalseEnd IfEnd SubPrivate Sub Timer3_Timer()If time(1).Caption = 60 Then time(0).Caption = Val(time(0).Caption) + 1 time(1).Caption = 0Else time(1).Caption = Val(time(1).Caption) + 1End IfEnd Sub
[程式]VB俄羅斯方塊怎麼寫落下判定
在 電玩版
發表於
如題: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