Xiangiqgame
AI engine for Xiangqi
Loading...
Searching...
No Matches
piece_moves.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
8
9using namespace gameboard;
10
11namespace gameboard {
12
13extern const array<BoardDirection, 2> kSideDirections;
14extern const vector<pair<BoardDirection, vector<BoardDirection>>> kHorsePaths;
15extern const vector<BoardDirection> kAllOrthogonalDirections;
16extern const vector<BoardDirection> kAllDiagonalDirections;
17
20public:
21 void SoldierMoves(
22 const BoardMap_t &board_map,
23 PieceColor color,
24 const BoardSpace &space,
25 MoveCollection &team_moves
26 );
27 void CannonMoves(
28 const BoardMap_t &board_map,
29 PieceColor color,
30 const BoardSpace &space,
31 MoveCollection &team_moves
32 );
33 void ChariotMoves(
34 const BoardMap_t &board_map,
35 PieceColor color,
36 const BoardSpace &space,
37 MoveCollection &team_moves
38 );
39 void HorseMoves(
40 const BoardMap_t &board_map,
41 PieceColor color,
42 const BoardSpace &space,
43 MoveCollection &team_moves
44 );
45 void ElephantMoves(
46 const BoardMap_t &board_map,
47 PieceColor color,
48 const BoardSpace &space,
49 MoveCollection &team_moves
50 );
51 void AdvisorMoves(
52 const BoardMap_t &board_map,
53 PieceColor color,
54 const BoardSpace &space,
55 MoveCollection &team_moves
56 );
58 const BoardMap_t &board_map,
59 PieceColor color,
60 const BoardSpace &space,
61 MoveCollection &team_moves
62 );
64 const BoardMap_t &board_map,
65 PieceColor color,
66 const BoardSpace &space,
67 MoveCollection &team_moves
68 );
69 void GeneralMoves(
70 const BoardMap_t &board_map,
71 PieceColor color,
72 const BoardSpace &space,
73 MoveCollection &team_moves
74 );
75
76private:
77 static inline BoardDirection FwdDirection(PieceColor color) {
78 return BoardDirection{static_cast<int>(color), 0};
79 }
80
81 static inline bool ExistsAndPassesColorTest(
82 const BoardMap_t &board_map,
83 const BoardSpace &space,
84 PieceColor moving_piece_color
85 ) {
86 return space.IsOnBoard() &&
87 get_color(board_map, space) != static_cast<PieceColor>(moving_piece_color);
88 }
89};
90} // namespace gameboard
Constants, typedefs, and simple structs used by gameboard::GameBoard.
Implements piece type dependent move rules; used by gameboard::MoveCalculator.
Definition: piece_moves.hpp:19
void ElephantMoves(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
static bool ExistsAndPassesColorTest(const BoardMap_t &board_map, const BoardSpace &space, PieceColor moving_piece_color)
Definition: piece_moves.hpp:81
void SoldierMoves(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
Definition: piece_moves.cpp:34
void StandardGeneralMoves(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
static BoardDirection FwdDirection(PieceColor color)
Definition: piece_moves.hpp:77
void FlyingGeneralMove(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
void HorseMoves(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
void AdvisorMoves(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
void GeneralMoves(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
void ChariotMoves(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
Definition: piece_moves.cpp:83
void CannonMoves(const BoardMap_t &board_map, PieceColor color, const BoardSpace &space, MoveCollection &team_moves)
Definition: piece_moves.cpp:57
Definitions and implementations of gameboard::Move and other move-related structs.
Tracking piece positions and determining legal moves.
const vector< pair< BoardDirection, vector< BoardDirection > > > kHorsePaths
Definition: piece_moves.cpp:13
const vector< BoardDirection > kAllOrthogonalDirections
Definition: piece_moves.cpp:20
const array< BoardDirection, 2 > kSideDirections
Definition: piece_moves.cpp:8
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 vector< BoardDirection > kAllDiagonalDirections
Definition: piece_moves.cpp:27
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...
A container for multiple gameboard::Move objects.