我正在编写国际象棋ai。当我想将位从 king_span 移到左侧时遇到了问题。当我将位移动到 45 个位置时,它工作正常。如果我想将它们移动超过 45 个位置,则输出的位板是相同的,就好像它只移动了 45 个位置一样。为什么它没有进一步移动它们,我怎么可能解决这个问题?我必须为此做第二个 king_span 吗?
感谢您尝试帮助我。
king_span = int("0000000000000000000000000000000000000000000001110000010100000111", 2)
def print_bitboard(bitboard):
board = '{:064b}'.format(bitboard)
for i in range(8):
print(board[8 * i + 0] + " " + board[8 * i + 1] + " " + board[8 * i + 2] + " " + board[8 * i + 3] + " " + board[
8 * i + 4] + " " + board[8 * i + 5] + " " + board[8 * i + 6] + " " + board[8 * i + 7])
print_bitboard(king_span << 45)
输出:
1 1 1 0 0 0 0 0
1 0 1 0 0 0 0 0
1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
--> 位不会进一步移动。下一个位板应如下所示:
1 1 0 0 0 0 0 0--> this bit gets deleted to zero
0 1 0 0 0 0 0 0--> this bit gets deleted to zero too
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0