diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/board.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/lib/board.c b/lib/board.c index a4a6c49..e62deca 100644 --- a/lib/board.c +++ b/lib/board.c @@ -5,6 +5,7 @@ #include "coordinate.h" #include "move.h" #include "piece.h" +#include "square.h" static Board _setup_colors(Board b) { short i, j; @@ -13,21 +14,20 @@ static Board _setup_colors(Board b) { for (j = 0; j < SIZE; j++) if (i % 2) if (j % 2) - b[i][j].color = BLACK; + b[i][j] = square_set_color(b[i][j], BLACK); else - b[i][j].color = WHITE; + b[i][j] = square_set_color(b[i][j], WHITE); else if (j % 2) - b[i][j].color = WHITE; + b[i][j] = square_set_color(b[i][j], WHITE); else - b[i][j].color = BLACK; + b[i][j] = square_set_color(b[i][j], BLACK); return b; } static Board _set_new_piece(Board b, Coord c, Color color, PieceType t) { - Square s = board_get_square(b, c); - s.piece = piece_new(color, t); + Square s = square_set_piece(board_get_square(b, c), piece_new(color, t)); return board_set_square(b, c, s); } @@ -113,7 +113,7 @@ Board board_init() { for (i = 0; i < SIZE; i++) { b[i] = malloc(sizeof(Square) * SIZE); for (j = 0; j < SIZE; j++) - b[i][j].piece = NULL; + b[i][j] = square_set_piece(b[i][j], NULL); } return _initial_setup(b); @@ -124,8 +124,9 @@ int board_delete(Board b) { for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) - if (b[i][j].piece != NULL) - free(b[i][j].piece); + if (square_get_piece(b[i][j]) != NULL) + free(square_get_piece(b[i][j])); + free(b[i]); } @@ -153,15 +154,15 @@ Board board_set_square(Board b, Coord c, Square s) { Board board_make_move(Board b, Move m) { /* Get piece from orig square coordinate */ Square s = board_get_square(b, move_get_orig(m)); - Piece *p = s.piece; + Piece *p = square_get_piece(s); /* Empty orig square */ - s.piece = NULL; + s = square_set_piece(s, NULL); board_set_square(b, move_get_orig(m), s); /* Set piece on dest square */ s = board_get_square(b, move_get_dest(m)); - s.piece = p; + s = square_set_piece(s, p); board_set_square(b, move_get_dest(m), s); return b; |