Cet exercice est presque semblable au prΘcΘdent. Le but est maintenant de dΘplacer le \l;robot\u object\bottr; sans interruption, jusqu'α l'arrivΘe.
\b;Remarque
Le labyrinthe n'est pas le mΩme, mais cela ne devrait pas avoir d'importance, puisque le programme s'adapte α ce qu'il voit !
\image tlaby1 10 10;
\b;Principe
Il faut ajouter une boucle infinie \c;\l;while\u cbot\while;\n;, qui englobe tout le programme :
\s;\c;while ( true )
\s;{
\s; \n;Si rien devant, avancer\c;
\s; \n;Si rien α gauche, quart de tour α gauche puis avancer\c;
\s; \n;Si rien α droite, quart de tour α droite puis avancer\c;
\s;}
\n;
A l'intΘrieur du \c;while\n;, il faut remplacer les \c;return\n; par des \c;\l;continue\u cbot\continue;\n;. En effet, \c;return\n; quitte le programme, ce qui n'est pas souhaitΘ ici. En revanche, \c;continue\n; recommence la boucle au dΘbut :
\s;\c;if ( front == null )
\s;{
\s; move(5);
\s; continue;
\s;}
\n;
\b;Rappel
Le programme de l'exercice prΘcΘdent Θtait :
\c;
\s;object front, left, right;
\s;
\s;front = radar(Barrier, 0, 45, 0, 5);
\s;left = radar(Barrier, 90, 45, 0, 5);
\s;right = radar(Barrier, -90, 45, 0, 5);
\s;
\s;if ( front == null )
\s;{
\s; move(5);
\s; return;
\s;}
\s;if ( left == null )
\s;{
\s; turn(90);
\s; move(5);
\s; return;
\s;}
\s;if ( right == null )
\s;{
\s; turn(-90);
\s; move(5);
\s; return;
\s;}
\n;
\b;Aide
Si vous avez besoin d'aide, consultez la documentation des instructions \c;\l;radar\u cbot\radar;\n;, \c;\l;move\u cbot\move;\n; et \c;\l;turn\u cbot\turn;\n;.
\key;\key help;\norm; permet de revoir ces instructions en tout temps !
\t;Voir aussi
\l;Commandes\u command; et \l;programmation\u cbot;.