40 lines
2.3 KiB
Plaintext
40 lines
2.3 KiB
Plaintext
\b;Exercice
|
|
Déplacez le cube de \l;titanium\u object\titan; sur la plate-forme d'arrivée. On ne connaît pas la position du titanium. En revanche, on sait que la plate-forme est à la position x=10 et y=-60.
|
|
|
|
\b;L'instruction \c;goto\n;
|
|
Pour résoudre ce problème, nous allons utiliser l'instruction \c;\l;goto\u cbot\goto;\n;. Cette instruction permet d'atteindre très simplement n'importe quelle position, en spécifiant ses coordonnées. Le robot tourne automatiquement dans la bonne direction et avance. Il évite même les obstacles éventuels!
|
|
|
|
En résumé, les différentes manières de déplacer un robot sont donc:
|
|
|
|
\s;\c;motor(left, right)\n;
|
|
Pour commander directement les moteurs, fraction de seconde après fraction de seconde.
|
|
|
|
\s;\c;move(distance)\n; et \c;turn(angle)\n;
|
|
Pour avancer d'une longueur précise, ou tourner d'un angle donné. Les déplacements sont relatifs. Par exemple, on avance de 100 mètres par rapport à la position actuelle du robot.
|
|
|
|
\s;\c;goto(position)\n;
|
|
Pour atteindre facilement une position absolue donnée.
|
|
|
|
\b;Solution
|
|
Pour trouver le titanium, utilisez l'instruction \c;\l;radar\u cbot\radar;(Titanium);\n;. La troisième ligne teste si le titanium est trouvé. Dans cet exercice, c'est inutile, mais il vaut mieux prendre l'habitude de faire ce genre de test systématiquement:
|
|
\c;
|
|
\s;object item;
|
|
\s;item = radar(Titanium);
|
|
\s;if ( item == null ) return;
|
|
\s;goto(item.position);
|
|
\n;
|
|
La variable \c;item\n; est de type \c;\l;object\u cbot\object;\n;. Pour connaître la position de l'objet décrit par la variable, il faut donc écrire \c;item.position\n;.
|
|
|
|
Pour prendre le titanium, il suffit d'effectuer \c;\l;grab\u cbot\grab;()\n;, sans aucun paramètre.
|
|
Pour déposer le titanium, il suffit d'effectuer \c;\l;drop\u cbot\drop;()\n;, sans aucun paramètre.
|
|
|
|
Les coordonnées de la plate-forme d'arrivée sont connues: x=10 et y=-60. Il faut donc déclarer une \l;variable\u cbot\var; de type \l;point\u cbot\point;, puis lui assigner les bonnes coordonnées. Cette variable pourra ensuite être donnée comme argument à l'instruction \c;\l;goto\u cbot\goto;\n;.
|
|
Remarque: la coordonnée \c;z\n; peut être ignorée dans le cas d'un robot qui ne vole pas!
|
|
|
|
A vous de terminer le programme ...
|
|
|
|
\key;\key help;\norm; permet de revoir ces instructions en tout temps!
|
|
|
|
\t;Voir aussi
|
|
\l;Exercice précédent\u tfollow1; et \l;programmation\u cbot;.
|