Introduction
Introduction Statistics Contact Development Disclaimer Help
small code-cleanup and add some comments - chess-puzzles - chess puzzle book ge…
git clone git://git.codemadness.org/chess-puzzles
Log
Files
Refs
README
LICENSE
---
commit df3a95f12df8a701ed0ad5997be6ad5c3f840bda
parent da65c61271ad6e8eb3fde5a8e828ed4d2c882fb2
Author: Hiltjo Posthuma <[email protected]>
Date: Mon, 8 Jan 2024 21:50:26 +0100
small code-cleanup and add some comments
Diffstat:
M fen.c | 53 +++++++++++++++++------------…
1 file changed, 30 insertions(+), 23 deletions(-)
---
diff --git a/fen.c b/fen.c
@@ -15,19 +15,20 @@
#define SETFGCOLOR(r,g,b) printf("\x1b[38;2;%d;%d;%dm", r, g, b)
#define SETBGCOLOR(r,g,b) printf("\x1b[48;2;%d;%d;%dm", r, g, b)
-enum outputmode { ModeInvalid = 0, ModeASCII, ModeCGI, ModeFEN, ModePGN, ModeT…
-enum outputmode outputmode = ModeSVG;
+enum outputmode { ModeInvalid = 0, ModeASCII, ModeCGI, ModeFEN, ModePGN,
+ ModeTTY, ModeSVG, ModeSpeak };
+enum outputmode outputmode = ModeSVG; /* default is SVG */
static int onlylastmove = 0, silent = 0, dutchmode = 0;
/* localization of letter for PGN pieces */
const char *pgn_piecemapping = "";
-typedef unsigned char Color;
+typedef unsigned char Color; /* for RGB: 0-255 */
struct theme {
const char *name;
- /* RGB */
+ /* RGB values */
Color border[3];
Color darksquare[3];
Color lightsquare[3];
@@ -60,7 +61,7 @@ struct theme themes[] = {
.lightsquarecheck = { 0xff, 0x6a, 0x6a },
.darksquarecheck = { 0xff, 0x3a, 0x3a }
},
-/* greyscale theme, highlight is still green */
+/* greyscale theme, highlight is still green though */
{
.name = "grey",
.border = { 0x00, 0x00, 0x00 },
@@ -88,9 +89,7 @@ struct board {
int flipboard; /* flip board ? default: 0 */
int showcoords; /* board coordinates? default: 1 */
-
- /* board theme */
- struct theme *theme;
+ struct theme *theme; /* board theme */
};
/* set theme by name */
@@ -108,11 +107,12 @@ board_set_theme(struct board *b, const char *name)
return NULL;
}
+/* initialize board and set sane defaults */
void
board_init(struct board *b)
{
memset(b, 0, sizeof(*b)); /* zero fields by default */
- b->side_to_move = 'w';
+ b->side_to_move = 'w'; /* white */
b->enpassantsquare[0] = -1; /* no en passant */
b->enpassantsquare[1] = -1;
b->movenumber = 1;
@@ -121,6 +121,7 @@ board_init(struct board *b)
b->theme = &themes[0]; /* use first theme as default */
}
+/* copy entire board and its state */
void
board_copy(struct board *bd, struct board *bs)
{
@@ -191,6 +192,7 @@ squaretoxy(const char *s, int *x, int *y)
return 0;
}
+/* write formatted string, only if output mode is ModePGN */
void
pgn(const char *fmt, ...)
{
@@ -204,6 +206,20 @@ pgn(const char *fmt, ...)
va_end(ap);
}
+/* write formatted string, only if output mode is ModeSpeak */
+void
+speak(const char *fmt, ...)
+{
+ va_list ap;
+
+ if (outputmode != ModeSpeak || silent)
+ return;
+
+ va_start(ap, fmt);
+ vprintf(fmt, ap);
+ va_end(ap);
+}
+
/* remap letter for PGN pieces, default: "KQRBN"
Dutch: (K)oning, (D)ame, (T)oren, (L)oper, (P)aard: "KDTLP" */
int
@@ -227,19 +243,6 @@ pgnpiece(int piece)
}
void
-speak(const char *fmt, ...)
-{
- va_list ap;
-
- if (outputmode != ModeSpeak || silent)
- return;
-
- va_start(ap, fmt);
- vprintf(fmt, ap);
- va_end(ap);
-}
-
-void
speakpiece(int piece)
{
switch (piece) {
@@ -764,6 +767,8 @@ isincheck(struct board *b, int side)
return 0;
}
+/* copy the board state and try the piece move, see if the piece wouldn't put
+ the ourself in check */
int
trypiecemove(struct board *b, int side, int piece,
int x1, int y1, int x2, int y2, int px, int py)
@@ -1406,7 +1411,9 @@ board_playmoves(struct board *b, const char *moves)
void
usage(char *argv0)
{
- fprintf(stderr, "usage: %s [-cCfF] [-l] [-m mapping] [-o ascii|fen|pgn…
+ fprintf(stderr, "usage: %s [-cCfF] [-l] [-m mapping] "
+ "[-o ascii|fen|pgn|speak|svg|tty] [-t default|green|grey] "
+ "[FEN] [moves]\n", argv0);
exit(1);
}
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.