Class AbstractBoard
An adapter between ML Agents and a Match-3 game.
Inheritance
AbstractBoard
Syntax
public abstract class AbstractBoard : MonoBehaviour
Fields
OnNoValidMovesAction
An optional callback for when the all moves are invalid. Ideally, the game state should
be changed before this happens, but this is a way to get notified if not.
Declaration
public Action OnNoValidMovesAction
Field Value
Methods
AllMoves()
Iterate through all moves on the board.
Declaration
public IEnumerable<Move> AllMoves()
Returns
Type |
Description |
IEnumerable<Move> |
|
GetCellType(Int32, Int32)
Returns the "color" of the piece at the given row and column.
This should be between 0 and BoardSize.NumCellTypes-1 (inclusive).
The actual order of the values doesn't matter.
Declaration
public abstract int GetCellType(int row, int col)
Parameters
Returns
GetCurrentBoardSize()
Return the current size of the board. The values must less than or equal to the values returned from
GetMaxBoardSize().
By default, this will return GetMaxBoardSize(); if your board doesn't change size, you don't need to
override it.
Declaration
public virtual BoardSize GetCurrentBoardSize()
Returns
GetMaxBoardSize()
Return the maximum size of the board. This is used to determine the size of observations and actions,
so the returned values must not change.
Declaration
public abstract BoardSize GetMaxBoardSize()
Returns
GetSpecialType(Int32, Int32)
Returns the special type of the piece at the given row and column.
This should be between 0 and BoardSize.NumSpecialTypes (inclusive).
The actual order of the values doesn't matter.
Declaration
public abstract int GetSpecialType(int row, int col)
Parameters
Returns
IsMoveValid(Move)
Check whether the particular Move is valid for the game.
The actual results will depend on the rules of the game, but we provide SimpleIsMoveValid(Move)
that handles basic match3 rules with no special or immovable pieces.
Declaration
public abstract bool IsMoveValid(Move m)
Parameters
Type |
Name |
Description |
Move |
m |
The move to check.
|
Returns
MakeMove(Move)
Instruct the game to make the given Move. Returns true if the move was made.
Note that during training, a move that was marked as invalid may occasionally still be
requested. If this happens, it is safe to do nothing and request another move.
Declaration
public abstract bool MakeMove(Move m)
Parameters
Type |
Name |
Description |
Move |
m |
The move to carry out.
|
Returns
NumMoves()
Return the total number of moves possible for the board.
Declaration
Returns
SimpleIsMoveValid(Move)
Returns true if swapping the cells specified by the move would result in
3 or more cells of the same type in a row. This assumes that all pieces are allowed
to be moved; to add extra logic, incorporate it into your IsMoveValid(Move) method.
Declaration
public bool SimpleIsMoveValid(Move move)
Parameters
Type |
Name |
Description |
Move |
move |
|
Returns
ValidMoves()
Iterate through all valid moves on the board.
Declaration
public IEnumerable<Move> ValidMoves()
Returns
Type |
Description |
IEnumerable<Move> |
|