上QQ阅读APP看书,第一时间看更新
Time for action – filling in the gaps
- Add the
FillFromAbove()
method to theGameBoard
class.Public Sub FillFromAbove(x As Integer, y As Integer) Dim rowLookup As Integer = y - 1 Do While (rowLookup >= 0) If GetSquare(x, rowLookup) <> "Empty" Then SetSquare(x, y, GetSquare(x, rowLookup)) SetSquare(x, rowLookup, "Empty") rowLookup = -1 End If rowLookup -= 1 Loop End Sub
What just happened?
Given a square to fill, FillFromAbove()
looks at the piece directly above to see if it is marked as Empty
. If it is, the method will subtract one from rowLookup
and start over until it reaches the top of the board. If no non-empty pieces are found when the top of the board is reached, the method does nothing and exits.
When a non-empty piece is found, it is copied to the destination square, and the copied piece is changed to an empty piece. The rowLookup
variable is set to -1
to ensure that the loop does not continue to run.
Generating new pieces
We can create a single method that will fill any empty spaces on the game board, use it when the game begins, and when pieces are removed from the board after scoring.