Я хочу запрограммировать шахматный движок с использованием битбордов.Поскольку я не очень знаком с битбордами, я сначала пытаюсь понять, как их использовать.Я написал небольшую функцию, которая должна печатать на доске.Вот где я наткнулся на проблему.Кажется, моя функция правильно распечатывает ранги, но неправильно распечатывает файлы.
def print_bitboard(bitboard):
board = str(bin(bitboard)).zfill(64)
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])
bitboard1 =
int("0000000000000000000000000000000000000000000000001111111100000000", 2)
# 2nd rank
bitboard2 =
int("1000000010000000100000001000000010000000100000001000000010000000", 2)
# file A
print_bitboard(bitboard1)
print("")
print_bitboard(bitboard2)
Результат:
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 0 b
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
0 b 1 0 0 0 0 0 ----> wrong, should be: 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0