Vous devez programmer le \l;robot\u object\bottr; d'entraînement pour suivre la caisse d'explosifs, mais sans la toucher, car elle est très fragile. Chaque fois que la caisse s'arrête 2 secondes, vous devez être à proximité immédiate (moins de 10 mètres). Après 10 arrêts, la caisse s'approche de la plate-forme d'arrivée, pous vous y ammener.
A chaque arrêt, la caisse vérifie que vous êtes bien là. Si ce n'est pas le cas, le compteur est remis à zéro. Vous devez donc réussir 10 fois consécutives!
Normalement, la caisse est toujours trouvée. Vous pouvez éventuellement ajouter un test \c;\l;if\u cbot\if;\n; pour stopper le \l;robot\u object\bottr; et quitter le programme si la caisse n'est plus là, mais cela devrait être inutile:
Le calcul de la distance jusqu'à la caisse utilise l'instruction \c;\l;distance\u cbot\dist;(p1, p2)\n;. Cette instruction retourne la distance entre deux points \c;p1\n; et \c;p2\n;. Le premier point sera ici la position du \l;robot\u object\bottr;, obtenue simplement avec \c;pos\n;. La position de la caisse est obtenue à travers la description de l'objet \c;target\n; avec l'expression \c;target.position\n;.
\s;\c;len = distance(pos, target.position);
\n;
Si la distance est inférieure à 5 mètres, il faut reculer d'une vitesse proportionnelle à la distance. Plus la distance est petite, plus il faut reculer vivement.
Distance = 5.0 mètres -> vitesse = 0.0
Distance = 2.5 mètres -> vitesse = -0.5
Distance = 0.0 mètres -> vitesse = -1.0
Ceci s'obtient très simplement avec l'\l;expression\u cbot\expr; \c;distance/5-1\n;. Donc, avec un \c;\l;if\u cbot\if;\n;:
Lorsque la caisse est à gauche, \c;dir\n; est positif, compris entre 0 et 180 degrés. L'\l;expression\u cbot\expr; \c;1-dir/90\n; donne une vitesse comprise entre 1 et -1, selon la direction.