1
查找位板的魔术数字
我正在编写C ++国际象棋引擎,并且正在寻找Little-Endian Rank-File Mapping位板的幻数,以生成滑动件的移动。 竞争对手的国际象棋网站给出了魔术数字,但没有给出相同的棋盘映射。 国际象棋编程维基提供了迄今为止最好的一些魔术数字,但并不详尽。 最后,我正在寻找四件事: 每个正方形的占用口罩 每个方块的幻数 每个方块的魔幻转变 移动每个正方形的数据库数组 因此,我可以使用以下代码来查找Rook在C3上的移动(例如): bbBlockers = bbAllPieces & occupancyMaskRook[C3] databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3]) bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces