Estou interessado em programar um mecanismo de xadrez e usar bitboards para representar o estado do jogo. Eu sei que existem alguns mecanismos de xadrez de código aberto que usam placas de bit, mas não é tão fácil olhar o código e entender o que está acontecendo. Estou procurando um bom material de referência sobre como representar todo o estado em placas de bit.
Explicar claramente como manter o estado do jogo usando painéis de bits e, especialmente, como gerar uma lista de movimentos válidos a partir de um determinado painel de bits, ou fornecer boas referências a essa explicação, renderá a marca de seleção verde.
engines
software
open-source
axiopistia
fonte
fonte
Respostas:
O melhor recurso para programação de mecanismo de xadrez é o Chess Programming Wiki , que possui uma grande seção em placas de bit . Tudo o que você precisa para criar um mecanismo baseado em placa de bit está lá, embora seja bastante difundido e às vezes escrito por pessoas para as quais o inglês é um segundo idioma.
fonte
Qual linguagem de programação você deseja usar?
Para implementar um bitboard em C #, use System.UInt64 . Isso pode conter 64 bits, 1 para cada quadrado do tabuleiro de xadrez. Esse tipo de valor se presta a muitas operações rápidas bit a bit.
Este é um bom tutorial sobre bitboard .
Aqui estão alguns exemplos do meu próprio mecanismo de xadrez em C #. Como você pode ver no código, pode demorar um pouco para envolver sua cabeça usando placas de bit, mas elas geralmente são muito rápidas, especialmente para avaliação de posição.
Exemplo 1 - Definição de bitboard:
Exemplo 2 - Inicialização do Bitboard:
Exemplo 3 - Geração de movimento:
Exemplo 4 - Calcular a pontuação do material:
Exemplo 5 - Calculando a mobilidade da peça:
fonte