Class AbstractBoard
An adapter between ML Agents and a Match-3 game.
Inherited Members
Namespace: Unity.MLAgents.Integrations.Match3
Assembly: Unity.ML-Agents.dll
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
Type | Description |
---|---|
Action |
Methods
AllMoves()
Iterate through all moves on the board.
Declaration
public IEnumerable<Move> AllMoves()
Returns
Type | Description |
---|---|
IEnumerable<Move> | The |
GetCellType(int, int)
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
Type | Description |
---|---|
int | Color of piece at given row and column. |
GetCurrentBoardSize()
Return the current size of the board. The values must less than or equal to the values returned from
Get
Declaration
public virtual BoardSize GetCurrentBoardSize()
Returns
Type | Description |
---|---|
Board |
The current size of the board. |
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
Type | Description |
---|---|
Board |
The maxium size of the board. |
GetSpecialType(int, int)
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
Type | Description |
---|---|
int | The special type of the piece at the give row and column. |
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 Simple
Declaration
public abstract bool IsMoveValid(Move m)
Parameters
Type | Name | Description |
---|---|---|
Move | m | The move to check. |
Returns
Type | Description |
---|---|
bool | True if the move is valid False otherwise. |
Remarks
Moves that would go outside of Get
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
Type | Description |
---|---|
bool | True if the move was made, False otherwise. |
NumMoves()
Return the total number of moves possible for the board.
Declaration
public int NumMoves()
Returns
Type | Description |
---|---|
int | The total number of moves possible for the board. |
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 Is
Declaration
public bool SimpleIsMoveValid(Move move)
Parameters
Type | Name | Description |
---|---|---|
Move | move | The |
Returns
Type | Description |
---|---|
bool | True if swapping the cells would result in 3 or more cells of the same type in a row. |
ValidMoves()
Iterate through all valid moves on the board.
Declaration
public IEnumerable<Move> ValidMoves()
Returns
Type | Description |
---|---|
IEnumerable<Move> | The |