Des \l;bornes\u object\exchange; d'informations sont placΘes le long d'un chemin. Lorsque le \l;robot\u object\bottr; est proche d'une borne, il peut lire les informations qu'elle contient. Les informations contenues dans chaque borne donnent la direction et la distance jusqu'α la borne suivante.
\b;Principe
RΘpΘter toujours :
o Lire la direction dans la \l;borne\u object\exchange;.
o Lire la longueur dans la \l;borne\u object\exchange;.
o Si rien n'a ΘtΘ lu, stopper.
o Tourner dans la direction obtenue.
o Avancer de la longueur obtenue.
La rΘpΘtition infinie s'effectue avec une boucle \c;\l;while\u cbot\while;\n;. Les instructions entre \c;{ }\n; sont rΘpΘtΘes α l'infini, ou jusqu'α l'exΘcution de l'instruction \c;break\n;.
\s;\c; while ( true )
\n;
La lecture de la \l;borne\u object\exchange; s'obtient avec \c;\l;receive\u cbot\receive;("name");\n;. Ceci n'est Θvidemment possible que lorsque le \l;robot\u object\bottr; est proche de la borne. L'orientation du robot n'a pas d'importance.
Il faut dΘfinir deux \l;variables\u cbot\var; \c;dir\n; et \c;len\n; :
\s;\c; float dir, len;
\n;
Et ensuite leur assigner la direction α prendre et la longueur α avancer :
\s;\c; dir = receive("Direction");
\s;\c; len = receive("Length");
\n;
Une variable \c;float\n; peut prendre une valeur spΘciale appelΘe \c;\l;nan\u cbot\nan;\n;. Ceci indique que la variable ne contient pas un nombre.
Lorsqu'il n'y a plus de \l;borne\u object\exchange;, α la fin du parcourt, ou si le \l;robot\u object\bottr; dΘvie de sa trajectoire et que la borne est trop loin, les deux variables \c;dir\n; et \c;len\n; prennent cette valeur. Il est donc possible de tester cette valeur avec un \c;\l;if\u cbot\if;\n; pour stopper le programme si nΘcessaire.
\s;\c; if ( dir == nan ) break;
\n;
Si la \l;borne\u object\exchange; a ΘtΘ lue avec succΦs, il faut tourner dans la bonne direction avec :
\s;\c; turn(dir);
\n;
Puis avancer avec :
\s;\c; move(len);
\n;
\b;Remarque
En cliquant sur une \l;borne\u object\exchange; pour la sΘlectionner, vous pouvez voir les paramΦtres qu'elle contient. Dans cet exercice, chaque borne contient deux informations appelΘes \c;"Direction"\n; et \c;"Length"\n;.
\b;Pour tuer le temps
N'oubliez pas que, pendant que le robot avance de borne en borne, vous pouvez changer de vue en cliquant sur l'ic⌠ne \button 13; ou en appuyant sur la barre d'espace. Vous pouvez Θgalement sΘlectionner le \l;cosmonaute\u object\human; et suivre le robot. Mais attention, dans ce cas, α ne pas le heurter, ce qui le ferait dΘvier inΘxorablement de sa trajectoire !
\key;\key help;\norm; permet de revoir ces instructions en tout temps !
\t;Voir aussi
\l;Commandes\u command; et \l;programmation\u cbot;.