Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dim nowXY As Integer '紀錄方塊現在位置
- Dim brk '紀錄方塊樣式
- Dim brkcolor '紀錄方塊顏色
- Dim bridx As Integer '亂數產生方塊
- Private Function 移動(f As Integer, t As Integer)
- For i = 3 To 0 Step -1
- For j = 3 To 0 Step -1
- If Command1(4 * i + j).BackColor <> &H8000000F Then
- Command4(f + 10 * i + j).BackColor = &H8000000F
- End If
- Next
- Next
- collision = False
- For i = 3 To 0 Step -1
- For j = 3 To 0 Step -1
- If Command1(i * 4 + j).BackColor <> &H8000000F Then
- If Command4(t + i * 10 + j).BackColor <> &H8000000F Then
- collision = True
- End If
- End If
- Next
- Next
- If collision = True Then
- a = f
- Else
- a = t
- End If
- For i = 3 To 0 Step -1
- For j = 3 To 0 Step -1
- If Command1(i * 4 + j).BackColor <> &H8000000F Then
- Command4(a + i * 10 + j).BackColor = Command1(i * 4 + j).BackColor
- End If
- Next
- Next
- nowXY = a
- 移動 = Not collision
- End Function
- Private Sub Command3_Click()
- a = Array(12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3)
- For i = 0 To 15
- Command2(i).BackColor = Command1(a(i)).BackColor
- Next
- For i = 0 To 15
- Command1(i).BackColor = Command2(i).BackColor
- Next
- End Sub
- Private Function 旋轉(f As Integer)
- For i = 3 To 0 Step -1
- For j = 3 To 0 Step -1
- If Command1(i * 4 + j).BackColor <> &H8000000F Then
- Command4(f + i * 10 + j).BackColor = &H8000000F
- End If
- Next
- Next
- Command3_Click
- collision = False
- For i = 3 To 0 Step -1
- For j = 3 To 0 Step -1
- If Command1(i * 4 + j).BackColor <> &H8000000F Then
- If Command4(f + i * 10 + j).BackColor <> &H8000000F Then
- collision = True
- End If
- End If
- Next
- Next
- If collision = True Then
- Command3_Click
- Command3_Click
- Command3_Click
- End If
- a = f
- For i = 3 To 0 Step -1
- For j = 3 To 0 Step -1
- If Command1(i * 4 + j).BackColor <> &H8000000F Then
- Command4(a + i * 10 + j).BackColor = Command1(i * 4 + j).BackColor
- End If
- Next
- Next
- nowXY = a
- End Function
- Private Sub Timer1_Timer()
- If Not 移動(nowXY, nowXY + 10) Then
- For i = 3 To 0 Step -1
- For j = 3 To 0 Step -1
- If Command1(i * 4 + j).BackColor <> &H8000000F Then
- a = Int((nowXY + i * 10 + j) / 10) * 10 + 8
- Print a
- Do
- eliminate = True
- For k = a To a - 7 Step -1
- If Command4(k).BackColor = &H8000000F Then
- eliminate = False
- End If
- Next
- If eliminate = True Then
- For k = a To 11 Step -1
- Command4(k).BackColor = Command4(k - 10).BackColor
- Next
- Else
- Exit Do
- End If
- Loop
- End If
- Next
- Next
- If nowXY < 10 Then
- Timer1.Interval = 0
- MsgBox "Game Over"
- Else
- nowXY = 3
- bridx = Int(Rnd * 7)
- Text1.Text = brk(bridx)
- End If
- End If
- End Sub
- Private Sub Command5_Click()
- Timer1.Interval = 500
- For i = 1 To 199
- Command4(i).BackColor = &H8000000F
- If i Mod 10 = 0 Or i Mod 10 = 9 Or i >= 190 Then
- Command4(i).BackColor = vbBlack
- Command4(i).Picture = Image1.Picture
- End If
- Next
- nowXY = 3
- bridx = Int(Rnd * 7)
- Text1.Text = brk(bridx)
- 移動 3, 3
- Picture1.SetFocus
- End Sub
- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
- If KeyCode = vbKeyLeft Then
- 移動 nowXY, nowXY - 1
- ElseIf KeyCode = vbKeyRight Then
- 移動 nowXY, nowXY + 1
- ElseIf KeyCode = vbKeyUp Then
- 旋轉 nowXY
- ElseIf KeyCode = vbKeyDown Then
- 移動 nowXY, nowXY + 10
- End If
- End Sub
- '第一題,畫面初始
- Private Sub Form_Load()
- For i = 1 To 199
- Load Command4(i)
- If i Mod 10 = 0 Then
- Command4(i).Left = Command4(i - 10).Left
- Command4(i).Top = Command4(i - 1).Top + Command4(i - 10).Height
- Else
- Command4(i).Left = Command4(i - 1).Left + Command4(i - 1).Width
- Command4(i).Top = Command4(i - 1).Top
- End If
- If i Mod 10 = 0 Or i Mod 10 = 9 Or i >= 190 Then
- Command4(i).BackColor = vbBlack
- Command4(i).Picture = Image1.Picture
- End If
- Command4(i).Visible = True
- Next
- Command4(0).BackColor = vbBlack
- Command4(0).Picture = Image1.Picture
- brk = Array("0000001001110000", "0000001101100000", "0000011001100000", "0000111100000000", "0000011000110000", "0000011100010000", "0000011101000000")
- List1.Clear
- For i = 0 To UBound(brk)
- List1.AddItem brk(i)
- Next
- brkcolor = Array(vbBlue, vbCyan, vbGreen, vbMagenta, vbRed, &HFFC0C0, vbYellow)
- End Sub
- '第二題,點選list,載入磚塊到command1 command2
- Private Sub List1_Click()
- Text1 = List1.Text
- bridx = List1.ListIndex
- End Sub
- Private Sub Text1_Change()
- For i = 0 To 15
- If Mid(Text1, i + 1, 1) = "1" Then
- Command1(i).BackColor = brkcolor(bridx)
- Else
- Command1(i).BackColor = &H8000000F
- End If
- Next
- For i = 0 To 15
- If Mid(Text1, i + 1, 1) = "1" Then
- Command2(i).BackColor = brkcolor(bridx)
- Else
- Command2(i).BackColor = &H8000000F
- End If
- Next
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement