作成している将棋アプリに実戦寄せ問題を実装した。
アプリを継続利用してもらうには、飽きずに上達につながるコンテンツが必要だと思うので、序盤、中盤、終盤それぞれ棋力を鍛えられる内容を盛り込みたいと思っている。
序盤については、定跡の戦型予想と、AIの戦型指定を実装した。
Unityで将棋アプリの開発 その9(定跡と戦型予想) - TadaoYamaokaの開発日記
Unityで将棋アプリの開発 その10(AIの戦型指定) - TadaoYamaokaの開発日記
中盤については、互角局面集を実装しようと思っている。
今回は、終盤用として、実戦寄せ問題を実装した。
自分は初級者なので、プロの対局などを見ていて、評価値は優勢でもどう寄せれば勝てるか分からなかったりする。
そのため、適度な難易度の問題集で終盤の寄せ方の練習ができるようにしたい。
必至局面の抽出
はじめ、floodgateの棋譜から必至の局面を抽出して、それを問題集にすることを試してみた。
以下の方法で、必至局面を抽出した。
- 評価値がmateになった局面から1手戻って、王手がかかっていない
- もう1手戻って王手がかかっていない
上記の条件で候補の局面を抽出した後、1手指した後の相手の局面で、評価値がマイナスのmate(王手はかかっていないので即詰みではない=必至)になるか検証した。
抽出した局面でAIとテスト対局したところ、既に駒割りでかなり差がついている局面が多く、必至をかけなくても簡単に勝ててしまうものがほとんどだった。
この抽出方法は、適切ではなかった。
優勢だがパスすると大きく評価が下がる局面の抽出
次に、mateの局面から2手ずつ戻って、評価値がほぼ勝ちだが、1手パスすると大幅に評価値が下がる局面を抽出するようにした。
これにより、間違わずに寄せれば勝ちだが、適当に指すとすぐに逆転される局面が抽出できる。
実際に自分でテストしてみると、自分の棋力ではミスして逆転される局面も多く、緊張感のある局面が抽出できたように思う。
難しすぎると練習にならないので、パスしたあとの評価値の減り具合で難易度調整したい。
抽出できた局面の例
間違えて逆転された(@´ω`@)
ヒント機能が有効になっているので、答え合わせもできる。