diff options
Diffstat (limited to 'lib/board.c')
-rw-r--r-- | lib/board.c | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/lib/board.c b/lib/board.c index 3eb7603..6685b3b 100644 --- a/lib/board.c +++ b/lib/board.c @@ -2,9 +2,10 @@ #include <stdio.h> #include "board.h" +#include "piece.h" Board _setup_colors(Board b) { - int i, j; + short i, j; for (i = 0; i < SIZE; i++) for (j = 0; j < SIZE; j++) @@ -23,26 +24,55 @@ Board _setup_colors(Board b) { } Board _pawns(Board b) { + short white_pawns_row = 1, black_pawns_row = 6, i; + + for (i = 0; i < SIZE; i++) + b[white_pawns_row][i].piece = new_piece(WHITE, PAWN); + + for (i = 0; i < SIZE; i++) + b[black_pawns_row][i].piece = new_piece(BLACK, PAWN); + return b; } Board _rocks(Board b) { + b[0][0].piece = new_piece(WHITE, ROCK); + b[0][7].piece = new_piece(WHITE, ROCK); + b[7][0].piece = new_piece(BLACK, ROCK); + b[7][7].piece = new_piece(BLACK, ROCK); + return b; } Board _knights(Board b) { + b[0][1].piece = new_piece(WHITE, KNIGHT); + b[0][6].piece = new_piece(WHITE, KNIGHT); + b[7][1].piece = new_piece(BLACK, KNIGHT); + b[7][6].piece = new_piece(BLACK, KNIGHT); + return b; } Board _bishops(Board b) { + b[0][2].piece = new_piece(WHITE, BISHOP); + b[0][5].piece = new_piece(WHITE, BISHOP); + b[7][2].piece = new_piece(BLACK, BISHOP); + b[7][5].piece = new_piece(BLACK, BISHOP); + return b; } Board _queens(Board b) { + b[0][4].piece = new_piece(WHITE, QUEEN); + b[7][4].piece = new_piece(BLACK, QUEEN); + return b; } Board _kings(Board b) { + b[0][3].piece = new_piece(WHITE, KING); + b[7][3].piece = new_piece(BLACK, KING); + return b; } @@ -68,11 +98,15 @@ Board board_init() { return _initial_setup(b); } -int board_delete(Board* b) { - int i; +int board_delete(Board b) { + short i, j; - for (i = 0; i < SIZE; i++) + for (i = 0; i < SIZE; i++) { + for (j = 0; j < SIZE; j++) + if (b[i][j].piece != NULL) + free(b[i][j].piece); free(b[i]); + } free(b); |