summaryrefslogtreecommitdiff
path: root/lib/board.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/board.c')
-rw-r--r--lib/board.c42
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);
nihil fit ex nihilo