本将棋 内藤九段将棋秘伝 (FC) 攻略/解析

Published on: 2022-01-21

データ構造

盤面

盤面は 9x9 マスの外周に壁を追加した 11x11 マス。レイアウトは以下の通り(マス内の数値はインデックス):

      9  8  7  6  5  4  3  2  1
+---+---+---+---+---+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|  6|  7|  8|  9| 10|
+---+---+---+---+---+---+---+---+---+---+---+
| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 一
+---+---+---+---+---+---+---+---+---+---+---+
| 22| 23| 24| 25| 26| 27| 28| 29| 30| 31| 32| 二
+---+---+---+---+---+---+---+---+---+---+---+
| 33| 34| 35| 36| 37| 38| 39| 40| 41| 42| 43| 三
+---+---+---+---+---+---+---+---+---+---+---+
| 44| 45| 46| 47| 48| 49| 50| 51| 52| 53| 54| 四
+---+---+---+---+---+---+---+---+---+---+---+
| 55| 56| 57| 58| 59| 60| 61| 62| 63| 64| 65| 五
+---+---+---+---+---+---+---+---+---+---+---+
| 66| 67| 68| 69| 70| 71| 72| 73| 74| 75| 76| 六
+---+---+---+---+---+---+---+---+---+---+---+
| 77| 78| 79| 80| 81| 82| 83| 84| 85| 86| 87| 七
+---+---+---+---+---+---+---+---+---+---+---+
| 88| 89| 90| 91| 92| 93| 94| 95| 96| 97| 98| 八
+---+---+---+---+---+---+---+---+---+---+---+
| 99|100|101|102|103|104|105|106|107|108|109| 九
+---+---+---+---+---+---+---+---+---+---+---+
|110|111|112|113|114|115|116|117|118|119|120|
+---+---+---+---+---+---+---+---+---+---+---+

マスの列挙は原則として昇順に行われる。

マス 99 は無効値として使われることがある。

マスはインデックスでなく x, y 座標で表されることもある。
その場合、x = index % 11, y = index / 11 となる。たとえば7四のマスは (x,y) = (3,4) となる。

盤面はプレイヤー、COMそれぞれについて別個に管理している。盤面上の値の意味は以下の通り:

意味
0空白
1プレイヤー 玉
2プレイヤー 飛
3プレイヤー 角
4プレイヤー 金
5プレイヤー 銀
6プレイヤー 桂
7プレイヤー 香
8プレイヤー 歩
9プレイヤー 龍
10プレイヤー 馬
12プレイヤー 成銀
13プレイヤー 成桂
14プレイヤー 成香
15プレイヤー と金
16COM 玉
17COM 飛
18COM 角
19COM 金
20COM 銀
21COM 桂
22COM 香
23COM 歩
24COM 龍
25COM 馬
27COM 成銀
28COM 成桂
29COM 成香
30COM と金
99無効値 (壁)

手駒

長さ 7 の配列。インデックスと駒種の対応は以下の通り:

駒種
0
1
2
3
4
5
6

指し手

駒打ちの指し手は移動元として特殊な値を使うことで表現する:

意味
201COMが歩を打つ手
202COMが香を打つ手
203COMが桂を打つ手
204COMが銀を打つ手
205COMが金を打つ手
206COMが角を打つ手
207COMが飛を打つ手
213プレイヤーが飛を打つ手
214プレイヤーが角を打つ手
215プレイヤーが金を打つ手
216プレイヤーが銀を打つ手
217プレイヤーが桂を打つ手
218プレイヤーが香を打つ手
219プレイヤーが歩を打つ手