我正在编写C ++国际象棋引擎,并且正在寻找Little-Endian Rank-File Mapping位板的幻数,以生成滑动件的移动。
竞争对手的国际象棋网站给出了魔术数字,但没有给出相同的棋盘映射。
国际象棋编程维基提供了迄今为止最好的一些魔术数字,但并不详尽。
最后,我正在寻找四件事:
- 每个正方形的占用口罩
- 每个方块的幻数
- 每个方块的魔幻转变
- 移动每个正方形的数据库数组
因此,我可以使用以下代码来查找Rook在C3上的移动(例如):
bbBlockers = bbAllPieces & occupancyMaskRook[C3]
databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3])
bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces
我相信这个问题将更适合并在developers.stackexchange.com或stackoverflow.com上得到回答。
—
Pavan Nadig
并不是的。在这里,这仍然是可以回答的。顺便说一句,程序员更加专注于高级抽象。stackoverflow.com会更好。
—
SmallChess,2015年
@PeteBecker您说得对,我更改了它
—
Romain