|
|
コマの移動処理チェス、将棋のようにコマが移動する場合、移動元を Bitboard src; 移動先を Bitboard dst; とすれば、コマtype の状態 Bitboard bitboard_type の移動処理は以下のように記述できる。 bitboard_type ^= src; // 移動元のマスを空欄に bitboard_type |= dst; // 移動先のマスにコマを置く コマ type2 が取られる場合は、移動先のマスを空欄にするだけでよい bitboard_type2 ^= dst; // 移動先のマスを空欄に オセロの石反転処理黒の着手位置を Bitboard m; それにより反転する位置を Bitboard rev; とすれば、盤面の更新処理は以下のように記述できる。 bitboard_black ^= m | rev; bitboard_white ^= rev; 配列で盤面を表した場合、反転するコマの数に比例して反転処理のコストがかかるが、 bitboard を用いれば、複数マスを同時に処理できるので、上記のように反転するコマ数に依存せず、一定コストで処理を行うことができる。 これを ビットパラレル性 と呼ぶ 反転パターンを取得する方法については bitboard反転パターン取得 参照 このページへのトラックバックURL: http://vivi.dyndns.org/wtb/256
|