\b;Exercice
Il faut raffiner du \l;minerai de titane\u object\titanore; en \l;blocs de titane\u object\titan;, puis déposer 2 \l;blocs de titane\u object\titan; sur les plates-formes dont les coordonnées sont:
\c;
	x=10, y=-60
	x=10, y=-65
\n;
\image derrick 8 8;
Le \l;derrick\u object\derrick; extrait automatiquement du minerai de titane, qui ne demande qu'à être ramassé.

\image convert 8 8;
La \l;raffinerie\u object\convert; transforme le minerai en titane. Pour cela, il suffit de déposer le minerai, de reculer et d'attendre.

\b;Idée générale
Répéter 2 fois:
o  Attendre tant qu'on ne trouve pas de minerai.
o  Aller vers le minerai.
o  Prendre le minerai.
o  Aller vers la raffinerie.
o  Déposer le minerai.
o  Reculer de 4 mètres.
o  Attendre tant qu'on ne trouve pas de \l;bloc de titane\u object\titan;.
o  Prendre le bloc de titane.
o  Aller sur une plate-forme.
o  Déposer le titane.

\b;Solution
Une boucle \c;\l;for\u cbot\for;\n; permet de répéter 2 fois l'ensemble des instructions.
Le minerai n'est pas forcément disponible tout de suite. Il faut donc attendre que le derrick le produise, ce qui s'effectue avec une boucle \c;\l;do\u cbot\do;\n; comme suit:
\c;
\s;\c;do
\s;{
\s;	obj = radar(TitaniumOre);
\s;}
\s;while ( obj == null );
\n;
Lorsque la boucle se termine, vous pouvez aller à la position \c;obj.position\n; avec l'instruction \c;\l;goto\u cbot\goto;\n;. Pour prendre le minerai, utilisez \c;\l;grab\u cbot\grab;\n;.
Pour trouver la \l;raffinerie\u object\convert;, il faut utiliser:
\c;
\s;\c;obj = radar(Converter);
\n;
Après avoir déposé le minerai sur la \l;raffinerie\u object\convert;, reculez de 4 mètres avec \c;\l;move\u cbot\move;(-4)\n;.
Une deuxième boucle \c;do\n; permet d'attendre la disponibilité du titane. Attention à limiter la distance maximale du radar à 10 mètres, pour ne pas reprendre un bloc de titane déjà déposé sur une plate-forme:
\c;
\s;\c;do
\s;{
\s;	obj = radar(Titanium, 0, 360, 0, 10);
\s;}
\s;while ( obj == null );
\n;
Les coordonnées \c;x\n; des 2 plates-formes sont toutes égales à 10. En revanche, les coordonnées \c;y\n; varient de -60 à -65. Une bonne idée pour calculer la position est de faire intervenir la variable \c;i\n; de la boucle \c;for\n;, qui prend les valeurs 0 et 1:
\c;
\s;\c;dest.x = 10;
\s;dest.y = -60-5*i;
\n;
A vous de terminer le programme ...

\t;Voir aussi
\l;Exercice précédent\u tremova2;, \l;programmation\u cbot;, \l;types\u cbot\type; et \l;catégories\u cbot\category;.
