diff options
author | Markus Uhlin <markus@nifty-networks.net> | 2023-12-17 00:10:41 +0100 |
---|---|---|
committer | Markus Uhlin <markus@nifty-networks.net> | 2023-12-17 00:10:41 +0100 |
commit | bc7b23c6dae9a0ba89fc34df073039a95a93910b (patch) | |
tree | dbf72e681f0e5065fa95589293532e2904150d3e | |
parent | f6e5b57c70f73a2ecc6fba1a043ef3875ed08246 (diff) |
Reformatted boardToFEN() and added usage of SPACE_CHK()
-rw-r--r-- | FICS/eco.c | 194 |
1 files changed, 86 insertions, 108 deletions
@@ -11,6 +11,14 @@ #include "playerdb.h" #include "utils.h" +#define SPACE_CHK()\ + do {\ + if (space > 0) {\ + FENstring[FENcount++] = (space + '0');\ + space = 0;\ + }\ + } while (0) + PUBLIC char *book_dir = DEFAULT_BOOK; ECO_entry *ECO_book[1096]; @@ -19,115 +27,85 @@ LONG_entry *LONG_book[4096]; int ECO_entries, NIC_entries, LONG_entries; -char *boardToFEN(int g) +char * +boardToFEN(int g) { - int i,j; - static char FENstring[80]; - int FENcount = 0; - int space = 0; - - for(i=7; i>=0; i--) { - for(j=0; j<8; j++) { - switch(garray[g].game_state.board[j][i]) { - case W_PAWN: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='P'; - break; - case W_ROOK: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='R'; - break; - case W_KNIGHT: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='N'; - break; - case W_BISHOP: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='B'; - break; - case W_QUEEN: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='Q'; - break; - case W_KING: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='K'; - break; - case B_PAWN: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='p'; - break; - case B_ROOK: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='r'; - break; - case B_KNIGHT: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='n'; - break; - case B_BISHOP: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='b'; - break; - case B_QUEEN: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='q'; - break; - case B_KING: - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='k'; - break; - default: - space++; - break; - } - } - if (space>0) { - FENstring[FENcount++]=space+'0'; - space=0; - } - FENstring[FENcount++]='/'; - } - FENstring[--FENcount]=' '; - FENstring[++FENcount]=(garray[g].game_state.onMove==WHITE) ? 'w' : 'b'; - FENstring[++FENcount]='\0'; - return FENstring; + int FENcount = 0; + int space = 0; + static char FENstring[80]; + + for (int i = 7; i >= 0; i--) { + for (int j = 0; j < 8; j++) { + switch (garray[g].game_state.board[j][i]) { + case W_PAWN: + SPACE_CHK(); + FENstring[FENcount++] = 'P'; + break; + case W_ROOK: + SPACE_CHK(); + FENstring[FENcount++] = 'R'; + break; + case W_KNIGHT: + SPACE_CHK(); + FENstring[FENcount++] = 'N'; + break; + case W_BISHOP: + SPACE_CHK(); + FENstring[FENcount++] = 'B'; + break; + case W_QUEEN: + SPACE_CHK(); + FENstring[FENcount++] = 'Q'; + break; + case W_KING: + SPACE_CHK(); + FENstring[FENcount++] = 'K'; + break; + case B_PAWN: + SPACE_CHK(); + FENstring[FENcount++] = 'p'; + break; + case B_ROOK: + SPACE_CHK(); + FENstring[FENcount++] = 'r'; + break; + case B_KNIGHT: + SPACE_CHK(); + FENstring[FENcount++] = 'n'; + break; + case B_BISHOP: + SPACE_CHK(); + FENstring[FENcount++] = 'b'; + break; + case B_QUEEN: + SPACE_CHK(); + FENstring[FENcount++] = 'q'; + break; + case B_KING: + SPACE_CHK(); + FENstring[FENcount++] = 'k'; + break; + default: + space++; + break; + } /* switch */ + } /* for */ + + if (space > 0) { + FENstring[FENcount++] = (space + '0'); + space = 0; + } + + FENstring[FENcount++] = '/'; + } /* for */ + + FENstring[--FENcount] = ' '; + FENstring[++FENcount] = ((garray[g].game_state.onMove == WHITE) + ? 'w' + : 'b'); + FENstring[++FENcount] = '\0'; + + return FENstring; } void |