diff options
Diffstat (limited to 'include/chess_ai.hpp')
-rw-r--r-- | include/chess_ai.hpp | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/include/chess_ai.hpp b/include/chess_ai.hpp index a62ddf4..380d406 100644 --- a/include/chess_ai.hpp +++ b/include/chess_ai.hpp @@ -19,7 +19,7 @@ namespace chess_ai { enum board_state : unsigned; // defines the errors that can happen when moving a piece - enum movement_flag : unsigned; + enum move_error : unsigned; // The chess board that will be played on class chess_board; @@ -28,8 +28,10 @@ namespace chess_ai { class chess_piece; // typedefs for iterators to access elements easier + typedef std::vector<std::vector<chess_ai::chess_piece>>:: -iterator vector_iterator; + iterator vector_iterator; + typedef std::vector<chess_ai::chess_piece>::iterator square_iterator; enum piece_type : unsigned { @@ -84,7 +86,7 @@ iterator vector_iterator; clear }; - enum movement_flag : unsigned { + enum move_error : unsigned { // when king is in check there are limited possibilities move_error_KingInCheckAfterMove, // when there is a friendly piece in the way @@ -125,13 +127,21 @@ iterator vector_iterator; void remove_piece(unsigned x, unsigned y); // move a piece according to the chess rules - movement_flag move_piece(chess_piece piece); - movement_flag move_piece(unsigned x, unsigned y); - movement_flag move_piece(unsigned orig_x, unsigned orig_y, unsigned dest_x, - unsigned dest_y); - movement_flag move_piece(unsigned orig_x, unsigned orig_y, unsigned dest_x, - unsigned dest_y, chess_piece& taken_piece); - movement_flag move_piece(chess_piece piece, unsigned x, unsigned y); + move_error move_piece(chess_piece piece); + + // move piece using only x and y (for pawns) + move_error move_piece(unsigned x, unsigned y); + + // move piece with x and y as original and final destination + move_error move_piece(unsigned orig_x, unsigned orig_y, + unsigned dest_x, unsigned dest_y); + + // move piece and return a piece that has been captured + move_error move_piece(unsigned orig_x, unsigned orig_y, + unsigned dest_x, unsigned dest_y, + chess_piece& taken_piece); + + move_error move_piece(chess_piece piece, unsigned x, unsigned y); // iterate through the list and return the pointer to change square_iterator& iterate_board(square_iterator& it, unsigned x, @@ -144,7 +154,7 @@ iterator vector_iterator; void init_board_vector(); // moves the pawn - movement_flag move_pawn(square_iterator it, square_iterator new_it, + move_error move_pawn(square_iterator it, square_iterator new_it, chess_piece& taken_piece); // The size of the chess board is a constant and hence defined by a |