駒のデータ構造
将棋の駒の種類は、「王将・飛車・角行・金将・銀将・桂馬・香車・歩兵」の 8種類。王将と金将以外には「成り」(promotion)があるので、成り駒を含めると全部で 14種類になります。
駒の持ち主(先手・後手)や状態(成駒か否か)の判定をビット演算で高速実行できるようなデータ構造にするのが、コンピュータ将棋の分野では常識といえます。
筆者の場合、1枚の駒の基本情報を 1バイト長に格納しています。
先頭ビットに駒の所有者の判別情報を持たせ、オンならば後手の駒としています。
後続の 3ビットは、それぞれ、「縦、横、斜め」の飛び効きがあるかどうかのフラグで、オンならば飛び効きあり。
残りの 4ビットで駒の種別を表現しています。
例えば、縦と横の飛び効きがある飛車を先手が持っている場合、
先頭ビットは「0」、
飛び効き情報の 3ビットは「110」、
種別を「0110」とすると、次のようになります。
01100110