diff options
author | zedarider <ymherklotz@gmail.com> | 2016-11-09 15:29:24 +0000 |
---|---|---|
committer | zedarider <ymherklotz@gmail.com> | 2016-11-09 15:29:24 +0000 |
commit | 375e4b989af8b4ac2c3479ea32f9324f29ce9071 (patch) | |
tree | 79c0e49d9b7201ef43b28695c11b8d8d97cccd05 | |
parent | 946993f12456d0ec6dc97534b57393565404ad79 (diff) | |
download | ChessAI-375e4b989af8b4ac2c3479ea32f9324f29ce9071.tar.gz ChessAI-375e4b989af8b4ac2c3479ea32f9324f29ce9071.zip |
changed the code formatting for easier viewing
-rw-r--r-- | include/chess_ai.hpp | 32 | ||||
-rw-r--r-- | src/chess_board.cpp | 35 | ||||
-rw-r--r-- | src/chess_piece.cpp | 10 |
3 files changed, 45 insertions, 32 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 diff --git a/src/chess_board.cpp b/src/chess_board.cpp index ac3e1ae..4891981 100644 --- a/src/chess_board.cpp +++ b/src/chess_board.cpp @@ -4,7 +4,7 @@ chess_ai::chess_board::chess_board() : SIZE(CHESS_BOARD_SIZE) { init_board_vector(); } -chess_ai::chess_board::chess_board(board_state state) : SIZE(CHESS_BOARD_SIZE){ +chess_ai::chess_board::chess_board(board_state state) : SIZE(CHESS_BOARD_SIZE) { unsigned vec_index, sqr_index; init_board_vector(); @@ -119,12 +119,11 @@ void chess_ai::chess_board::remove_piece(unsigned x, unsigned y) { *iterate_board(it_sqr, x, y) = chess_piece(); } -chess_ai::movement_flag chess_ai::chess_board::move_piece(chess_piece piece) { +chess_ai::move_error chess_ai::chess_board::move_piece(chess_piece piece) { return move_piece(piece.x, piece.y); } -chess_ai::movement_flag chess_ai::chess_board::move_piece(unsigned x, - unsigned y) { +chess_ai::move_error chess_ai::chess_board::move_piece(unsigned x, unsigned y) { square_iterator it; iterate_board(it, x, y); @@ -136,19 +135,23 @@ chess_ai::movement_flag chess_ai::chess_board::move_piece(unsigned x, return move_error_IllegalMove; } -chess_ai::movement_flag chess_ai::chess_board::move_piece( - chess_ai::chess_piece piece, unsigned x, unsigned y) { +chess_ai::move_error chess_ai::chess_board::move_piece +(chess_ai::chess_piece piece, unsigned x, unsigned y) { + return move_piece(piece.x, piece.y, x, y); } -chess_ai::movement_flag chess_ai::chess_board::move_piece(unsigned orig_x, - unsigned orig_y, unsigned dest_x, unsigned dest_y) { +chess_ai::move_error chess_ai::chess_board::move_piece +(unsigned orig_x, unsigned orig_y, unsigned dest_x, unsigned dest_y) { + chess_piece taken; return move_piece(orig_x, orig_y, dest_x, dest_y, taken); } -chess_ai::movement_flag chess_ai::chess_board::move_piece(unsigned orig_x, - unsigned orig_y, unsigned dest_x, - unsigned dest_y, chess_piece& taken_piece) { + +chess_ai::move_error chess_ai::chess_board::move_piece +(unsigned orig_x, unsigned orig_y, unsigned dest_x, unsigned dest_y, + chess_piece& taken_piece) { + square_iterator it; square_iterator new_it; @@ -169,8 +172,9 @@ chess_ai::movement_flag chess_ai::chess_board::move_piece(unsigned orig_x, } } -chess_ai::square_iterator& chess_ai::chess_board::iterate_board( - square_iterator& it, unsigned x, unsigned y) { +chess_ai::square_iterator& chess_ai::chess_board::iterate_board +(square_iterator& it, unsigned x, unsigned y) { + unsigned vec_index, sqr_index; for(vector_iterator it_vec = grid.begin(); it_vec != grid.end(); ++it_vec) { for(square_iterator it_sqr = (*it_vec).begin(); @@ -187,8 +191,9 @@ chess_ai::square_iterator& chess_ai::chess_board::iterate_board( return it; } -chess_ai::movement_flag chess_ai::chess_board::move_pawn(square_iterator it, - square_iterator new_it, chess_piece& taken_piece) { +chess_ai::move_error chess_ai::chess_board::move_pawn +(square_iterator it, square_iterator new_it, chess_piece& taken_piece) { + chess_piece piece(it->type, it->colour, new_it->x, new_it->y); if((new_it->y - it->y == 2 && it->y == 1) || diff --git a/src/chess_piece.cpp b/src/chess_piece.cpp index 6eb07e7..e81b9b7 100644 --- a/src/chess_piece.cpp +++ b/src/chess_piece.cpp @@ -2,6 +2,7 @@ chess_ai::chess_piece::chess_piece(piece_type type, piece_colour colour) : type(type), colour(colour) { + if(colour == black) { y = 0; } else { @@ -15,12 +16,9 @@ chess_ai::chess_piece::chess_piece(piece_type type, piece_colour colour) : } } -chess_ai::chess_piece::chess_piece( - piece_type type, - piece_colour colour, - unsigned x, - unsigned y - ) : type(type), colour(colour), x(x), y(y) {} +chess_ai::chess_piece::chess_piece(piece_type type, piece_colour colour, + unsigned x, unsigned y) : + type(type), colour(colour), x(x), y(y) {} void chess_ai::chess_piece::set_type(piece_type type) { this->type = type; |