我正在制作基于比特棋盘的国际象棋引擎,想请教一下 - 假设我为每个棋子都创建了一个比特棋盘,那我该怎么使用它呢?我读了一些关于技巧的东西,比如将兵的比特棋盘向左移7和9位,就可以得到表示它们攻击位置的比特棋盘,但是我该如何使用它呢?
或者说,我该如何使用车的比特棋盘或象的比特棋盘?它们的目标是什么?如果我找到了它们,我该如何将它们与其他棋子的比特棋盘连接起来?我已经搜索了几天了,但没有找到一个充分的答案……感谢。
我正在制作基于比特棋盘的国际象棋引擎,想请教一下 - 假设我为每个棋子都创建了一个比特棋盘,那我该怎么使用它呢?我读了一些关于技巧的东西,比如将兵的比特棋盘向左移7和9位,就可以得到表示它们攻击位置的比特棋盘,但是我该如何使用它呢?
或者说,我该如何使用车的比特棋盘或象的比特棋盘?它们的目标是什么?如果我找到了它们,我该如何将它们与其他棋子的比特棋盘连接起来?我已经搜索了几天了,但没有找到一个充分的答案……感谢。
Bitboards 是一种不同于 2 维数组棋盘或 1 维数组的棋盘表示方法。它们的主要优势在于可以帮助您更快生成一个位置的有效移动,以及更容易使用它们来获取特定的评估结构和参数。
通常每个棋子和双方都有一个位棋盘(共计 12 个),每个颜色有一个(共计 2 个),还有一个包含所有棋子的、一个记录大/小车易位信息的、一个记录下一步轮到哪一方走棋的。通过位运算和位操作,您可以使用预先计算的表格仅通过几个位操作就能计算出一个位置的有效移动。
我建议您查阅这个YouTube 系列视频,其中详细介绍了如何从头开始编写一个 bitboard 棋引擎。
另一个了解概念的好来源是查看Chessprogramming 网站。
希望这有所帮助!虽然这不容易理解,但是使用它们所获得的收益是巨大的。