官术网_书友最值得收藏!

Time for action – manipulating the GameBoard

  1. Add public methods to the GameBoard class to interact with GamePieces:
    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.

Tip

Subs, functions, and methods

Method is the generic term for a callable code block inside a class. Both Subs and Functions are methods. The difference between the two is that a Function returns a value, while a Sub does not.

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.

主站蜘蛛池模板: 丹东市| 大埔县| 凤台县| 普陀区| 句容市| 筠连县| 襄城县| 阿坝| 会宁县| 阿拉善左旗| 习水县| 舟曲县| 垣曲县| 灵璧县| 通辽市| 丰宁| 贵阳市| 西平县| 德保县| 惠来县| 怀化市| 钦州市| 上饶县| 庐江县| 玉龙| 台江县| 通榆县| 阜新| 大邑县| 长海县| 布尔津县| 澄城县| 建阳市| 固阳县| 陆川县| 城步| 启东市| 南丹县| 高邮市| 民权县| 桑日县|