TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

Unityで将棋アプリの開発 その10(AIの戦型指定)

作成している将棋アプリにAIの戦型指定を実装した。

実装方法

先日実装した定跡の戦型予想を使って、指定した戦型が定跡の候補手に含まれる場合、その手の採用率と戦型の確率に応じて、次の手を選択する。
そうすることで、指定した戦型になるように誘導できる。

振り飛車を指定すると、振り飛車を指してくれる。

課題

人間側も定跡にある手を指さないと指定した戦型にはならないので、人間側も定跡にある手を指してもらう必要がある。
少し試したところ、振り飛車の登録されている定跡が短く指定した戦型にならない場合があった。
floodagteの棋譜から定跡を作ると振り飛車の定跡の短いという課題がある。
これについては別途検討したい。

UI

戦型を指定するために、簡易的な対局条件の指定画面を作った。

戦型のドロップダウンをタップ(クリック)すると、戦型を選択できる。
選べる戦型は、暫定で適当に登録している。

戦型分類の定義は、より細かく分類されているので、集約している。
例えば、振り飛車の場合、四間飛車三間飛車中飛車、向かい飛車、振り飛車片銀冠、振り飛車銀冠、振り飛車穴熊振り飛車銀冠穴熊が「振り飛車」になる。
(右四間飛車振り飛車にならないのは、りゅうおうのおしごと13巻で予習済みである)

まとめ

AIの戦型を指定できるようにした。
戦型の誘導には、先日実装した定跡の戦型予想を使用しているが、floodagateの棋譜から定跡を作ると振り飛車の定跡が少なくなるため、定跡が外れやすくなる課題が見つかった。
振り飛車の定跡をどう作成するかは別途検討したい。

次は、棋力測定モードを実装したい。