Я заинтересован в программировании шахматного движка и использовании битбордов для отображения состояния игры. Я знаю, что есть несколько шахматных движков с открытым исходным кодом, которые используют битборды, но не так просто взглянуть на код и понять, что происходит. Я ищу хороший справочный материал о том, как представить все состояние в битбордах.
Четкое объяснение того, как поддерживать состояние игры с использованием битбордов, и особенно, как генерировать список допустимых ходов из любого конкретного битборда, или предоставление хороших ссылок на такое объяснение, принесет вам зеленую галочку.
engines
software
open-source
axiopisty
источник
источник
Ответы:
Лучшим ресурсом для программирования шахматного движка является Chess Programming Wiki , в котором есть большой раздел на битбордах . Здесь есть все, что нужно для создания движка на основе битовой доски, хотя он довольно распространен и иногда пишется людьми, для которых английский является вторым языком.
источник
Какой язык программирования вы хотите использовать?
Для реализации битборда в C # используйте System.UInt64 . Это может содержать 64 бита, по 1 на каждый квадрат шахматной доски. Этот тип значения пригоден для многих быстрых побитовых операций.
Это хороший учебник по битборду .
Вот несколько примеров из моего собственного шахматного движка C #. Как видно из кода, может потребоваться некоторое время, чтобы обернуть голову с помощью битбордов, но они, как правило, очень быстрые, особенно для оценки положения.
Пример 1 - Определение битборда:
Пример 2 - Инициализация Битборда:
Пример 3 - Генерация хода:
Пример 4 - Расчет балла материала:
Пример 5 - Расчет подвижности куска:
источник