Xiangiqgame
AI engine for Xiangqi
Loading...
Searching...
No Matches
space_info_provider_interface.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
7#include <concepts>
8
9using namespace gameboard;
10
14template <typename ConcreteSpaceInfoProvider>
16public:
17 vector<BoardSpace> GetAllSpacesOccupiedBy(PieceColor color) {
18 return static_cast<ConcreteSpaceInfoProvider *>(this)
19 ->ImplementGetAllSpacesOccupiedBy(color);
20 }
21
23 return static_cast<ConcreteSpaceInfoProvider *>(this)->ImplementGetColor(space);
24 }
25
27 return static_cast<ConcreteSpaceInfoProvider *>(this)->ImplementGetType(space);
28 }
29
31 return static_cast<ConcreteSpaceInfoProvider *>(this)->ImplementCalcFinalMovesOf(
32 color
33 );
34 };
35
37 return static_cast<ConcreteSpaceInfoProvider *>(this)->ImplementExecuteMove(move);
38 }
39
40 void UndoMove(const ExecutedMove &executed_move) {
41 static_cast<ConcreteSpaceInfoProvider *>(this)->ImplementUndoMove(executed_move);
42 }
43
44 void AttachMoveCallback(function<void(const ExecutedMove &)> callback) {
45 static_cast<ConcreteSpaceInfoProvider *>(this)->ImplementAttachMoveCallback(callback
46 );
47 }
48
49 bool IsDraw() {
50 return static_cast<ConcreteSpaceInfoProvider *>(this)->ImplementIsDraw();
51 }
52};
53
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).