Je suis intéressé par la programmation d'un moteur d'échecs et l'utilisation de bitboards pour représenter l'état du jeu. Je sais qu'il existe quelques moteurs d'échecs open source qui utilisent des bitboards, mais ce n'est pas si facile de regarder le code et de comprendre ce qui se passe. Je recherche un bon matériel de référence sur la façon de représenter tout l'état dans les bitboards.
Expliquer clairement comment maintenir l'état du jeu à l'aide de bitboards, et surtout comment générer une liste de mouvements valides à partir d'un bitboard donné, ou fournir de bonnes références à une telle explication vous fera gagner la coche verte.
engines
software
open-source
axiopistie
la source
la source
Réponses:
La meilleure ressource pour la programmation du moteur d'échecs est le wiki de programmation d'échecs , qui a une grande section sur les bitboards . Tout ce dont vous avez besoin pour créer un moteur à base de bitboard est là, bien qu'il soit plutôt étalé et parfois écrit par des personnes pour lesquelles l'anglais est une deuxième langue.
la source
Quel langage de programmation souhaitez-vous utiliser?
Pour implémenter un bitboard en C #, utilisez System.UInt64 . Cela peut contenir 64 bits, 1 pour chaque carré de l'échiquier. Ce type de valeur se prête à de nombreuses opérations rapides au niveau du bit.
Ceci est un bon tutoriel bitboard .
Voici quelques exemples de mon propre moteur d'échecs C #. Comme vous pouvez le voir dans le code, cela peut prendre un certain temps pour vous envelopper avec des bitboards, mais ils sont généralement très rapides, en particulier pour l'évaluation de la position.
Exemple 1 - Définition du Bitboard:
Exemple 2 - Initialisation de Bitboard:
Exemple 3 - Génération de mouvement:
Exemple 4 - Calculer le score matériel:
Exemple 5 - Calcul de la mobilité des pièces:
la source