From ecd86e1a263a543e395d9e145294103c0fbb7230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Benencia?= Date: Fri, 27 Mar 2015 12:54:30 -0300 Subject: setup pieces --- lib/board.c | 42 ++++++++++++++++++++++++++++++++++++++---- lib/piece.c | 9 +++++++++ 2 files changed, 47 insertions(+), 4 deletions(-) (limited to 'lib') 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 #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); diff --git a/lib/piece.c b/lib/piece.c index bbe0bdc..091d0a5 100644 --- a/lib/piece.c +++ b/lib/piece.c @@ -1,4 +1,6 @@ #include +#include + #include "piece.h" #ifdef UTF8 @@ -51,3 +53,10 @@ int piece_character(Piece p) { } #endif + +Piece* new_piece(Color c, PieceType t) { + Piece* p = malloc(sizeof(Piece)); + p->color = c; p->type = t; + + return p; +} -- cgit v1.2.3