14template <
typename ConcreteSpaceInfoProv
ider>
18 return static_cast<ConcreteSpaceInfoProvider *
>(
this)
19 ->ImplementGetAllSpacesOccupiedBy(color);
23 return static_cast<ConcreteSpaceInfoProvider *
>(
this)->ImplementGetColor(space);
27 return static_cast<ConcreteSpaceInfoProvider *
>(
this)->ImplementGetType(space);
31 return static_cast<ConcreteSpaceInfoProvider *
>(
this)->ImplementCalcFinalMovesOf(
37 return static_cast<ConcreteSpaceInfoProvider *
>(
this)->ImplementExecuteMove(move);
41 static_cast<ConcreteSpaceInfoProvider *
>(
this)->ImplementUndoMove(executed_move);
45 static_cast<ConcreteSpaceInfoProvider *
>(
this)->ImplementAttachMoveCallback(callback
50 return static_cast<ConcreteSpaceInfoProvider *
>(
this)->ImplementIsDraw();
Constants, typedefs, and simple structs used by gameboard::GameBoard.
CRTP interface with methods for obtaining information about gameboard::BoardSpace objects,...
void AttachMoveCallback(function< void(const ExecutedMove &)> callback)
void UndoMove(const ExecutedMove &executed_move)
ExecutedMove ExecuteMove(const Move &move)
vector< BoardSpace > GetAllSpacesOccupiedBy(PieceColor color)
PieceType GetType(const BoardSpace &space)
MoveCollection CalcFinalMovesOf(PieceColor color)
PieceColor GetColor(const BoardSpace &space)
Tracking piece positions and determining legal moves.
A pair of coordinate (rank, and file) with properties determined by comparison with values of gameboa...
A change in the state of a gameboard::GameBoard represented by a gameboard::Move, and each of the gam...
A container for multiple gameboard::Move objects.
A gameboard::BoardSpace pair (start and end).