From ad459c3b8591c1fdb0f8009bbfd70e43058ca3da Mon Sep 17 00:00:00 2001 From: "Claudio Maggioni (maggicl)" Date: Tue, 20 Aug 2019 22:28:33 +0200 Subject: [PATCH] Cleaned chess binary and added comments --- assignment1-18/chess | Bin 21976 -> 0 bytes assignment1-18/chessboard.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) delete mode 100755 assignment1-18/chess diff --git a/assignment1-18/chess b/assignment1-18/chess deleted file mode 100755 index 042241cbb3bb3ce0d00501d2f6772e0e0bad5661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21976 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 diff --git a/assignment1-18/chessboard.c b/assignment1-18/chessboard.c index ae8e258..3993239 100644 --- a/assignment1-18/chessboard.c +++ b/assignment1-18/chessboard.c @@ -298,6 +298,7 @@ bool player_checks(struct chessboard *cb, enum player p) { bool player_checkmates(struct chessboard *cb, enum player p) { int i, j; + // for every opponent's piece for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { if (is_empty(cb, i, j) || player(cb, i, j) == p) { @@ -305,6 +306,9 @@ bool player_checkmates(struct chessboard *cb, enum player p) { } int k, l; + // for every possible position not equal to the current position of + // that piece, which is empty or occupied by our pieces (implying + // capture) for (k = 0; k < 8; k++) { for (l = 0; l < 8; l++) { if ((k == i && l == j) || @@ -313,16 +317,20 @@ bool player_checkmates(struct chessboard *cb, enum player p) { continue; } + // check if the move is valid bool can = can_move(cb, p == BLACK ? WHITE : BLACK, i, j, k, l); + // if not, carry on if (!can) { continue; } + // if valid, perform the move and check for check. enum pieces tmp = cb_move(cb, i, j, k, l); bool check = player_checks(cb, p); cb_move_restore(cb, tmp, i, j, k, l); + // if check is no longer there, then this is not a checkmate if (!check) { return false; } @@ -331,6 +339,7 @@ bool player_checkmates(struct chessboard *cb, enum player p) { } } + // if no such move exists, then this is checkmate return true; } @@ -380,13 +389,15 @@ enum mstatus move( return INVALID; } + // check if we are currently in check state bool check_before = player_checks(cb, p == WHITE ? BLACK : WHITE); + // determine if move is valid bool can = can_move(cb, p, from_row, from_col, to_row, to_col); if (!can) { return INVALID; } else { - // FIXME: check if move is allowed in check state + // try to move, and revert if invalid due to check in progress enum pieces tmp = cb_move(cb, from_row, from_col, to_row, to_col); if (player_checks(cb, p == WHITE ? BLACK : WHITE) && check_before) { DEBUG("move: move does not end check state, invalid");