Code: Select all
//sample code initializes the classical directional bitboards
#define s32 signed __int32
#define u64 unsigned __int64
s32 mailBox[120] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1, 0, 1, 2, 3, 4, 5, 6, 7,-1,
-1, 8, 9,10,11,12,13,14,15,-1,
-1,16,17,18,19,20,21,22,23,-1,
-1,24,25,26,27,28,29,30,31,-1,
-1,32,33,34,35,36,37,38,39,-1,
-1,40,41,42,43,44,45,46,47,-1,
-1,48,49,50,51,52,53,54,55,-1,
-1,56,57,58,59,60,61,62,63,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
u64 dirNW[64];
u64 dirNN[64];
u64 dirNE[64];
u64 dirEE[64];
u64 dirSE[64];
u64 dirSS[64];
u64 dirSW[64];
u64 dirWW[64];
void Initiate(void);
s32 __cdecl main(void);
void Initiate() {
s32 i,j,k,m,s;
u64 *dirXX[8] = {dirNW,dirNN,dirNE,dirEE,dirSE,dirSS,dirSW,dirWW};
s32 bb64[8] = {7,8,9,1,-7,-8,-9,-1};
s32 mB120[8] = {9,10,11,1,-9,-10,-11,-1};
for(i = 21; i < 99; i++) {
if(mailBox[i] != -1) {
s = mailBox[i];
for(m = 0; m < 8; m++) {
j = i + mB120[m];
k = s + bb64[m];
*(dirXX[m] + s) = 0;
while(mailBox[j] != -1) {
*(dirXX[m] + s) ^= (u64)1 << k;
j = j + mB120[m];
k = k + bb64[m];
}
}
}
}
}
s32 __cdecl main(){
Initiate();
return(1);
}
/*#define s32 signed __int32
#define u64 unsigned __int64
s32 mailBox[120] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1, 0, 1, 2, 3, 4, 5, 6, 7,-1,
-1, 8, 9,10,11,12,13,14,15,-1,
-1,16,17,18,19,20,21,22,23,-1,
-1,24,25,26,27,28,29,30,31,-1,
-1,32,33,34,35,36,37,38,39,-1,
-1,40,41,42,43,44,45,46,47,-1,
-1,48,49,50,51,52,53,54,55,-1,
-1,56,57,58,59,60,61,62,63,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
u64 dirXX[8][64];
void Initiate(void);
s32 __cdecl main(void);
void Initiate() {
s32 i,j,k,m,s;
s32 bb64[8] = {7,8,9,1,-7,-8,-9,-1};
s32 mB120[8] = {9,10,11,1,-9,-10,-11,-1};
for(i = 21; i < 99; i++) {
if(mailBox[i] != -1) {
s = mailBox[i];
for(m = 0; m < 8; m++) {
j = i + mB120[m];
k = s + bb64[m];
dirXX[m][s] = 0;
while(mailBox[j] != -1) {
dirXX[m][s] ^= (u64)1 << k;
j = j + mB120[m];
k = k + bb64[m];
}
}
}
}
}
s32 __cdecl main(){
Initiate();
return(1);
}*/