Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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();
            }
        }
Esempio n. 4
0
 public MagicMoveTableBuilder(MagicFinder magicFinder)
 {
     _magicFinder = magicFinder;
 }