summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/board.h3
-rw-r--r--lib/board.c26
2 files changed, 29 insertions, 0 deletions
diff --git a/include/board.h b/include/board.h
index 0cfdb70..5fd714a 100644
--- a/include/board.h
+++ b/include/board.h
@@ -6,4 +6,7 @@
Board board_init();
int board_delete(Board);
+Square board_get_square(Board, Coord);
+Board board_set_square(Board, Coord, Square);
+
#endif
diff --git a/lib/board.c b/lib/board.c
index 134cfa8..c4a4f2d 100644
--- a/lib/board.c
+++ b/lib/board.c
@@ -84,6 +84,16 @@ static Board _initial_setup(Board b) {
return _setup_pieces(_setup_colors(b));
}
+static short _from_col(char col) {
+ // col is a character between 'a' and 'h'
+ return col - 'a';
+}
+
+static short _from_row(char row) {
+ // row is an ASCII digit between '1' and '8'
+ return row - '1';
+}
+
Board board_init() {
int i, j;
@@ -112,3 +122,19 @@ int board_delete(Board b) {
return 0;
}
+
+Square board_get_square(Board b, Coord c) {
+ short x = _from_col(c.col);
+ short y = _from_row(c.row);
+
+ return b[x][y];
+}
+
+Board board_set_square(Board b, Coord c, Square s) {
+ short x = _from_col(c.col);
+ short y = _from_row(c.row);
+
+ b[x][y] = s;
+
+ return b;
+}
nihil fit ex nihilo