上QQ阅读APP看书,第一时间看更新
Time for action – manipulating the GameBoard
- Add
public
methods to theGameBoard
class to interact withGamePieces
:Public Sub RotatePiece(x As Integer, y As Integer, clockwise As Boolean) boardSquares(x, y).RotatePiece(clockwise) End Sub Public Function GetSourceRect( x As Integer, y As Integer) As Rectangle Return boardSquares(x, y).GetSourceRectangle() End Function Public Function GetSquare(x As Integer, y As Integer) As String Return boardSquares(x, y).PieceType End Function Public Sub SetSquare(x As Integer, y As Integer, pieceType As String) boardSquares(x, y).SetPiece(pieceType) End Sub Public Function HasConnector(x As Integer, y As Integer, direction As String) As Boolean Return boardSquares(x, y).HasConnector(direction) End Function Public Sub RandomPiece(x As Integer, y As Integer) boardSquares(x, y).SetPiece(GamePiece.PieceTypes( rand.Next(0, GamePiece.MaxPlayablePieceIndex + 1))) End Sub
What just happened?
RotatePiece()
, GetSourceRect()
, GetSquare()
, SetSquare()
, and HasConnector()
methods simply locate the appropriate GamePiece
within the boardSquares
array and pass on the function request to the piece.
The RandomPiece()
method uses the rand
object to get a random value from the PieceTypes
array and assigns it to a GamePiece
. It is important to remember that with the Random.Next()
method overload used here, the second parameter is non-inclusive. In order to generate a random number from 0
through 5
, the second parameter needs to be 6
.
Filling in the gaps
Whenever the player completes a scoring chain, the pieces in that chain are removed from the board. Any pieces above them fall down into the vacated spots and new pieces are generated.