囲碁定石トレーニングの修正版をアップした。
前のバージョンに比べて、入力した手を戻す機能が向上した。
<修正前>
・直前の分岐に戻るだけ。それより前の分岐には戻れない。
・戻れるのは黒の分岐のみ。
<修正後>
・ボタンを連続で押すことで、分岐をさかのぼることができる。
・白の分岐にも戻れる。白の分岐を含むかは選択可能。
修正前は、「戻る用のスナップショットをひとつだけ取得し、戻るボタンを押したらそれを反映させる」という実装だった。
スナップショットをたくさん取得すれば分岐をさかのぼることができるが、それだとリソースの負荷が大きくなる。
参考のため棋譜再生プログラムのソースを調べたところ、「入力履歴を作成し、戻ったときは初手から入力して盤面を再現する」という実装だった。
100手目から99手目に戻った場合、プログラムは1手目から99手目までを入力して盤面を再現することになる。
(「100手目を盤面から消すだけでいい」と思うかも知れないが、それだと取られた石を再現できないし、コウ判定もできない)
自分のプログラムも、同じ方式で戻る機能を実装することにした。
定石用データなので、手数はそれほど多く無い。
初手からの再現も、盤面表示せずにデータをいじるだけなので大した負荷にはならない。
以下の点を考慮する必要があったので、少し複雑な実装になった
・「前の手」ではなく、「前の分岐」に戻るため、分岐データも含める必要がある
・白の分岐時の入力は、プログラムによるランダム選択と、ユーザーによる選択の2通りある
特に白の分岐時の履歴作成では苦労した。
これで使い勝手が良くなったと思うが、実際にトレーニングを続けてみないとわからないな。
スポンサーサイト