Minor pat2inc code cleanups
[gnushogi.git] / gnushogi / pat2inc.c
1 /*
2  * FILE: pat2inc.c
3  *
4  *     Convert GNU Shogi pattern textfile to an include file.
5  *
6  * ----------------------------------------------------------------------
7  * Copyright (c) 1993, 1994, 1995 Matthias Mutz
8  * Copyright (c) 1999 Michael Vanier and the Free Software Foundation
9  *
10  * GNU SHOGI is based on GNU CHESS
11  *
12  * Copyright (c) 1988, 1989, 1990 John Stanback
13  * Copyright (c) 1992 Free Software Foundation
14  *
15  * This file is part of GNU SHOGI.
16  *
17  * GNU Shogi is free software; you can redistribute it and/or modify it
18  * under the terms of the GNU General Public License as published by the
19  * Free Software Foundation; either version 3 of the License,
20  * or (at your option) any later version.
21  *
22  * GNU Shogi is distributed in the hope that it will be useful, but WITHOUT
23  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
24  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
25  * for more details.
26  *
27  * You should have received a copy of the GNU General Public License along
28  * with GNU Shogi; see the file COPYING. If not, see
29  * <http://www.gnu.org/licenses/>.
30  * ----------------------------------------------------------------------
31  *
32  */
33
34 #include "gnushogi.h"
35 #include "pattern.h"
36
37
38 extern void ReadOpeningSequences(short *pindex);
39 extern void WriteOpeningSequences(short pindex);
40
41 /*
42
43 small_short PieceCnt[2];
44 small_short PieceList[2][NO_SQUARES];
45 small_short PieceIndex[NO_SQUARES];
46 */
47
48 small_short board[NO_SQUARES];
49 small_short color[NO_SQUARES];
50
51 void
52 test_distance(void)
53 {
54     short side, piece, f, t, d;
55
56     for (side = 0; side <= 1; side++)
57     {
58         printf("SIDE = %d\n", side);
59
60         for (piece = pawn; piece <= king; piece++)
61         {
62             printf("PIECE = %d\n", piece);
63
64             for (f = 0; f < NO_SQUARES; f++)
65             {
66                 printf("FROM %d TO ", f);
67
68                 for (t = 0; t < NO_SQUARES; t++)
69                 {
70                     d = piece_distance(side, piece, f, t);
71
72                     if (d != CANNOT_REACH)
73                         printf("%d:%d ", t, d);
74                 }
75
76                 printf("\n");
77             }
78         }
79     }
80
81 }
82
83
84
85 int
86 main(int argc, char **argv)
87 {
88     short sq, side, max_pattern_data;
89
90 #ifdef TEST_DISTANCE
91     short d;
92     char  s[80];
93 #endif
94
95     Initialize_data();
96
97     for (sq = 0; sq < NO_SQUARES; sq++)
98     {
99         board[sq] = no_piece;
100         color[sq] = neutral;
101     }
102
103     ClearCaptured();
104
105     for (side = 0; side <= 1; side++)
106         PieceCnt[side] = -1;
107
108 #ifdef TEST_DISTANCE
109     strcpy(s, "g6i k5i g4i p9g p8g r* s3h p7g b8h B* S5f");
110
111     if (string_to_board_color(s))
112     {
113         printf("ERROR IN string_to_board_color");
114         exit(1);
115     }
116     else
117     {
118         UpdateDisplay(0, 0, 1, 0);
119     }
120
121     d = pattern_distance(black, &pattern);
122
123     printf("distance = %d\n", d);
124
125 #endif
126
127     ReadOpeningSequences(&max_pattern_data);
128     WriteOpeningSequences(max_pattern_data);
129
130     return 0;
131 }