今度は、Stage2 の改良です。
Strage2は、広いので・・・ランダム走行をしていても、そこそこオブジェクトを収集することはできるのですが、なかなか収集箱に入りません。
ただ、ランダム走行を指をくわえて見ているだけでは、全然得点が増えません。
やっぱり、何らかの作戦(施策)が必要のようです。
(a) オブジェクトを収集したら、(積極的に)収集箱に入れる
(b) Superオブジェクト、Super+オブジェクトを発生させ、それを確実に収集する
やっぱりこの2つでしょう。
まず、(a) ですが・・・
これは、前に出て来た LoadObject の変数を使って、一定以上のオブジェクトを収集(搭載)したら収集箱に行くようにします。収集箱の座標はあらかじめ計測しておきます。Stage2では、ロボットの座標が判るので、収集箱の座標に向かわせるのは結構簡単です。
・・・と思っていたのですが・・・結構邪魔になるのが「障害物」です。名前の通り通行の障害になります。(笑)
でも、とにかく、行きたい座標、ロボットの座標が判るので、ロボットが向かうべき方向が計算できます。早速プログラムに組み入れてみると・・・ちゃんと収集箱に入ります。
お~う やったね!
ところが・・・話はそう簡単ではありません。
ロボットが収集箱に向かっている途中で、クルッと踵を返して離れてしまいました。
何で!?
どうも、「信号ブロック領域」に入ったようです。
ルールを読んだだけでは、何のことか判らなかったのですが、この領域に入るとロボット自身の座標が (0,0) になってしまうようです。
これは、けっこう強敵です。
この「信号ブロック領域」は、マップによって固定なんでしょうか? それとも、毎回変わるのでしょうか? 競技中に移動するってことは無いよなぁ?
とりあえず、ロボットの座標が (x,y)=(0,0) になったら、「信号ブロック領域」に入ったと判断して、座標計算を無視するようにしました。だから、良く行きすぎます。でも、「信号ブロック領域」を出ると、また収集箱に向かいます。
これで、積極的に収集箱に入れるところは、できるようになりました。