バグか仕様かわかりませんが、プロロボの分岐命令には変な仕様があります。以下ののコードをご確認ください。実行してみるとよくわかります。
例1 START SENSOR TOUCH_RIGHT,"@NEXT","@ME" BACK HIGH,100 FINISH 例2 START STRAIGHT HIGH,100 SENSOR TOUCH_RIGHT,"@NEXT","@ME" BACK HIGH,100 FINISH 例3 START SENSOR TOUCH_RIGHT,"@NEXT","@ME" BACK HIGH,100 JUMP "@TOP"
例1では右センサが押されるまで@MEすなわち、SENSOR命令に戻るために、プロロボは止まり、右センサが押されると後進します。
ところが、例2では、1秒前進した後も、プロロボは右センサが押されるまで前進します。
さらに例3でははじめは例1のようになりますが、一度右センサが押されると、延々と後進します。
上記はPrbScriptでの例ですが、公式エディタ(新Ver/旧Ver問わず)でもこのようなプログラムを作製し、
転送、プロロボを上記の通り動作させられます。
これは、分岐命令から分岐命令にジャンプすると、直前の動作命令が実行される。という仕様だと推測されます。
また私の調査によれば、直前の動作命令の実行中はセンサ入力を受け付けません。
また、回数繰り返しを抜けた直後に分岐命令を配置し、分岐命令から分岐命令にジャンプすると、直前の動作命令、すなわち、
繰り返しのブロックの最後の動作命令が実行されます。これは少し意味不明です。
しかし、この場合、繰り返し終了が無秩序に呼ばれるような問題は起こりません。
例1のように直前に動作命令がなかった場合は停止します。分岐命令で分岐を静止して待ちたい場合は、以下のように書くと良いでしょう。
START STRAIGHT HIGH,100 BRAKE HIGH,1 SENSOR TOUCH_RIGHT,"@NEXT","@ME" BACK HIGH,100 FINISH
この仕様を見つけて、プロロボにはいろいろな不思議か詰まっていると思いました。普通の感覚だと、そういう仕様にならないと思うんですけど。。。 君もプロロボ探求学の道へ進もう!