我对位板和位操作了解不多,我从 Github 获得了一些位板国际象棋引擎的例子。我想知道是否有人可以帮助我解决问题。
我怎样才能确定攻击国王的确切棋子?
我在 position.js 的 isKingInCheck 函数中有一个示例,它仅识别国王何时被攻击(甚至识别棋子是棋子还是象等),但我需要确切知道正在攻击的棋子(位置)国王。
我相信可以创建一个通用的攻击掩码函数,如下面的函数。问题是我不知道如何从在 position.js 文件中声明的预制位板上单独获取每个部件(及其在游戏中的位置)。
Chess.Position.makePawnAttackMask = function(color, pawns) {
var white = (color === Chess.PieceColor.WHITE);
var attacks1 = pawns.dup().and_not(Chess.Bitboard.FILES[0]).shiftLeft(white ? 7 : -9);
var attacks2 = pawns.dup().and_not(Chess.Bitboard.FILES[Chess.LAST_FILE]).shiftLeft(white ? 9 : -7);
return attacks1.or(attacks2);
};
任何人都知道我怎样才能做到这一点?