私はC ++チェスエンジンを書いていて、スライドピースの動きを生成するためのリトルエンディアンランクファイルマッピングビットボードのマジックナンバーを探しています。
ライバルのチェスのウェブサイトはマジックナンバーを提供しますが、同じボードマッピングについては提供しません。
チェスプログラミングWikiは、これまでのところ最高のマジックナンバーのいくつかを提供していますが、完全ではありません。
最後に4つのことを探しています。
- 各正方形の占有マスク
- 各四角のマジックナンバー
- 各正方形の魔法のシフト
- 各正方形のデータベース配列を移動します
したがって、次のコードを使用して、(たとえば)C3のルークの動きを見つけることができます。
bbBlockers = bbAllPieces & occupancyMaskRook[C3]
databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3])
bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces
私はこの質問がより適切になり、programmers.stackexchange.comまたはstackoverflow.comで答えられると思います。
—
Pavan Nadig
あんまり。これはまだここで答えられます。ところで、プログラマーは高レベルの抽象化にもっと焦点を合わせています。stackoverflow.comのほうがよかったでしょう。
—
SmallChess
@PeteBecker正解です、私はそれを変更しました
—
Romain