|
|
前述代码对开局库中的每一行进行了处理,最后返回其中一行中的 4 个字节作为结果:
return arr[inx].slice (len, len + 4).split ("");
这个结果,就代表一种着法。也就是说,每一行是双方着法的交替,其中每 4 个数字就代表一种着法。
另一方面,从人工智能运作代码的返回值:
return [man.x, man.y, val.x, val.y];
可以了解,这四个数字分别是某个位置的 x 坐标,y 坐标,以及另一个位置的 x坐标,y 坐标。
既然是一种着法,那就容易猜到,这是棋子的起始坐标和终止坐标。
好的,现在把开局库的第一行拿出来研究一下:
774770627967807089797276666512422625000119270171
按照每 4 字节一组,把它分解成着法序列。
如果左上角的坐标是 (0, 0),那么 (7, 7) 就是右侧红炮的位置,而 (4, 7) 就是当头炮的位置。因此,7747 就是 炮二平五。
7747 炮二平五
7062 马 8进 7 ——(7, 0)是黑方 8路的马,(6, 2) 是跳正马的位置
7967 马二进三 ——(7, 0)是红方二路的马,(6, 7) 是跳正马的位置
8070 车 9平 8 ——(8, 0)是黑方 9路的车,(7, 0) 是出直车的位置
8979 车一平二 ——(8, 9)是红方一路的车,(7, 9) 是出直车的位置
7276 炮 8进 4 ——(7, 2)是黑方 8路的炮,(7, 6) 是进炮封红车的位置
6665 兵三进一 ——(6, 6)是红方三路的兵,(6, 5) 是进兵走到河口相位的位置
1242 炮 2平 5 ——(1, 2)是黑方 2路的炮,(4, 2) 是黑方当头炮(中相)的位置
2625 兵七进一 ——(2, 6)是红方七路的兵,(2, 5) 是进兵走到河口相位的位置
0001 车 1进 1 ——(0, 0)是黑方 1路的车,(0, 1) 是出横车的位置
1927 马二进三 ——(1, 9)是红方八路的马,(2, 7) 是跳正马的位置
0171 车 1平 8 ——(0, 1)是黑方1路横车,(7, 1) 是横车平到 8 路的位置,形成霸王车
这样,开局库的结构也就完全清楚了。
|
|