0

所以基本上我正在尝试制作一个国际象棋引擎,并且我开始使用 Board 和 bitboard 表示进行编码。但我无法让位板成为 np.uint64 操作的操作数并在位板上应用 np.uint64 操作,这是位板类:

import numpy as np
def create_empty_bitboard()->np.uint64:
    return np.uint64(0)
class bitboard:
    def __init__ (self):
        self=create_empty_bitboard()
    def get_bytes_bitboard(self:np.uint64)->str:
        x=bin(self)[2:].zfill(64)
        return x
    def get_squares_from_bb(self)->list:
        squares=[]
        for i,bit in enumerate(reversed(self.get_bytes_bitboard())):
            if int(bit)!=0 :
                squares.append(i)
        return squares

    def create_empty_bitboard(self):
        return np.uint64(0)

    def setBitHot(self, bit:np.uint64 ):
        return np.uint64( (self | (np.uint64(1) << bit)))

    def clearBit(self, bit:int ):
        return self & ~(np.uint64(1) << np.uint64(bit))

我正在使用 jupyter 笔记本在后台测试所有内容,并在调用时收到此消息

a=bitboard()
a.get_bytes_bitboard()

'bitboard' 对象不能解释为整数

当我单独运行每件作品时,它可以工作:

a=np.uint64(5)
ch=bin(a)
ch=ch[2:].zfill(64)
int(ch, 2)
a=a<<np.uint64(2)
ch=bin(a)
ch=ch[2:].zfill(64)
b=np.uint64(int(ch, 2))
a==b

返回 True 。有一个更好的方法吗 ?我正在努力使国际象棋编程维基最有意义

4

0 回答 0