commit d69d3ff1075f952ebdd45af40e7580bb3003721f
parent a0e61726e8e522f6731e6eb27e18856f4fde61fb
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Wed, 20 Dec 2023 20:19:55 +0100
remove the ability to castle when the king or rook moves
Diffstat:
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/fen_to_svg.c b/fen_to_svg.c
@@ -559,8 +559,6 @@ main(int argc, char *argv[])
y2 = 7;
place(0, x2, y2);
}
- /* remove the ability to castle */
- white_can_castle[0] = white_can_castle[1] = 0;
} else if (piece == 'k' && y == 0 && y2 == 0 && x == 4) {
/* black: kingside castling: "e8g8" */
if (x2 == 6) {
@@ -575,8 +573,23 @@ main(int argc, char *argv[])
y2 = 0;
place(0, x2, y2); /* clear rook square */
}
- /* remove the ability to castle */
+ }
+
+ /* remove the ability to castle */
+ if (piece == 'K') {
+ white_can_castle[0] = white_can_castle[1] = 0;
+ } else if (piece == 'k') {
black_can_castle[0] = black_can_castle[1] = 0;
+ } else if (piece == 'R') {
+ if (x == 7 && y == 7)
+ white_can_castle[0] = 0;
+ else if (x == 0 && y == 7)
+ white_can_castle[1] = 0;
+ } else if (piece == 'r') {
+ if (x == 0 && y == 0)
+ black_can_castle[1] = 0;
+ else if (x == 7 && y == 0)
+ black_can_castle[0] = 0;
}
/* possible promotion: queen, knight, bishop */