Bir C ++ satranç motoru yazıyorum ve kayan parçalar için hareketler oluşturmak için Little-Endian Rank-File Mapping bitboard'ları için sihirli sayılar arıyorum .
Rakip satranç web sitesi aynı tahta eşlemesi için sihirli sayılar verir, ancak değil.
Satranç programlama wiki şimdiye kadarki en iyi sihirli sayıların bazılarını veriyor ancak tam kapsamlı değil.
Sonunda dört şey arıyorum:
- her kare için doluluk maskesi
- her kare için sihirli sayı
- her kare için sihirli vardiyalar
- her bir kare için veritabanı dizisini taşır
Bu yüzden Rook'un C3'teki hareketlerini (örneğin) bulmak için aşağıdaki kodu kullanabilirim :
bbBlockers = bbAllPieces & occupancyMaskRook[C3]
databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3])
bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces