bitboard盤面更新処理 prev Page next Page

コマの移動処理

チェス、将棋のようにコマが移動する場合、移動元を 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
3,481 page views, page owner : びびすけ
2006/10/01 23:00 modified by びびすけ

( page views in recent 7 days)