将棋をぼちぼち製作開始

池さんの「れさぴょん」とかソースが公開されてるものもあるし、CSA的にライブラリを利用しても、独自に改良すればOKらしいけど、
まずは一から作りたいので、
歩だけの将棋を作ってみました。
駒得の評価関数で1手のみ先読みしてます(先読みとは言えない)
とっても持ち駒は増えません(^^;


池さんが、コンピュータ将棋はむしろルールどおりに指せるように作るまでが「かなりつらい作業」みたいに書いてましたし、今後、ライブラリに逃げるかもしれませんが、しばらくこの方向で進めてみます(弱


C:\shogidev>bcc32 shogi.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
shogi.cpp:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
C:\shogidev>shogi

9 8 7 6 5 4 3 2 1

                                                        • +
・ ・ ・ ・v王 ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
v歩v歩v歩v歩v歩v歩v歩v歩v歩
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
歩 歩 歩 歩 歩 歩 歩 歩 歩
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ 王 ・ ・ ・ ・
                                                        • +

move:1716 歩 [0]move:2726 歩 [0]move:3736 歩 [0]move:4746 歩 [0]move:5756 歩 [0]
move:6766 歩 [0]move:7776 歩 [0]move:8786 歩 [0]move:9796 歩 [0]move:1716 歩
9 8 7 6 5 4 3 2 1

                                                        • +
・ ・ ・ ・v王 ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
v歩v歩v歩v歩v歩v歩v歩v歩v歩
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ 歩
歩 歩 歩 歩 歩 歩 歩 歩 ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ 王 ・ ・ ・ ・
                                                        • +

move:1314v歩 [0]move:2324v歩 [0]move:3334v歩 [0]move:4344v歩 [0]move:5354v歩 [0]
move:6364v歩 [0]move:7374v歩 [0]move:8384v歩 [0]move:9394v歩 [0]move:1314v歩
9 8 7 6 5 4 3 2 1

                                                        • +
・ ・ ・ ・v王 ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
v歩v歩v歩v歩v歩v歩v歩v歩 ・
・ ・ ・ ・ ・ ・ ・ ・v歩
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ 歩
歩 歩 歩 歩 歩 歩 歩 歩 ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ 王 ・ ・ ・ ・
                                                        • +

move:1615 歩 [0]move:2726 歩 [0]move:3736 歩 [0]move:4746 歩 [0]move:5756 歩 [0]
move:6766 歩 [0]move:7776 歩 [0]move:8786 歩 [0]move:9796 歩 [0]move:1615 歩
9 8 7 6 5 4 3 2 1

                                                        • +
・ ・ ・ ・v王 ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
v歩v歩v歩v歩v歩v歩v歩v歩 ・
・ ・ ・ ・ ・ ・ ・ ・v歩
・ ・ ・ ・ ・ ・ ・ ・ 歩
・ ・ ・ ・ ・ ・ ・ ・ ・
歩 歩 歩 歩 歩 歩 歩 歩 ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ 王 ・ ・ ・ ・
                                                        • +

move:2324v歩 [0]move:3334v歩 [0]move:4344v歩 [0]move:5354v歩 [0]move:6364v歩 [0]
move:7374v歩 [0]move:8384v歩 [0]move:9394v歩 [0]move:1415v歩 [100]move:1415v歩
9 8 7 6 5 4 3 2 1

                                                        • +
・ ・ ・ ・v王 ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
v歩v歩v歩v歩v歩v歩v歩v歩 ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・v歩
・ ・ ・ ・ ・ ・ ・ ・ ・
歩 歩 歩 歩 歩 歩 歩 歩 ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ 王 ・ ・ ・ ・
                                                        • +

move:2726 歩 [-100]move:3736 歩 [-100]move:4746 歩 [-100]move:5756 歩 [-100]
move:6766 歩 [-100]move:7776 歩 [-100]move:8786 歩 [-100]move:9796 歩 [-100]move:272
6 歩

どの歩を動かしても評価関数に変化は無いので、最後の歩を両者とも進めている(=局面評価の確定後の位置)
もし位取りの評価を与えれば、満遍なく全体の歩を前進させるはずである。
なお、1筋の歩を後手が取ったことで、評価関数が後手=100、先手=-100に変化している。
先手は、駒を進めることで後手にとられることに気づいていない。
それを理解するには「2手読む」必要がある。