Updating to version 1.3, release made by Mike Vanier (mvanier@bbb.caltech.edu).
[gnushogi.git] / gnushogi / pat2inc.c
diff --git a/gnushogi/pat2inc.c b/gnushogi/pat2inc.c
new file mode 100644 (file)
index 0000000..01e56f2
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * FILE: pat2inc.c
+ *
+ *     Convert GNU Shogi pattern textfile to an include file.
+ *
+ * ----------------------------------------------------------------------
+ * Copyright (c) 1993, 1994, 1995 Matthias Mutz
+ * Copyright (c) 1999 Michael Vanier and the Free Software Foundation
+ *
+ * GNU SHOGI is based on GNU CHESS
+ *
+ * Copyright (c) 1988, 1989, 1990 John Stanback
+ * Copyright (c) 1992 Free Software Foundation
+ *
+ * This file is part of GNU SHOGI.
+ *
+ * GNU Shogi is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 1, or (at your option) any
+ * later version.
+ *
+ * GNU Shogi is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with GNU Shogi; see the file COPYING.  If not, write to the Free
+ * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * ----------------------------------------------------------------------
+ *
+ */
+
+#include "version.h"
+#include "gnushogi.h"
+#include "pattern.h"
+
+
+extern void ReadOpeningSequences(short *pindex);
+extern void WriteOpeningSequences(short pindex);
+
+/*
+
+small_short PieceCnt[2];
+small_short PieceList[2][NO_SQUARES];
+small_short PieceIndex[NO_SQUARES];
+
+small_short board[NO_SQUARES];
+small_short color[NO_SQUARES];
+
+*/
+
+void
+test_distance()
+{
+    short side, piece, f, t, d;
+
+    for (side = 0; side <= 1; side++)
+    {
+        printf("SIDE = %d\n", side);
+
+        for (piece = pawn; piece <= king; piece++)
+        {
+            printf("PIECE = %d\n", piece);
+
+            for (f = 0; f < NO_SQUARES; f++)
+            {
+                printf("FROM %d TO ", f);
+
+                for (t = 0; t < NO_SQUARES; t++)
+                {
+                    d = piece_distance(side, piece, f, t);
+
+                    if (d != CANNOT_REACH)
+                        printf("%d:%d ", t, d);
+                }
+
+                printf("\n");
+            }
+        }
+    }
+
+}
+
+
+
+int
+main(int argc, char **argv)
+
+{
+
+    short sq, side, max_pattern_data;
+
+#if defined(EXTLANGFILE)
+    char *Lang = NULL;
+#endif
+
+#ifdef TEST_DISTANCE
+    short d;
+    char  s[80];
+#endif
+
+    display_type = DISPLAY_RAW;
+
+#if defined(EXTLANGFILE)
+    InitConst(Lang);
+#endif
+
+    Initialize_data();
+
+    for (sq = 0; sq < NO_SQUARES; sq++)
+    {
+        board[sq] = no_piece;
+        color[sq] = neutral;
+    }
+
+    ClearCaptured();
+
+    for (side = 0; side <= 1; side++)
+        PieceCnt[side] = -1;
+
+#ifdef TEST_DISTANCE
+    strcpy(s, "g6i k5i g4i p9g p8g r* s3h p7g b8h B* S5f");
+
+    if (string_to_board_color(s))
+    {
+        printf("ERROR IN string_to_board_color");
+        exit(1);
+    }
+    else
+    {
+        UpdateDisplay(0, 0, 1, 0);
+    }
+
+    d = pattern_distance(black, &pattern);
+
+    printf("distance = %d\n", d);
+
+#endif
+
+    ReadOpeningSequences(&max_pattern_data);
+    WriteOpeningSequences(max_pattern_data);
+
+    return 0;
+}
+