diff --git a/assignment1-18/assignment1.pdf b/assignment1-18/assignment1.pdf new file mode 100644 index 0000000..08ea696 Binary files /dev/null and b/assignment1-18/assignment1.pdf differ diff --git a/assignment1-18/chessboard.h b/assignment1-18/chessboard.h new file mode 100644 index 0000000..f0e4674 --- /dev/null +++ b/assignment1-18/chessboard.h @@ -0,0 +1,62 @@ +#ifndef CHESSBOARD_H_INCLUDED +#define CHESSBOARD_H_INCLUDED + +/* players + */ +enum player {WHITE, BLACK}; + +/* status return by move() + */ +enum mstatus {INVALID, VALID, CHECK, CHECK_MATE}; + +enum pieces { + EMPTY=0, + WHITE_PAWN=1, WHITE_KNIGHT=2, WHITE_BISHOP=3, WHITE_ROOK=4, WHITE_QUEEN=5, WHITE_KING=6, + BLACK_PAWN=7, BLACK_KNIGHT=8, BLACK_BISHOP=9, BLACK_ROOK=10, BLACK_QUEEN=11, BLACK_KING=12 }; + +/* UTF8 representation of the pieces, should be used to print the board + */ +const static char* utf_8_pieces[13] = { + " ", "♙", "♘", "♗", "♖", "♕", "♔", "♟", "♞", "♝", "♜", "♛", "♚" }; + +/* chess board with values defined in enum pieces + */ +struct chessboard { + enum pieces position[8][8]; +}; + +/* set the initial position of the pieces on the board + */ +void init_chessboard(struct chessboard * cb); + +/* print the board like this: + + a b c d e f g h + ┌───┬───┬───┬───┬───┬───┬───┬───┐ +8 │ ♜ │ ♞ │ ♝ │ ♛ │ ♚ │ ♝ │ ♞ │ ♜ │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +7 │ ♟ │ ♟ │ ♟ │ ♟ │ ♟ │ ♟ │ ♟ │ ♟ │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +6 │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +5 │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +4 │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +3 │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +2 │ ♙ │ ♙ │ ♙ │ ♙ │ ♙ │ ♙ │ ♙ │ ♙ │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +1 │ ♖ │ ♘ │ ♗ │ ♕ │ ♔ │ ♗ │ ♘ │ ♖ │ + └───┴───┴───┴───┴───┴───┴───┴───┘ + a b c d e f g h + + */ +void print_chessboard(struct chessboard * cb); + +/* apply the move informed by player p, from/to positions and returns + * the corresponding status + */ +enum mstatus move(struct chessboard * cb, enum player p, const char * from, const char * to); + +#endif