Dumb7Fill 女王和车攻击似乎跳过 "ours" 件

Dumb7Fill queen and rook attacks seem to jump over "ours" pieces

我正在尝试玩国际象棋编程,目前正在为 BitBoards 编程。一切都很好,除了 Dumb7Fill(展开的循环)生成允许女王和车跳过他们的棋子的攻击。下面是执行的痕迹。我在这里做错了什么? *Attack 的代码直接取自 wiki 页面,这意味着将移动扩展为北、南、西和东移动的攻击。这是在 Java.

中编程的
    long rooks = (One << index);
    long empty = ~rep.getOccupancy();
    long attacks = southAttack(rooks, empty)
            | northAttack(rooks, empty)
            | eastAttack(rooks, empty)
            | westAttack(rooks, empty);
    long actual = (attacks & rep.getCurrentPosition(getColor().inverse()));

ROOK ATTACKS w
rooks w 

. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
1 . . . . . . . 
n: 1

empty w 
. . . . . . . . 
1 . . . . . . . 
1 1 1 1 1 1 1 1 
. 1 1 1 1 1 1 1 
. 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 
1 . . . . . . . 
. . . . . . . . 
n: 1fffefeff0100

theirs w 
1 1 1 1 1 1 1 1 
. 1 1 1 1 1 1 1 
. . . . . . . . 
p . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
n: fffe000100000000

ours w 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
P . . . . . . . 
. . . . . . . . 
. 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 
n: 100feff

attacks from Dumb7Fill w 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
1 . . . . . . . 
1 . . . . . . . 
1 . . . . . . . 
. . . . . . . . 
. . 1 . . . . . 
n: 101010004

actual attack w 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
1 . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
n: 100000000

原来我误解了 wiki 页面上的算法。正如我对它们的解释,攻击包括移动一个,是攻击而不是移动。对于移动,需要使用遮挡填充。