Exemplo n.º 1
0
def calculate_attacking(board: chess.BaseBoard):
    w_builder = []
    b_builder = []
    for square in chess.SQUARES:
        atks = board.attacks_mask(square)
        mask = chess.BB_SQUARES[square]
        color = bool(board.occupied_co[chess.WHITE] & mask)
        if color:
            w_builder.append(atks)
        else:
            b_builder.append(atks)

    w_atk = [0] * 64
    b_atk = [0] * 64
    for square in chess.SQUARES:
        for msk in w_builder:
            w_atk[square] += 1 if msk & chess.BB_SQUARES[square] else 0
        for msk in b_builder:
            b_atk[square] += 1 if msk & chess.BB_SQUARES[square] else 0

    return {'w': w_atk, 'b': b_atk}