駒移動(bitboard)
def shogi.shift_down(b)
bitboardを引数にとり、全てのbitを1rank下げた(BLACK側から見て)bitboardを返す。引数のbitboardには影響はない。
def shigi.shift_2_down(b)
bitboardを引数にとり、全てのbitを2rank下げた(BLACK側から見て)bitboardを返す。引数のbitboardには影響はない。
def shogi.shift_up(b)
bitboardを引数にとり、全てのbitを1rank上にあげるた(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_2_up(b)
bitboardを引数にとり、全てのbitを2rank上にあげるた(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_right(b)
bitboardを引数にとり、全てのbitを1bit右に動かした(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_2_right(b)
bitboardを引数にとり、全てのbitを2bit右に動かした(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_left(b)
bitboardを引数にとり、全てのbitを1bit左に動かした(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_2_left(b)
bitboardを引数にとり、全てのbitを2bit左に動かした(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_up_left(b)
bitboardを引数にとり、全てのbitを左上に動かした(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_up_right(b)
bitboardを引数にとり、全てのbitを右上に動かした(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_down_left(b)
bitboardを引数にとり、全てのbitを左下に動かした(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
def shogi.shift_down_right(b)
bitboardを引数にとり、全てのbitを右下に動かした(BLACK側から見て)bitboardを返す。引数のbitboardに影響はない。
駒成り判定
def can_promote(square, piece_type, color)
指定座標、指定駒種、指定カラーでなることが可能であればTrueそうでなければFalse
def can_move_without_promotion(to_square, piece_type, color)
piece_typeがPAWN,LANCE,KNIGHTについて移動先での死に駒判定を行っている。死に駒になるならFalseそうでなければTrue。
クラス Occupled(object)
Boardクラスの下でbitboardを管理している
def __init__(self, occupied_by_black, occupied_by_white)
self.by_color=black側,white側のbitboardを配列に入れている
self.bits=black,white両方を1つのbitboardで管理している
self.l90=左90度回転のbitboardを管理
self.r45=右45度回転のbitboardを管理
self.l45=左45度回転のbitboardを管理
def __getitem__(self,key)
Occupled[color]そのカラーのbitboardを返す
def ixor(self,mask,color,square)
maskで指定されたbitboardとOccupledで管理しているbitboardを排他bit演算してbitboardを更新させる
def non_occupled(self)
空いている座標をbitを立てたbitboardを返す
def __eq__(self,occupled)
bitboard同士を比較して同じであればTrueを返す
def __ne__(self,occupled)
bitboard同士を比較して異なればTrueを返す。等しければFalseを返す
def __repr__(self)
by_color配列をプリントする(10進数)
print(bd.occupied)
Occupied([2414337516468818170347520, 134022655])