駒のデータ構造

将棋の駒の種類は、「王将・飛車・角行・金将・銀将・桂馬・香車・歩兵」の 8種類。
王将と金将以外には「成り」(promotion)があるので、成り駒を含めると全部で 14種類になります。

駒の持ち主(先手・後手)や状態(成駒か否か)の判定をビット演算で高速実行できるようなデータ構造にするのが、コンピュータ将棋の分野では常識といえます。

筆者の場合、1枚の駒の基本情報を 1バイト長に格納しています。

先頭ビットに駒の所有者の判別情報を持たせ、オンならば後手の駒としています。

後続の 3ビットは、それぞれ、「縦、横、斜め」の飛び効きがあるかどうかのフラグで、オンならば飛び効きあり。

残りの 4ビットで駒の種別を表現しています。

例えば、縦と横の飛び効きがある飛車を先手が持っている場合、
先頭ビットは「0」、
飛び効き情報の 3ビットは「110」、
種別を「0110」とすると、次のようになります。

01100110