Scid
4.7.0
Main Page
+
Namespaces
Namespace List
+
Namespace Members
+
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
y
z
+
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
y
z
Variables
Typedefs
+
Classes
Class List
Class Index
Class Hierarchy
+
Class Members
+
All
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
y
~
+
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
~
+
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
v
w
y
Typedefs
Enumerations
Enumerator
Related Functions
+
Files
File List
+
File Members
+
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
z
+
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
+
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
w
y
z
+
Typedefs
b
c
d
e
f
g
i
l
m
n
p
r
s
u
v
Enumerations
+
Enumerator
c
e
f
g
n
p
s
t
+
Macros
a
b
d
e
g
h
l
m
p
s
t
u
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
src
attacks.h
Go to the documentation of this file.
1
//////////////////////////////////////////////////////////////////////
2
//
3
// FILE: attacks.h
4
// Lists of attack squares
5
//
6
// Part of: Scid (Shane's Chess Information Database)
7
// Version: 1.0
8
//
9
// Notice: Copyright (c) 1999 Shane Hudson. All rights reserved.
10
//
11
// Author: Shane Hudson (sgh@users.sourceforge.net)
12
//
13
//////////////////////////////////////////////////////////////////////
14
15
#ifndef SCID_ATTACKS_H
16
#define SCID_ATTACKS_H
17
18
#ifndef SCID_COMMON_H
19
#include "
common.h
"
20
#endif
21
22
23
// NOTE: These arrays have been automatically generated. Don't change
24
// them unless the square or piece representations change!
25
26
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27
// Knight Moves:
28
// knightAttacks[sq] is an array of the squares a knight on sq
29
// could move to. There are 9 target squares even though a knight
30
// can only have at most 8 legal moves, so we can end the list with
31
// an "NS" (null square).
32
//
33
// Example code to iterate through the knight moves for a square:
34
//
35
// squareT *dest = knightAttacks[fromSquare];
36
// while (*dest != NULL_SQUARE) {
37
// /* do desired action.... */
38
// dest++;
39
// }
40
//
41
42
const
squareT
43
knightAttacks
[66][9] = {
44
{
/* A1 */
C2
,
B3
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
45
{
/* B1 */
D2
,
A3
,
C3
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
46
{
/* C1 */
A2
,
E2
,
B3
,
D3
,
NS
,
NS
,
NS
,
NS
, NS },
47
{
/* D1 */
B2
,
F2
,
C3
,
E3
,
NS
,
NS
,
NS
,
NS
, NS },
48
{
/* E1 */
C2
,
G2
,
D3
,
F3
,
NS
,
NS
,
NS
,
NS
, NS },
49
{
/* F1 */
D2
,
H2
,
E3
,
G3
,
NS
,
NS
,
NS
,
NS
, NS },
50
{
/* G1 */
E2
,
F3
,
H3
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
51
{
/* H1 */
F2
,
G3
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
52
{
/* A2 */
C1
,
C3
,
B4
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
53
{
/* B2 */
D1
,
D3
,
A4
,
C4
,
NS
,
NS
,
NS
,
NS
, NS },
54
{
/* C2 */
A1
,
E1
,
A3
,
E3
,
B4
,
D4
,
NS
,
NS
, NS },
55
{
/* D2 */
B1
,
F1
,
B3
,
F3
,
C4
,
E4
,
NS
,
NS
, NS },
56
{
/* E2 */
C1
,
G1
,
C3
,
G3
,
D4
,
F4
,
NS
,
NS
, NS },
57
{
/* F2 */
D1
,
H1
,
D3
,
H3
,
E4
,
G4
,
NS
,
NS
, NS },
58
{
/* G2 */
E1
,
E3
,
F4
,
H4
,
NS
,
NS
,
NS
,
NS
, NS },
59
{
/* H2 */
F1
,
F3
,
G4
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
60
{
/* A3 */
B1
,
C2
,
C4
,
B5
,
NS
,
NS
,
NS
,
NS
, NS },
61
{
/* B3 */
A1
,
C1
,
D2
,
D4
,
A5
,
C5
,
NS
,
NS
, NS },
62
{
/* C3 */
B1
,
D1
,
A2
,
E2
,
A4
,
E4
,
B5
,
D5
, NS },
63
{
/* D3 */
C1
,
E1
,
B2
,
F2
,
B4
,
F4
,
C5
,
E5
, NS },
64
{
/* E3 */
D1
,
F1
,
C2
,
G2
,
C4
,
G4
,
D5
,
F5
, NS },
65
{
/* F3 */
E1
,
G1
,
D2
,
H2
,
D4
,
H4
,
E5
,
G5
, NS },
66
{
/* G3 */
F1
,
H1
,
E2
,
E4
,
F5
,
H5
,
NS
,
NS
, NS },
67
{
/* H3 */
G1
,
F2
,
F4
,
G5
,
NS
,
NS
,
NS
,
NS
, NS },
68
{
/* A4 */
B2
,
C3
,
C5
,
B6
,
NS
,
NS
,
NS
,
NS
, NS },
69
{
/* B4 */
A2
,
C2
,
D3
,
D5
,
A6
,
C6
,
NS
,
NS
, NS },
70
{
/* C4 */
B2
,
D2
,
A3
,
E3
,
A5
,
E5
,
B6
,
D6
, NS },
71
{
/* D4 */
C2
,
E2
,
B3
,
F3
,
B5
,
F5
,
C6
,
E6
, NS },
72
{
/* E4 */
D2
,
F2
,
C3
,
G3
,
C5
,
G5
,
D6
,
F6
, NS },
73
{
/* F4 */
E2
,
G2
,
D3
,
H3
,
D5
,
H5
,
E6
,
G6
, NS },
74
{
/* G4 */
F2
,
H2
,
E3
,
E5
,
F6
,
H6
,
NS
,
NS
, NS },
75
{
/* H4 */
G2
,
F3
,
F5
,
G6
,
NS
,
NS
,
NS
,
NS
, NS },
76
{
/* A5 */
B3
,
C4
,
C6
,
B7
,
NS
,
NS
,
NS
,
NS
, NS },
77
{
/* B5 */
A3
,
C3
,
D4
,
D6
,
A7
,
C7
,
NS
,
NS
, NS },
78
{
/* C5 */
B3
,
D3
,
A4
,
E4
,
A6
,
E6
,
B7
,
D7
, NS },
79
{
/* D5 */
C3
,
E3
,
B4
,
F4
,
B6
,
F6
,
C7
,
E7
, NS },
80
{
/* E5 */
D3
,
F3
,
C4
,
G4
,
C6
,
G6
,
D7
,
F7
, NS },
81
{
/* F5 */
E3
,
G3
,
D4
,
H4
,
D6
,
H6
,
E7
,
G7
, NS },
82
{
/* G5 */
F3
,
H3
,
E4
,
E6
,
F7
,
H7
,
NS
,
NS
, NS },
83
{
/* H5 */
G3
,
F4
,
F6
,
G7
,
NS
,
NS
,
NS
,
NS
, NS },
84
{
/* A6 */
B4
,
C5
,
C7
,
B8
,
NS
,
NS
,
NS
,
NS
, NS },
85
{
/* B6 */
A4
,
C4
,
D5
,
D7
,
A8
,
C8
,
NS
,
NS
, NS },
86
{
/* C6 */
B4
,
D4
,
A5
,
E5
,
A7
,
E7
,
B8
,
D8
, NS },
87
{
/* D6 */
C4
,
E4
,
B5
,
F5
,
B7
,
F7
,
C8
,
E8
, NS },
88
{
/* E6 */
D4
,
F4
,
C5
,
G5
,
C7
,
G7
,
D8
,
F8
, NS },
89
{
/* F6 */
E4
,
G4
,
D5
,
H5
,
D7
,
H7
,
E8
,
G8
, NS },
90
{
/* G6 */
F4
,
H4
,
E5
,
E7
,
F8
,
H8
,
NS
,
NS
, NS },
91
{
/* H6 */
G4
,
F5
,
F7
,
G8
,
NS
,
NS
,
NS
,
NS
, NS },
92
{
/* A7 */
B5
,
C6
,
C8
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
93
{
/* B7 */
A5
,
C5
,
D6
,
D8
,
NS
,
NS
,
NS
,
NS
, NS },
94
{
/* C7 */
B5
,
D5
,
A6
,
E6
,
A8
,
E8
,
NS
,
NS
, NS },
95
{
/* D7 */
C5
,
E5
,
B6
,
F6
,
B8
,
F8
,
NS
,
NS
, NS },
96
{
/* E7 */
D5
,
F5
,
C6
,
G6
,
C8
,
G8
,
NS
,
NS
, NS },
97
{
/* F7 */
E5
,
G5
,
D6
,
H6
,
D8
,
H8
,
NS
,
NS
, NS },
98
{
/* G7 */
F5
,
H5
,
E6
,
E8
,
NS
,
NS
,
NS
,
NS
, NS },
99
{
/* H7 */
G5
,
F6
,
F8
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
100
{
/* A8 */
B6
,
C7
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
101
{
/* B8 */
A6
,
C6
,
D7
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
102
{
/* C8 */
B6
,
D6
,
A7
,
E7
,
NS
,
NS
,
NS
,
NS
, NS },
103
{
/* D8 */
C6
,
E6
,
B7
,
F7
,
NS
,
NS
,
NS
,
NS
, NS },
104
{
/* E8 */
D6
,
F6
,
C7
,
G7
,
NS
,
NS
,
NS
,
NS
, NS },
105
{
/* F8 */
E6
,
G6
,
D7
,
H7
,
NS
,
NS
,
NS
,
NS
, NS },
106
{
/* G8 */
F6
,
H6
,
E7
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
107
{
/* H8 */
G6
,
F7
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
108
{
/* COL*/
NS
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
109
{
/* NS */
NS
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
, NS }
110
};
111
112
113
114
// King moves:
115
// As for the knight moves, the secondary array size is 9 even
116
// though there are only 8 possible king moves, so there can
117
// always be a NULL_SQUARE terminating the list of moves for each
118
// square. Castling moves are not included here.
119
120
const
squareT
121
kingAttacks
[66][9] = {
122
{
/* A1 */
B1
,
A2
,
B2
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
123
{
/* B1 */
A1
,
C1
,
A2
,
B2
,
C2
,
NS
,
NS
,
NS
, NS },
124
{
/* C1 */
B1
,
D1
,
B2
,
C2
,
D2
,
NS
,
NS
,
NS
, NS },
125
{
/* D1 */
C1
,
E1
,
C2
,
D2
,
E2
,
NS
,
NS
,
NS
, NS },
126
{
/* E1 */
D1
,
F1
,
D2
,
E2
,
F2
,
NS
,
NS
,
NS
, NS },
127
{
/* F1 */
E1
,
G1
,
E2
,
F2
,
G2
,
NS
,
NS
,
NS
, NS },
128
{
/* G1 */
F1
,
H1
,
F2
,
G2
,
H2
,
NS
,
NS
,
NS
, NS },
129
{
/* H1 */
G1
,
G2
,
H2
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
130
{
/* A2 */
A1
,
B1
,
B2
,
A3
,
B3
,
NS
,
NS
,
NS
, NS },
131
{
/* B2 */
A1
,
B1
,
C1
,
A2
,
C2
,
A3
,
B3
,
C3
, NS },
132
{
/* C2 */
B1
,
C1
,
D1
,
B2
,
D2
,
B3
,
C3
,
D3
, NS },
133
{
/* D2 */
C1
,
D1
,
E1
,
C2
,
E2
,
C3
,
D3
,
E3
, NS },
134
{
/* E2 */
D1
,
E1
,
F1
,
D2
,
F2
,
D3
,
E3
,
F3
, NS },
135
{
/* F2 */
E1
,
F1
,
G1
,
E2
,
G2
,
E3
,
F3
,
G3
, NS },
136
{
/* G2 */
F1
,
G1
,
H1
,
F2
,
H2
,
F3
,
G3
,
H3
, NS },
137
{
/* H2 */
G1
,
H1
,
G2
,
G3
,
H3
,
NS
,
NS
,
NS
, NS },
138
{
/* A3 */
A2
,
B2
,
B3
,
A4
,
B4
,
NS
,
NS
,
NS
, NS },
139
{
/* B3 */
A2
,
B2
,
C2
,
A3
,
C3
,
A4
,
B4
,
C4
, NS },
140
{
/* C3 */
B2
,
C2
,
D2
,
B3
,
D3
,
B4
,
C4
,
D4
, NS },
141
{
/* D3 */
C2
,
D2
,
E2
,
C3
,
E3
,
C4
,
D4
,
E4
, NS },
142
{
/* E3 */
D2
,
E2
,
F2
,
D3
,
F3
,
D4
,
E4
,
F4
, NS },
143
{
/* F3 */
E2
,
F2
,
G2
,
E3
,
G3
,
E4
,
F4
,
G4
, NS },
144
{
/* G3 */
F2
,
G2
,
H2
,
F3
,
H3
,
F4
,
G4
,
H4
, NS },
145
{
/* H3 */
G2
,
H2
,
G3
,
G4
,
H4
,
NS
,
NS
,
NS
, NS },
146
{
/* A4 */
A3
,
B3
,
B4
,
A5
,
B5
,
NS
,
NS
,
NS
, NS },
147
{
/* B4 */
A3
,
B3
,
C3
,
A4
,
C4
,
A5
,
B5
,
C5
, NS },
148
{
/* C4 */
B3
,
C3
,
D3
,
B4
,
D4
,
B5
,
C5
,
D5
, NS },
149
{
/* D4 */
C3
,
D3
,
E3
,
C4
,
E4
,
C5
,
D5
,
E5
, NS },
150
{
/* E4 */
D3
,
E3
,
F3
,
D4
,
F4
,
D5
,
E5
,
F5
, NS },
151
{
/* F4 */
E3
,
F3
,
G3
,
E4
,
G4
,
E5
,
F5
,
G5
, NS },
152
{
/* G4 */
F3
,
G3
,
H3
,
F4
,
H4
,
F5
,
G5
,
H5
, NS },
153
{
/* H4 */
G3
,
H3
,
G4
,
G5
,
H5
,
NS
,
NS
,
NS
, NS },
154
{
/* A5 */
A4
,
B4
,
B5
,
A6
,
B6
,
NS
,
NS
,
NS
, NS },
155
{
/* B5 */
A4
,
B4
,
C4
,
A5
,
C5
,
A6
,
B6
,
C6
, NS },
156
{
/* C5 */
B4
,
C4
,
D4
,
B5
,
D5
,
B6
,
C6
,
D6
, NS },
157
{
/* D5 */
C4
,
D4
,
E4
,
C5
,
E5
,
C6
,
D6
,
E6
, NS },
158
{
/* E5 */
D4
,
E4
,
F4
,
D5
,
F5
,
D6
,
E6
,
F6
, NS },
159
{
/* F5 */
E4
,
F4
,
G4
,
E5
,
G5
,
E6
,
F6
,
G6
, NS },
160
{
/* G5 */
F4
,
G4
,
H4
,
F5
,
H5
,
F6
,
G6
,
H6
, NS },
161
{
/* H5 */
G4
,
H4
,
G5
,
G6
,
H6
,
NS
,
NS
,
NS
, NS },
162
{
/* A6 */
A5
,
B5
,
B6
,
A7
,
B7
,
NS
,
NS
,
NS
, NS },
163
{
/* B6 */
A5
,
B5
,
C5
,
A6
,
C6
,
A7
,
B7
,
C7
, NS },
164
{
/* C6 */
B5
,
C5
,
D5
,
B6
,
D6
,
B7
,
C7
,
D7
, NS },
165
{
/* D6 */
C5
,
D5
,
E5
,
C6
,
E6
,
C7
,
D7
,
E7
, NS },
166
{
/* E6 */
D5
,
E5
,
F5
,
D6
,
F6
,
D7
,
E7
,
F7
, NS },
167
{
/* F6 */
E5
,
F5
,
G5
,
E6
,
G6
,
E7
,
F7
,
G7
, NS },
168
{
/* G6 */
F5
,
G5
,
H5
,
F6
,
H6
,
F7
,
G7
,
H7
, NS },
169
{
/* H6 */
G5
,
H5
,
G6
,
G7
,
H7
,
NS
,
NS
,
NS
, NS },
170
{
/* A7 */
A6
,
B6
,
B7
,
A8
,
B8
,
NS
,
NS
,
NS
, NS },
171
{
/* B7 */
A6
,
B6
,
C6
,
A7
,
C7
,
A8
,
B8
,
C8
, NS },
172
{
/* C7 */
B6
,
C6
,
D6
,
B7
,
D7
,
B8
,
C8
,
D8
, NS },
173
{
/* D7 */
C6
,
D6
,
E6
,
C7
,
E7
,
C8
,
D8
,
E8
, NS },
174
{
/* E7 */
D6
,
E6
,
F6
,
D7
,
F7
,
D8
,
E8
,
F8
, NS },
175
{
/* F7 */
E6
,
F6
,
G6
,
E7
,
G7
,
E8
,
F8
,
G8
, NS },
176
{
/* G7 */
F6
,
G6
,
H6
,
F7
,
H7
,
F8
,
G8
,
H8
, NS },
177
{
/* H7 */
G6
,
H6
,
G7
,
G8
,
H8
,
NS
,
NS
,
NS
, NS },
178
{
/* A8 */
A7
,
B7
,
B8
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
179
{
/* B8 */
A7
,
B7
,
C7
,
A8
,
C8
,
NS
,
NS
,
NS
, NS },
180
{
/* C8 */
B7
,
C7
,
D7
,
B8
,
D8
,
NS
,
NS
,
NS
, NS },
181
{
/* D8 */
C7
,
D7
,
E7
,
C8
,
E8
,
NS
,
NS
,
NS
, NS },
182
{
/* E8 */
D7
,
E7
,
F7
,
D8
,
F8
,
NS
,
NS
,
NS
, NS },
183
{
/* F8 */
E7
,
F7
,
G7
,
E8
,
G8
,
NS
,
NS
,
NS
, NS },
184
{
/* G8 */
F7
,
G7
,
H7
,
F8
,
H8
,
NS
,
NS
,
NS
, NS },
185
{
/* H8 */
G7
,
H7
,
G8
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
186
{
/* COL*/
NS
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
, NS },
187
{
/* NS */
NS
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
,
NS
, NS }
188
};
189
190
#endif // #ifndef SCID_ATTACKS_H
191
192
//////////////////////////////////////////////////////////////////////
193
// EOF: attacks.h
194
//////////////////////////////////////////////////////////////////////
195
F5
const squareT F5
Definition:
common.h:352
F2
const squareT F2
Definition:
common.h:349
C5
const squareT C5
Definition:
common.h:352
C4
const squareT C4
Definition:
common.h:351
C8
const squareT C8
Definition:
common.h:355
B3
const squareT B3
Definition:
common.h:350
F4
const squareT F4
Definition:
common.h:351
F8
const squareT F8
Definition:
common.h:355
H1
const squareT H1
Definition:
common.h:348
A4
const squareT A4
Definition:
common.h:351
D2
const squareT D2
Definition:
common.h:349
G6
const squareT G6
Definition:
common.h:353
H7
const squareT H7
Definition:
common.h:354
C1
const squareT C1
Definition:
common.h:348
kingAttacks
const squareT kingAttacks[66][9]
Definition:
attacks.h:121
H4
const squareT H4
Definition:
common.h:351
B5
const squareT B5
Definition:
common.h:352
E7
const squareT E7
Definition:
common.h:354
G5
const squareT G5
Definition:
common.h:352
D7
const squareT D7
Definition:
common.h:354
A8
const squareT A8
Definition:
common.h:355
E6
const squareT E6
Definition:
common.h:353
H6
const squareT H6
Definition:
common.h:353
A1
const squareT A1
Definition:
common.h:348
A7
const squareT A7
Definition:
common.h:354
B4
const squareT B4
Definition:
common.h:351
A6
const squareT A6
Definition:
common.h:353
F6
const squareT F6
Definition:
common.h:353
G1
const squareT G1
Definition:
common.h:348
F7
const squareT F7
Definition:
common.h:354
H3
const squareT H3
Definition:
common.h:350
H2
const squareT H2
Definition:
common.h:349
B2
const squareT B2
Definition:
common.h:349
C2
const squareT C2
Definition:
common.h:349
H5
const squareT H5
Definition:
common.h:352
H8
const squareT H8
Definition:
common.h:355
A3
const squareT A3
Definition:
common.h:350
B1
const squareT B1
Definition:
common.h:348
G8
const squareT G8
Definition:
common.h:355
G7
const squareT G7
Definition:
common.h:354
D1
const squareT D1
Definition:
common.h:348
B8
const squareT B8
Definition:
common.h:355
B7
const squareT B7
Definition:
common.h:354
E5
const squareT E5
Definition:
common.h:352
C6
const squareT C6
Definition:
common.h:353
D6
const squareT D6
Definition:
common.h:353
G3
const squareT G3
Definition:
common.h:350
knightAttacks
const squareT knightAttacks[66][9]
Definition:
attacks.h:43
E2
const squareT E2
Definition:
common.h:349
A2
const squareT A2
Definition:
common.h:349
E8
const squareT E8
Definition:
common.h:355
D3
const squareT D3
Definition:
common.h:350
D4
const squareT D4
Definition:
common.h:351
E3
const squareT E3
Definition:
common.h:350
B6
const squareT B6
Definition:
common.h:353
common.h
F3
const squareT F3
Definition:
common.h:350
E1
const squareT E1
Definition:
common.h:348
D5
const squareT D5
Definition:
common.h:352
G4
const squareT G4
Definition:
common.h:351
E4
const squareT E4
Definition:
common.h:351
G2
const squareT G2
Definition:
common.h:349
A5
const squareT A5
Definition:
common.h:352
C3
const squareT C3
Definition:
common.h:350
NS
const squareT NS
Definition:
common.h:357
F1
const squareT F1
Definition:
common.h:348
C7
const squareT C7
Definition:
common.h:354
squareT
byte squareT
Definition:
common.h:105
D8
const squareT D8
Definition:
common.h:355
Generated by
1.8.13