我正在玩比特板来代表棋盘并检查合法动作。我坚持的事情是计算滑动块攻击中源方格和目标方格之间的占用率。我不想通过查找来做到这一点,所以我试图弄清楚是否有可能在没有查找的情况下获得中间方块的掩码。例如,在以下棋盘中,c4 上有一个 Rook:
8 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0
4 0 0 R 0 0 0 0 0
3 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
a b c d e f g h
给定一个表示空方格(或被占用方格,更简单的方格)的位板和一个伪有效移动 Rf4(Rook 可以从 c4 移动到 f4),如何获得方格 d4-e4 的掩码(不包括源方格和目标方格) ?
我假设,一旦这一点很清楚,垂直移动就会很容易,并且可以通过使用旋转的位板来计算对角线移动。
编辑:位板用 ulong/unsigned int64 表示,每包 8 位代表实际板的一个等级/行。