「サルかも将棋」 その11 盤面のデータ構造 初級編 ①

将棋ソフトを書くなら「盤面」をなにかのデータ構造に収めないといけない訳ですが、色々選択肢があるわけです。それぞれ一長一短あり、どれが最適!...と言うわけではありません。今回はごく基本的なものを押さえてみます。

「盤面」は 9x9 の格子なので、ごく自然に 9行9列 の行列(Array)に収めることができます。

こんな感じですね。(将棋盤そのまんまね)

KY KE GI KI OH KI GI KE KY
.. HI .. .. .. .. .. KA ..
FU FU FU FU FU FU FU FU FU
.. .. .. .. .. .. .. .. ..
.. .. .. .. .. .. .. .. ..
.. .. .. .. .. .. .. .. ..
FU FU FU FU FU FU FU FU FU
.. KA .. .. .. .. .. HI ..
KY KE GI KI OH KI GI KE KY

格納するデータは数字でも(1=歩、2=桂、等)文字でも(P=Pawn=歩、K=Knight=桂)大して違いはありません。重要なのは「二次元構造」にデータが格納されていることです。

将棋界の座標は右上が原点ですが、こちらの業界では左上か左下が普通原点です。

二次元構造なので「列 = Column」と「行 = Row」でマスを指定する訳ですが... 業界では「0」から数え始めます。(注・1から数える言語もあるけど主流のC/C++/Javaは0からです) 位置指定の順番は[行 = Row][列 = Column]で行います。

[0][0] → 左上 「9一」
[0][8] → 右上 「1一」
[8][0] → 左下 「9九」
[8][8] → 右下 「1九」

...明日に続く...

投稿者: webMaster 投稿日時: 水, 08/24/2011 - 06:03 categories [ ]