今、数独を解くソフトを作成中なのですが、解くのを途中で中断させたり、再開させたりしたいと考えています。
そこで、ボタン命令で中断・再開の操作ができるようにしたいのですが、下のような不具合が出るのが思考実験でわかりました。
>>>
button gosub "STOP",*HATA_1
button goto "RESTART",*HATA_2
repeat
処理A
処理B
処理C
loop
*HATA_1
stop
*HATA_2
return
<<<
とすると、たとえば、処理Aを実行している最中に*HATA_1に飛んでしまうこともありますよね。
ここで、たとえば処理Cがそれまでの結果を画面に反映する処理だったとします。
私としては、処理Cが終了したら*HATA_1に飛ぶようにしたいのですが、一体どうしたらいいのでしょうか。
ボタンの無効化も考えましたが、たぶんボタンが異常なほどにチカチカすることも考えられます。
処理A、B、Cそれぞれに対応する変数を定義して、たとえば今処理Aならimadoko=1でBならimadoko=2といった調子で定義して、*HATA_1の後の処理で、処理Aの途中と、処理B、Cを完了してからSTOP命令を実行することも考えましたが、煩雑になりそうです。
苦肉の策でこんなもの考えましたが・・・
>>>
button gosub "STOP",*とまれ
button goto "RESTART",*またうごけ
repeat
処理A
処理B
処理C
if order = "止まれ" : gosub *一時停止中
loop
*とまれ
order = "止まれ"
return
*一時停止中
stop
*またうごけ
order = "うごいてよし"
return
<<<
なんか、もっと簡単にする方法はないですか?