所以基本上我正在尝试制作一个国际象棋引擎,并且我开始使用 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 。有一个更好的方法吗 ?我正在努力使国际象棋编程维基最有意义