71 return (castle_edges.min_rank <=
rank) && (
rank <= castle_edges.max_rank) &&
72 (castle_edges.min_file <=
file) && (
file <= castle_edges.max_file);
112 for (
auto rank = 0; rank <
kNumRanks; rank++) {
113 for (
auto file = 0; file <
kNumFiles; file++) {
114 game_piece_board[rank][file] =
GamePiece(int_board[rank][file]);
117 return game_piece_board;
125 return board_map[space.
rank][space.
file].piece_color;
129 return board_map[space.
rank][space.
file].piece_type;
142 auto piece = board_map[board_space.rank][board_space.file];
144 found_space = board_space;
154 vector<BoardSpace> occupied_spaces;
155 occupied_spaces.reserve(16);
156 for (
auto rank = 0; rank <
kNumRanks; rank++) {
157 for (
auto file = 0; file <
kNumFiles; file++) {
159 occupied_spaces.emplace_back(
BoardSpace{rank, file});
163 return occupied_spaces;
Defines GamePiece and supporting constants and free functions.
Tracking piece positions and determining legal moves.
BoardSpace get_general_position(const BoardMap_t &board_map, const PieceColor color)
array< array< int, kNumFiles >, kNumRanks > BoardMapInt_t
2-D array of integers; can be converted to gameboard::BoardMap_t using gameboard::int_board_to_game_p...
array< BoardSpace, 9 > Castle_t
constexpr Castle_t black_castle_spaces()
constexpr Castle_t red_castle_spaces()
const BoardIndexType kNumFiles
bool is_occupied(const BoardMap_t &board_map, const BoardSpace &space)
constexpr Castle_t calc_castle_spaces(const CastleEdges &edges)
const BoardIndexType kNumRanks
vector< BoardSpace > get_all_spaces_occupied_by(const BoardMap_t &board_map, const PieceColor color)
PieceColor opponent_of(PieceColor color)
BoardMap_t int_board_to_game_pieces(const BoardMapInt_t int_board)
array< array< GamePiece, kNumFiles >, kNumRanks > BoardMap_t
2-D array of gameboard::GamePiece objects.
PieceColor get_color(const BoardMap_t &board_map, const BoardSpace &space)
const BoardIndexType kRedRiverEdge
constexpr CastleEdges kBlackCastleEdges
const BoardIndexType kBlackRiverEdge
PieceType get_type(const BoardMap_t &board_map, const BoardSpace &space)
constexpr CastleEdges kRedCastleEdges
Descirbes a direction on a gameboard::GameBoard.board_map_.
A pair of coordinate (rank, and file) with properties determined by comparison with values of gameboa...
bool IsInCastleOf(const PieceColor color) const
bool operator==(const BoardSpace other) const
bool IsInHomelandOf(const PieceColor color) const
bool operator!=(const BoardSpace other) const
BoardSpace operator+(const BoardDirection direction) const
Defines a castle feature in terms of its min / max rank and file.
A Xiangqi game piece described by its gameboard::PieceType and its gameboard::PieceColor.