1
ビットボードのマジックナンバーを見つける
私はC ++チェスエンジンを書いていて、スライドピースの動きを生成するためのリトルエンディアンランクファイルマッピングビットボードのマジックナンバーを探しています。 ライバルのチェスのウェブサイトはマジックナンバーを提供しますが、同じボードマッピングについては提供しません。 チェスプログラミングWikiは、これまでのところ最高のマジックナンバーのいくつかを提供していますが、完全ではありません。 最後に4つのことを探しています。 各正方形の占有マスク 各四角のマジックナンバー 各正方形の魔法のシフト 各正方形のデータベース配列を移動します したがって、次のコードを使用して、(たとえば)C3のルークの動きを見つけることができます。 bbBlockers = bbAllPieces & occupancyMaskRook[C3] databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3]) bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces