📄 vbtris32.bas
字号:
Board.Square(Board.PieceX, Board.PieceY + 1) = 2
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 4 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY) = 0 And Board.Square(Board.PieceX - 2, Board.PieceY + 1) = 0 Then
Board.Square(Board.PieceX - 2, Board.PieceY + 1) = 2
For I = Board.PieceY - 1 To Board.PieceY + 1
Board.Square(Board.PieceX, I) = 0
If I <> Board.PieceY + 1 Then Board.Square(Board.PieceX - 1, I) = 2
Next
Board.PieceX = Board.PieceX - 1
End If
End If
End If
Case 3
If Board.PiecePos = 1 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 2, Board.PieceY) = 0 And Board.Square(Board.PieceX, Board.PieceY - 1) = 0 Then
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
Board.Square(Board.PieceX + 1, Board.PieceY - 1) = 0
Board.Square(Board.PieceX - 2, Board.PieceY) = 3
Board.Square(Board.PieceX, Board.PieceY - 1) = 3
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 2 Then
If Board.PieceX >= 2 Then
If Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0 Then
For I = Board.PieceY - 1 To Board.PieceY + 1
Board.Square(Board.PieceX - 1, I) = 3
If I <> Board.PieceY + 1 Then Board.Square(Board.PieceX, I) = 0
Next
Board.Square(Board.PieceX + 1, Board.PieceY + 1) = 0
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 3 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 2, Board.PieceY) = 0 And Board.Square(Board.PieceX - 2, Board.PieceY + 1) = 0 Then
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 0
Board.Square(Board.PieceX - 2, Board.PieceY) = 3
Board.Square(Board.PieceX - 2, Board.PieceY + 1) = 3
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 4 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY) = 0 And Board.Square(Board.PieceX - 2, Board.PieceY - 1) = 0 Then
Board.Square(Board.PieceX - 2, Board.PieceY - 1) = 3
For I = Board.PieceY - 1 To Board.PieceY + 1
Board.Square(Board.PieceX, I) = 0
If I <> Board.PieceY - 1 Then Board.Square(Board.PieceX - 1, I) = 3
Next
Board.PieceX = Board.PieceX - 1
End If
End If
End If
Case 4
If Board.PiecePos = 1 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 1, Board.PieceY) = 0 And Board.Square(Board.PieceX - 2, Board.PieceY - 1) = 0 Then
Board.Square(Board.PieceX, Board.PieceY - 1) = 0
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
Board.Square(Board.PieceX - 1, Board.PieceY) = 4
Board.Square(Board.PieceX - 2, Board.PieceY - 1) = 4
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 2 Then
If Board.PieceX >= 2 Then
If Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY) = 0 And Board.Square(Board.PieceX, Board.PieceY - 1) = 0 Then
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
Board.Square(Board.PieceX, Board.PieceY + 1) = 0
Board.Square(Board.PieceX + 1, Board.PieceY - 1) = 0
Board.Square(Board.PieceX - 1, Board.PieceY) = 4
Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 4
Board.Square(Board.PieceX, Board.PieceY - 1) = 4
Board.PieceX = Board.PieceX - 1
End If
End If
End If
Case 5
If Board.PiecePos = 1 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 2, Board.PieceY) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0 Then
Board.Square(Board.PieceX, Board.PieceY) = 0
Board.Square(Board.PieceX + 1, Board.PieceY - 1) = 0
Board.Square(Board.PieceX - 2, Board.PieceY) = 5
Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 5
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 2 Then
If Board.PieceX >= 2 Then
If Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY) = 0 And Board.Square(Board.PieceX, Board.PieceY + 1) = 0 Then
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
Board.Square(Board.PieceX, Board.PieceY - 1) = 0
Board.Square(Board.PieceX + 1, Board.PieceY + 1) = 0
Board.Square(Board.PieceX - 1, Board.PieceY) = 5
Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 5
Board.Square(Board.PieceX, Board.PieceY + 1) = 5
Board.PieceX = Board.PieceX - 1
End If
End If
End If
Case 6
If Board.PiecePos = 1 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 2, Board.PieceY) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0 Then
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
Board.Square(Board.PieceX, Board.PieceY - 1) = 0
Board.Square(Board.PieceX - 2, Board.PieceY) = 6
Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 6
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 2 Then
If Board.PieceX >= 2 Then
If Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 0 Then
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
For I = Board.PieceY - 1 To Board.PieceY + 1
If I <> Board.PieceY Then Board.Square(Board.PieceX, I) = 0
Board.Square(Board.PieceX - 1, I) = 6
Next
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 3 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 0 And Board.Square(Board.PieceX - 2, Board.PieceY) = 0 Then
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
Board.Square(Board.PieceX, Board.PieceY + 1) = 0
Board.Square(Board.PieceX - 2, Board.PieceY) = 6
Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 6
Board.PieceX = Board.PieceX - 1
End If
End If
ElseIf Board.PiecePos = 4 Then
If Board.PieceX >= 3 Then
If Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 0 And Board.Square(Board.PieceX - 2, Board.PieceY) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0 Then
For I = Board.PieceY - 1 To Board.PieceY + 1
Board.Square(Board.PieceX, I) = 0
If I <> Board.PieceY Then Board.Square(Board.PieceX - 1, I) = 6
Next
Board.Square(Board.PieceX - 2, Board.PieceY) = 6
Board.PieceX = Board.PieceX - 1
End If
End If
End If
Case 7
If Board.PieceX >= 2 Then
If Board.Square(Board.PieceX - 1, Board.PieceY) = 0 And Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0 Then
Board.Square(Board.PieceX + 1, Board.PieceY - 1) = 0
Board.Square(Board.PieceX + 1, Board.PieceY) = 0
Board.Square(Board.PieceX - 1, Board.PieceY) = 7
Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 7
Board.PieceX = Board.PieceX - 1
End If
End If
End Select
'Draw the board
DrawBoard
End Sub
Sub MovePieceRight()
'-------------------------------------------------------
'Moves the piece to the right provided that nothing is
'in the way
'-------------------------------------------------------
'Piece 1
' Pos 1 Pos 2
' X X
' X O
'Y O O O O Y Y O Y Y
' X O
' X O
'
'Piece 2
' Pos 1 Pos 2 Pos 3 Pos 4
' X X X X
' O X O O X O
'Y O O O Y Y Y O Y Y Y O O O Y Y Y O Y Y
' X O X O O O
' X X X X
'
'Piece 3
' Pos 1 Pos 2 Pos 3 Pos 4
' X X X X
' X O O X O O
'Y O O O Y Y Y O Y Y Y O O O Y Y Y O Y Y
' X O O O X O
' X X X X
'
'Piece 4
' Pos 1 Pos 2
' X X
' O O X O
'Y Y O O Y Y Y O O Y
' X O
' X X
'
'Piece 5
' Pos 1 Pos 2
' X X
' O O O
'Y O O Y Y Y Y O O Y
' X X O
' X X
'
'Piece 6
' Pos 1 Pos 2 Pos 3 Pos 4
' X X X X
' O O X O
'Y O O O Y Y Y O O Y Y O O O Y Y O O Y Y
' X O O O
' X X X X
'
'Piece 7
' Pos 1
' X
' O O
'Y Y O O Y
' X
' X
Dim I
'Record what the board looks like before the piece is moved
OldBoard = Board
'Determines what piece is currently moving and what
'position it is in. This tells it where to look for things
'that are in its way. Provided nothing is there it moves
'to the right.
Select Case Board.CurPiece
Case 1
If Board.PiecePos = 1 Then
If Board.PieceX <= 7 Then
If Board.Square(Board.PieceX + 3, Board.PieceY) = 0 Then
Board.Square(Board.PieceX - 1, Board.PieceY) = 0
Board.Square(Board.PieceX + 3, Board.PieceY) = 1
Board.PieceX = Board.PieceX + 1
End If
End If
ElseIf Board.PiecePos = 2 Then
If Board.PieceX <= 9 Then
If Board.Square(Board.PieceX + 1, Board.PieceY - 1) = 0 And Board.Square(Board.PieceX + 1, Board.PieceY) = 0 And Board.Square(Board.PieceX + 1, Board.PieceY + 1) = 0 And Board.Square(Board.PieceX + 1, Board.PieceY + 2) = 0 Then
For I = Board.PieceY - 1 To Board.PieceY + 2
Board.Square(Board.PieceX, I) = 0
Board.Square(Board.PieceX + 1, I) = 1
Next
Board.PieceX = Board.PieceX + 1
End If
End If
End If
Case 2
If Board.PiecePos = 1 Then
If Board.PieceX <= 8 Then
If Board.Square(Board.PieceX + 2, Board.PieceY) = 0 And Board.Square(Board.PieceX, Board.PieceY - 1) = 0 Then
Board.Square(Board.PieceX - 1, Board.PieceY) = 0
Board.Square(Board.PieceX - 1, Board.PieceY - 1) = 0
Board.Square(Board.PieceX + 2, Board.PieceY) = 2
Board.Square(Board.PieceX, Board.PieceY - 1) = 2
Board.PieceX = Board.PieceX + 1
End If
End If
ElseIf Board.PiecePos = 2 Then
If Board.PieceX <= 8 Then
If Board.Square(Board.PieceX + 1, Board.PieceY + 1) = 0 And Board.Square(Board.PieceX + 1, Board.PieceY) = 0 And Board.Square(Board.PieceX + 2, Board.PieceY - 1) = 0 Then
For I = Board.PieceY - 1 To Board.PieceY + 1
Board.Square(Board.PieceX, I) = 0
If I <> Board.PieceY - 1 Then Board.Square(Board.PieceX + 1, I) = 2
Next
Board.Square(Board.PieceX + 2, Board.PieceY - 1) = 2
Board.PieceX = Board.PieceX + 1
End If
End If
ElseIf Board.PiecePos = 3 Then
If Board.PieceX <= 8 Then
If Board.Square(Board.PieceX + 2, Board.PieceY + 1) = 0 And Board.Square(Board.PieceX + 2, Board.PieceY) = 0 Then
Board.Square(Board.PieceX - 1, Board.PieceY) = 0
Board.Square(Board.PieceX + 1, Board.PieceY + 1) = 0
Board.Square(Board.PieceX + 2, Board.PieceY) = 2
Board.Square(Board.PieceX + 2, Board.PieceY + 1) = 2
Board.PieceX = Board.PieceX + 1
End If
End If
ElseIf Board.PiecePos = 4 Then
If Board.PieceX <= 9 Then
If Board.Square(Board.PieceX + 1, Board.PieceY - 1) = 0 And Board.Square(Board.PieceX + 1, Board.PieceY) = 0 And Board.Square(Board.PieceX + 1, Board.PieceY + 1) = 0 Then
Board.Square(Board.PieceX - 1, Board.PieceY + 1) = 0
For I = Board.PieceY - 1 To Board.PieceY + 1
If I <> Board.PieceY + 1 Then Board.Square(Board.PieceX, I) = 0
Board.Square(Board.PieceX + 1, I) = 2
Next
Board.PieceX = Board.PieceX + 1
End If
End If
End If
Case 3
If Board.PiecePos = 1 Then
If Board.PieceX <= 8 Then
If Board.Square(Board.PieceX + 2, Board.PieceY - 1) = 0 And Board.Square(Board.PieceX + 2, Board.PieceY) = 0 Then
Board.Square(Board.PieceX - 1, Board.PieceY) = 0
Board.Square(Board.PieceX + 1, Board.PieceY - 1) = 0
Board.Square(Board.PieceX + 2, Board.PieceY) = 3
Board.Square(Board.PieceX + 2, Board.PieceY - 1) = 3
Board.PieceX = Board.PieceX + 1
End If
End If
ElseIf Board.PiecePos = 2 Then
If Board.PieceX <= 8 Then
If Board.Square(Board.PieceX + 1, Board.PieceY - 1) = 0 And Board.Square(Board.PieceX + 1, Board.PieceY) = 0 And Board.Square(Board.PieceX + 2, Board.PieceY + 1) = 0 Then
For I = Board.PieceY - 1 To Board.PieceY + 1
Board.Square(Board.PieceX, I) = 0
If I <> Board.PieceY + 1 Then Board.Square(Board.PieceX + 1, I) = 3
Next
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -