fen_to_*.c: handle possible piece promotion for moves - chess-puzzles - chess puzzle book generator
HTML git clone git://git.codemadness.org/chess-puzzles
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 098952703cf713b7569ae0cb826a08a239e3b46a
DIR parent b8fe22e0b3297f81eca81b3c5ad8f2fd7e918c38
HTML Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Mon, 18 Dec 2023 22:15:46 +0100
fen_to_*.c: handle possible piece promotion for moves
Diffstat:
M fen_to_ascii.c | 14 ++++++++++++++
M fen_to_svg.c | 14 ++++++++++++++
M fen_to_tty.c | 13 +++++++++++++
3 files changed, 41 insertions(+), 0 deletions(-)
---
DIR diff --git a/fen_to_ascii.c b/fen_to_ascii.c
@@ -1,5 +1,6 @@
/* TODO: option to flip board? */
+#include <ctype.h>
#include <stdio.h>
#include <string.h>
@@ -265,6 +266,19 @@ main(int argc, char *argv[])
squaretoxy(square, &x2, &y2);
place(piece, x2, y2);
s += 2;
+
+ /* possible promotion? (queen, knight, bishop) */
+ if (*s == 'q' || *s == 'n' || *s == 'b') {
+ if (side_to_move == 'w')
+ piece = toupper(*s);
+ else
+ piece = *s;
+ place(piece, x2, y2);
+ s++;
+ }
+
+ /* switch which side it is to move */
+ side_to_move = side_to_move == 'b' ? 'w' : 'b';
}
}
/* highlight last move */
DIR diff --git a/fen_to_svg.c b/fen_to_svg.c
@@ -1,5 +1,6 @@
/* TODO: option to flip board? */
+#include <ctype.h>
#include <stdio.h>
#include <string.h>
@@ -276,6 +277,19 @@ main(int argc, char *argv[])
squaretoxy(square, &x2, &y2);
place(piece, x2, y2);
s += 2;
+
+ /* possible promotion? (queen, knight, bishop) */
+ if (*s == 'q' || *s == 'n' || *s == 'b') {
+ if (side_to_move == 'w')
+ piece = toupper(*s);
+ else
+ piece = *s;
+ place(piece, x2, y2);
+ s++;
+ }
+
+ /* switch which side it is to move */
+ side_to_move = side_to_move == 'b' ? 'w' : 'b';
}
}
/* highlight last move */
DIR diff --git a/fen_to_tty.c b/fen_to_tty.c
@@ -320,6 +320,19 @@ main(int argc, char *argv[])
squaretoxy(square, &x2, &y2);
place(piece, x2, y2);
s += 2;
+
+ /* possible promotion? (queen, knight, bishop) */
+ if (*s == 'q' || *s == 'n' || *s == 'b') {
+ if (side_to_move == 'w')
+ piece = toupper(*s);
+ else
+ piece = *s;
+ place(piece, x2, y2);
+ s++;
+ }
+
+ /* switch which side it is to move */
+ side_to_move = side_to_move == 'b' ? 'w' : 'b';
}
}
/* highlight last move */