これは単なる原則です。攻撃ビットボード (ナイト、ビショップ、またはポーン) の 1 つが変更されたときに、1 行目を繰り返さなくても、攻撃されたビットボードが更新されるようにしたいと考えています。これは可能ですか? これを行う最良の方法は何ですか?ボーグクラスの方法で、または単に辞書の動作を使用して:
攻撃された = pawn_attacks | 騎士の攻撃 | bishop_attacks
pawn_attacks = (1 << (ポーン + 9)) | (1<< (ポーン + 7))
これは、攻撃の 1 つが変更されたときに透過的または自動的に機能しません。攻撃の結果の下は常に 1 です。
class Test(object):
def __init__(self):
self.pawn_attacks = 0
self.knight_attacks = 0
self.bishop_attacks = 0
@property
def attacked(self):
return self.pawn_attacks | self.knight_attacks | self.bishop_attacks
test = Test()
test.pawn_attacks = 1
print test.attacked
test.pawn_attacks = 2
print test.attacked