J'écris un moteur d' échecs C ++ et je recherche des nombres magiques pour les bitboards de mappage de fichiers de rangs Little-Endian pour générer des mouvements pour les pièces coulissantes.
Le site Web d' échecs rival donne des nombres magiques mais pas pour le même mappage de plateau.
Le wiki de programmation d'échecs donne jusqu'à présent certains des meilleurs nombres magiques mais n'est pas exhaustif.
À la fin, je recherche quatre choses:
- masque d'occupation pour chaque carré
- nombre magique pour chaque carré
- décalages magiques pour chaque carré
- déplace le tableau de base de données pour chaque carré
Je peux donc utiliser le code suivant pour trouver les mouvements de la tour sur C3 (par exemple):
bbBlockers = bbAllPieces & occupancyMaskRook[C3]
databaseIndex = (int)((bbBlockers * magicNumberRook[C3]) >> rookMagicShifts[C3])
bbMoveSquares = magicMovesRook[C3][databaseIndex] & ~bbFriendlyPieces