しつこくアルゴリズム。
1.ランナーが同じ高さにいて、地続きの場合、ランナーのほうへ行く。 2.ランナーのいる高さに行ける場合、そこへ向かう。 3.ランナーのいる高さに行けない場合、行ける場所から優先順位の高い位置へ向かう。 |
次はランナーと同じ高さに行けない場合のことを考えます。
この場合は、ランナーの高さより高いところに行こうとします。
最優先はランナーの1段上(図のマル1)です。
その段に行けない場合はランナーより2段上、(図のマル2)
そこもダメなら3段上…となります。
ランナーより上の段に行けない場合は、ランナーの1段下を目指します。(図のマル6)
そこに行けない場合はランナーの2段下、そこもダメなら3段下…です。
ためしにマル1の下のコンクリをブランクにすると、ロボットはマル2に向かうようになります。
同様にマル2の下のコンクリをブランクにするとマル3に向かうようになります。
じゃあ優先順位が同じ高さに2か所行ける場所があるならばどうかといいますと、
・ロボットから見て真上、真下が最優先。
・真上真下に行ける場所がない時は左側優先。
となります。ランナーの高さに行けるときは距離優先だったのに対し、
今度は左側優先です。間違えないようにしましょう。
↑左をエディット。ロボットは両方左へ。ロボットは左側が好き。
↑ランナーの高さに行けるときとは違うことに注意。
ロボットと行きたい先が重なった場合、ロボットは下を入力した動き(はしごを降りる、バーから手を離す)をします。
まとめ
ランナーの高さにいけない場合、
・ランナーより高い位置に行きたがる。
・ランナーより低い位置にしか行けない場合、そのいちばん高いところへ行きたがる。
・行きたい高さに行ける場所が複数ある場合、ロボの真下が優先。
・真下以外の複数の場合、左側に行ける場所があればそっちへ。なければ右へ。
・ロボがいる場所と、その行きたい先が同じの場合、下に降りる動作をする。