static BishopMoveTable() { var magicFinder = new MagicFinder(new MTRandom(0)); MagicMoveTableBuilder builder = new MagicMoveTableBuilder(magicFinder); foreach (var(file, rank) in Position.GetAllFilesRanks()) { AddMovesFromSquare(builder, file, rank); } BishopMoveMagicTable = builder.Build(); }
public void Add(int ix, MagicMoveTable.Info info) { Debug.Assert(ix >= 0 && ix < 64); if (!MagicFinder.CheckMagic(info.Mask, info.Magic)) { // we don't need to warn that magic was invalid if they didn't provide a magic if (info.Magic != 0) { _magicFailed = true; } info.Magic = _magicFinder.FindMagic(info.Mask); } _infos.Add(ix, info); }
static PawnDoubleMoveTable() { DoubleMovesMagicTables = new MagicMoveTable[2]; var magicFinder = new MagicFinder(new MTRandom(0)); foreach (var color in new[] { Color.White, Color.Black }) { MagicMoveTableBuilder builder = new MagicMoveTableBuilder(magicFinder); foreach (var(file, rank) in Position.GetAllFilesRanks()) { AddMovesFromSquare(builder, file, rank, color); } DoubleMovesMagicTables[(int)color] = builder.Build(); } }
public MagicMoveTableBuilder(MagicFinder magicFinder) { _magicFinder = magicFinder; }