XBoard: teach about xboard move notation.
[gnushogi.git] / gnushogi / gnushogi.h
index 78c052e..e5142f5 100644 (file)
@@ -66,6 +66,7 @@ extern display_t display_type;
 
 extern short hard_time_limit; /* If you exceed time limit, you lose.   */
 extern short nolist;          /* Don't list game after exit.           */
+extern short xboard;          /* Use XBoard instead of xShogi protocol */
 
 
 /*
@@ -170,17 +171,22 @@ extern void movealgbr(short m, char *s);
 #define NO_PTYPE_PIECES 11
 #define NO_COLS          5
 #define NO_ROWS          5
+#define NO_CAMP_ROWS     1
 #else
 #define NO_PIECES       15
 #define MAX_CAPTURED    19
 #define NO_PTYPE_PIECES 15
 #define NO_COLS          9
 #define NO_ROWS          9
+#define NO_CAMP_ROWS     3
 #endif
 #define NO_SQUARES      (NO_COLS*NO_ROWS)
 
-#define ROW_NAME(n) ('a' + NO_ROWS - 1 - n)
-#define COL_NAME(n) ('1' + NO_COLS - 1 - n)
+#define ROW_NAME(n) ( xboard ? '1' + n : ('a' + NO_ROWS - 1 - n) )
+#define COL_NAME(n) ( xboard ? 'a' + n : ('1' + NO_COLS - 1 - n) )
+#define ROW_NUM(c) ( xboard ? c - '1' : ('a' + NO_ROWS - 1 - c) )
+#define COL_NUM(c) ( xboard ? c - 'a' : ('1' + NO_COLS - 1 - c) )
 
 #if defined HASHFILE || defined CACHE
 #  define PTBLBDSIZE (NO_SQUARES + NO_PIECES)
@@ -228,13 +234,8 @@ extern void movealgbr(short m, char *s);
 
 
 /* board properties */
-#ifndef MINISHOGI
-#define InBlackCamp(sq) ((sq) < 27)
-#define InWhiteCamp(sq) ((sq) > 53)
-#else
-#define InBlackCamp(sq) ((sq) < 5)
-#define InWhiteCamp(sq) ((sq) > 19)
-#endif
+#define InBlackCamp(sq) ((sq) < (NO_COLS * NO_CAMP_ROWS))
+#define InWhiteCamp(sq) ((sq) >= (NO_COLS * (NO_ROWS - NO_CAMP_ROWS)))
 #define InPromotionZone(side, sq) \
 (((side) == black) ? InWhiteCamp(sq) : InBlackCamp(sq))
 
@@ -329,13 +330,9 @@ enum {
 #ifndef MINISHOGI
 #define pxx (" PLNSGBRPLNSBRK ")
 #define qxx (" plnsgbrplnsbrk ")
-#define rxx ("ihgfedcba")
-#define cxx ("987654321")
 #else
 #define pxx (" PSGBRPSBRK ")
 #define qxx (" psgbrpsbrk ")
-#define rxx ("edcba")
-#define cxx ("54321")
 #endif
 
 /***************** Table limits ********************************************/