国际象棋引擎中的滑块生成

所以我在解决问题时遇到了一些麻烦。 我目前正在用Java编写一个基于棋盘的国际象棋引擎(它一直在计算一切)。 到目前为止,所有的棋子/王/骑士移动都按预期工作,没有错误。

我需要帮助理解的是滑动片移动生成。 我已经为每个方块/块生成了一系列空板移动。 根据我目前的理解,我还需要开发一个包含每个平方的每个可能占用的数组 - 然后以某种方式根据各种方法查找该数组。

这种想法是否正确? 是从0到2 ^ 63中选取每个数字,然后用该方块的移动位图板进行异化,然后用某种方法(魔术/旋转的位图板)来存储该数组,以初始化数组并以相同的方式访问它运行?

伪代码和解释非常感谢。 (顺便说一句,我正在使用>>>)。


有许多方法可以产生不同的性能和复杂度的棋盘滑动棋子。 其中很多都列在这里。

可能最快也是最常见的是魔术棋盘,它使用了“魔术”预先计算的值与多个棋盘的乘法,以便一次产生在所有四个方向上的可能棋步。 缺点是它使用非常大的查找表。 这可能不应该是你的第一个实现,因为它更复杂。

梗阻差异和双曲精华并不比魔法纸板慢,但更容易实施。

更简单也更慢的是dumb7fill,这是一个循环,可以在任何可能的方向上执行,而不需要任何查找表。

链接地址: http://www.djcxy.com/p/84673.html

上一篇: Sliding Piece Generation in Chess Engine

下一篇: Chess Validation Move input wanted