📄 boards.cpp
字号:
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
};
squareindex TTBoard::AntiPersil[8*8]=
{
p11, p12, p13, p14, p15, p16, p17, p18,
p21, p22, p23, p24, p25, p26, p27, p28,
p31, p32, p33, p34, p35, p36, p37, p38,
p41, p42, p43, p44, p45, p46, p47, p48,
p51, p52, p53, p54, p55, p56, p57, p58,
p61, p62, p63, p64, p65, p66, p67, p68,
p71, p72, p73, p74, p75, p76, p77, p78,
p81, p82, p83, p84, p85, p86, p87, p88
};
squarevalue Board::sboard[10*10]=
{
sentl,sentl,sentl,sentl,sentl,sentl,sentl,sentl,sentl,sentl,
sentl,empty,empty,empty,empty,empty,empty,empty,empty,sentl,
sentl,empty,empty,empty,empty,empty,empty,empty,empty,sentl,
sentl,empty,empty,empty,empty,empty,empty,empty,empty,sentl,
sentl,empty,empty,empty,white,black,empty,empty,empty,sentl,
sentl,empty,empty,empty,black,white,empty,empty,empty,sentl,
sentl,empty,empty,empty,empty,empty,empty,empty,empty,sentl,
sentl,empty,empty,empty,empty,empty,empty,empty,empty,sentl,
sentl,empty,empty,empty,empty,empty,empty,empty,empty,sentl,
sentl,sentl,sentl,sentl,sentl,sentl,sentl,sentl,sentl,sentl
};
unsigned char Board::sym_diag1[10*10]=
{
s00, s10, s20, s30, s40, s50, s60, s70, s80, s90,
s01, p11, p21, p31, p41, p51, p61, p71, p81, s91,
s02, p12, p22, p32, p42, p52, p62, p72, p82, s92,
s03, p13, p23, p33, p43, p53, p63, p73, p83, s93,
s04, p14, p24, p34, p44, p54, p64, p74, p84, s94,
s05, p15, p25, p35, p45, p55, p65, p75, p85, s95,
s06, p16, p26, p36, p46, p56, p66, p76, p86, s96,
s07, p17, p27, p37, p47, p57, p67, p77, p87, s97,
s08, p18, p28, p38, p48, p58, p68, p78, p88, s98,
s09, s19, s29, s39, s49, s59, s69, s79, s89, s99
};
unsigned char Board::sym_diag2[10*10]=
{
s99, s89, s79, s69, s59, s49, s39, s29, s19, s09,
s98, p88, p78, p68, p58, p48, p38, p28, p18, s08,
s97, p87, p77, p67, p57, p47, p37, p27, p17, s07,
s96, p86, p76, p66, p56, p46, p36, p26, p16, s06,
s95, p85, p75, p65, p55, p45, p35, p25, p15, s05,
s94, p84, p74, p64, p54, p44, p34, p24, p14, s04,
s93, p83, p73, p63, p53, p43, p33, p23, p13, s03,
s92, p82, p72, p62, p52, p42, p32, p22, p12, s02,
s91, p81, p71, p61, p51, p41, p31, p21, p11, s01,
s90, s80, s70, s60, s50, s40, s30, s20, s10, s00
};
unsigned char Board::sym_centr[10*10]=
{
s99, s98, s97, s96, s95, s94, s93, s92, s91, s90,
s89, p88, p87, p86, p85, p84, p83, p82, p81, s80,
s79, p78, p77, p76, p75, p74, p73, p72, p71, s70,
s69, p68, p67, p66, p65, p64, p63, p62, p61, s60,
s59, p58, p57, p56, p55, p54, p53, p52, p51, s50,
s49, p48, p47, p46, p45, p44, p43, p42, p41, s40,
s39, p38, p37, p36, p35, p34, p33, p32, p31, s30,
s29, p28, p27, p26, p25, p24, p23, p22, p21, s20,
s19, p18, p17, p16, p15, p14, p13, p12, p11, s10,
s09, s08, s07, s06, s05, s04, s03, s02, s01, s00
};
int BookBoard::maskblack[]=
{
0x3fffffff,0xcfffffff,
0xf3ffffff,0xfcffffff,
0xff3fffff,0xffcfffff,
0xfff3ffff,0xfffcffff,
0xffff3fff,0xffffcfff,
0xfffff3ff,0xfffffcff,
0xffffff3f,0xffffffcf,
0xfffffff3,0xfffffffc
};
int BookBoard::maskempty[]=
{
0x80000000,0x20000000,
0x08000000,0x02000000,
0x00800000,0x00200000,
0x00080000,0x00020000,
0x00008000,0x00002000,
0x00000800,0x00000200,
0x00000080,0x00000020,
0x00000008,0x00000002
};
int BookBoard::maskwhite[]=
{
0x40000000,0x10000000,
0x04000000,0x01000000,
0x00400000,0x00100000,
0x00040000,0x00010000,
0x00004000,0x00001000,
0x00000400,0x00000100,
0x00000040,0x00000010,
0x00000004,0x00000001
};
namespace
{
//index updates for 8 square patterns
const int i81=3*3*3*3*3*3*3;
const int i82=3*3*3*3*3*3;
const int i83=3*3*3*3*3;
const int i84=3*3*3*3;
const int i85=3*3*3;
const int i86=3*3;
const int i87=3;
const int i88=1;
//index updates for 7 square patterns
const int i71=3*3*3*3*3*3;
const int i72=3*3*3*3*3;
const int i73=3*3*3*3;
const int i74=3*3*3;
const int i75=3*3;
const int i76=3;
const int i77=1;
//index updates for 6 square patterns
const int i61=3*3*3*3*3;
const int i62=3*3*3*3;
const int i63=3*3*3;
const int i64=3*3;
const int i65=3;
const int i66=1;
//index updates for 5 square patterns
const int i51=3*3*3*3;
const int i52=3*3*3;
const int i53=3*3;
const int i54=3;
const int i55=1;
//index updates for 4 square patterns
const int i41=3*3*3;
const int i42=3*3;
const int i43=3;
const int i44=1;
}
void Board::InitPrecomp()
{
dummy=0;
for(int x=0; x<10*10; x++)
for(int i=0; i<5; i++)
updatetable[x][i]= PreComp(&dummy, 0);
////////////////////line 1///////////////////////////////
//11 1A
updatetable[p11][0]= PreComp( &line1, i81);
updatetable[p11][1]= PreComp( &colA, i81);
updatetable[p11][2]= PreComp( &diag1A8H, i81);
updatetable[p11][3]= PreComp( &cornA1D2, i81);
updatetable[p11][4]= PreComp( &cornA1B4, i81);
//12 1B
updatetable[p12][0]= PreComp( &line1, i82);
updatetable[p12][1]= PreComp( &colB, i81);
updatetable[p12][2]= PreComp( &diag7H1B, i77);
updatetable[p12][3]= PreComp( &cornA1D2, i82);
updatetable[p12][4]= PreComp( &cornA1B4, i85);
//13 1C
updatetable[p13][0]= PreComp( &line1, i83);
updatetable[p13][1]= PreComp( &colC, i81);
updatetable[p13][2]= PreComp( &diag6H1C, i66);
updatetable[p13][3]= PreComp( &cornA1D2, i83);
//14 1D
updatetable[p14][0]= PreComp( &line1, i84);
updatetable[p14][1]= PreComp( &colD, i81);
updatetable[p14][2]= PreComp( &diag5H1D, i55);
updatetable[p14][3]= PreComp( &diag4A1D, i44);
updatetable[p14][4]= PreComp( &cornA1D2, i84);
//15 1E
updatetable[p15][0]= PreComp( &line1, i85);
updatetable[p15][1]= PreComp( &colE, i81);
updatetable[p15][2]= PreComp( &diag4H1E, i44);
updatetable[p15][3]= PreComp( &diag5A1E, i55);
updatetable[p15][4]= PreComp( &cornH1E2, i84);
//16 1F
updatetable[p16][0]= PreComp( &line1, i86);
updatetable[p16][1]= PreComp( &colF, i81);
updatetable[p16][2]= PreComp( &diag6A1F, i66);
updatetable[p16][3]= PreComp( &cornH1E2, i83);
//17 1G
updatetable[p17][0]= PreComp( &line1, i87);
updatetable[p17][1]= PreComp( &colG, i81);
updatetable[p17][2]= PreComp( &diag7A1G, i77);
updatetable[p17][3]= PreComp( &cornH1E2, i82);
updatetable[p17][4]= PreComp( &cornH1G4, i85);
//18 1H
updatetable[p18][0]= PreComp( &line1, i88);
updatetable[p18][1]= PreComp( &colH, i81);
updatetable[p18][2]= PreComp( &diag8A1H, i88);
updatetable[p18][3]= PreComp( &cornH1E2, i81);
updatetable[p18][4]= PreComp( &cornH1G4, i81);
///////////////////line 2///////////////////////////////
//21 2A
updatetable[p21][0]= PreComp( &line2, i81);
updatetable[p21][1]= PreComp( &colA, i82);
updatetable[p21][2]= PreComp( &diag2A8G, i71);
updatetable[p21][3]= PreComp( &cornA1D2, i85);
updatetable[p21][4]= PreComp( &cornA1B4, i82);
//22 2B
updatetable[p22][0]= PreComp( &line2, i82);
updatetable[p22][1]= PreComp( &colB, i82);
updatetable[p22][2]= PreComp( &diag1A8H, i82);
updatetable[p22][3]= PreComp( &cornA1D2, i86);
updatetable[p22][4]= PreComp( &cornA1B4, i86);
//23 2C
updatetable[p23][0]= PreComp( &line2, i83);
updatetable[p23][1]= PreComp( &colC, i82);
updatetable[p23][2]= PreComp( &diag4A1D, i43);
updatetable[p23][3]= PreComp( &diag7H1B, i76);
updatetable[p23][4]= PreComp( &cornA1D2, i87);
//24 2D
updatetable[p24][0]= PreComp( &line2, i84);
updatetable[p24][1]= PreComp( &colD, i82);
updatetable[p24][2]= PreComp( &diag5A1E, i54);
updatetable[p24][3]= PreComp( &diag6H1C, i65);
updatetable[p24][4]= PreComp( &cornA1D2, i88);
//25 2E
updatetable[p25][0]= PreComp( &line2, i85);
updatetable[p25][1]= PreComp( &colE, i82);
updatetable[p25][2]= PreComp( &diag6A1F, i65);
updatetable[p25][3]= PreComp( &diag5H1D, i54);
updatetable[p25][4]= PreComp( &cornH1E2, i88);
//26 2F
updatetable[p26][0]= PreComp( &line2, i86);
updatetable[p26][1]= PreComp( &colF, i82);
updatetable[p26][2]= PreComp( &diag7A1G, i76);
updatetable[p26][3]= PreComp( &diag4H1E, i43);
updatetable[p26][4]= PreComp( &cornH1E2, i87);
//27 2G
updatetable[p27][0]= PreComp( &line2, i87);
updatetable[p27][1]= PreComp( &colG, i82);
updatetable[p27][2]= PreComp( &diag8A1H, i87);
updatetable[p27][3]= PreComp( &cornH1E2, i86);
updatetable[p27][4]= PreComp( &cornH1G4, i86);
//28 2H
updatetable[p28][0]= PreComp( &line2, i88);
updatetable[p28][1]= PreComp( &colH, i82);
updatetable[p28][2]= PreComp( &diag2H8B, i71);
updatetable[p28][3]= PreComp( &cornH1E2, i85);
updatetable[p28][4]= PreComp( &cornH1G4, i82);
///////////////////line 3///////////////////////////////
//31 3A nck
updatetable[p31][0]= PreComp( &line3, i81);
updatetable[p31][1]= PreComp( &colA, i83);
updatetable[p31][2]= PreComp( &diag3A8F, i61);
updatetable[p31][3]= PreComp( &cornA1B4, i83);
//32 3B
updatetable[p32][0]= PreComp( &line3, i82);
updatetable[p32][1]= PreComp( &colB, i83);
updatetable[p32][2]= PreComp( &diag2A8G, i72);
updatetable[p32][3]= PreComp( &diag4A1D, i42);
updatetable[p32][4]= PreComp( &cornA1B4, i87);
//33 3C
updatetable[p33][0]= PreComp( &line3, i83);
updatetable[p33][1]= PreComp( &colC, i83);
updatetable[p33][2]= PreComp( &diag5A1E, i53);
updatetable[p33][3]= PreComp( &diag1A8H, i83);
//34 3D
updatetable[p34][0]= PreComp( &line3, i84);
updatetable[p34][1]= PreComp( &colD, i83);
updatetable[p34][2]= PreComp( &diag6A1F, i64);
updatetable[p34][3]= PreComp( &diag7H1B, i75);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -