Programmez le \l;robot\u object\bottr; pour qu'il trouve toutes les \l;croix bleues\u object\waypoint; posées au sol. Dès que le robot est sur une croix, elle disparaît. Le principe à utiliser est le suivant:
L'instruction \c;\l;radar\u cbot\radar;\n; détecte un objet. Cette instruction reçoit de 1 à 6 paramètres. Dans notre cas, il suffit de spécifier le premier paramètre, pour détecter toutes les croix:
Le calcul de la direction est obtenu par l'instruction \c;\l;direction\u cbot\direct;(point)\n;, qui retourne l'angle permettant d'orienter le \l;robot\u object\bottr; vers le point spécifié. La coordonnée de l'objet s'obtient simplement avec \c;spot.position\n;. La ligne suivante met donc dans la \l;variable\u cbot\var; \c;dir\n; l'angle correspondant à la direction de la croix:
L'angle obtenu est positif si le point est à gauche, et négatif s'il est à droite. Si la croix à atteindre est à gauche, il faut donner une consigne de vitesse maximale au moteur droite, et une consigne proportionnelle à l'angle au moteur gauche:
Si la croix est droit devant, la direction vaut 0 degrés. Les deux moteurs recevront les consignes 1 et 1, ce qui signifie avancer tout droit à la vitesse maximale. Si la croix est derrière, la vitesse du moteur droite sera -1. Le \l;robot\u object\bottr; effectue donc un demi-tour par la droite, ce qui est bien le comportement souhaité. L'\l;expression\u cbot\expr; \c;1+dir/90\n; donne exactement le résultat souhaité.
Le même raisonnement s'applique lorsque la direction est positive, comprise entre 0 et 180 degrés, et que la croix est à gauche. A vous de trouver les instructions nécessaires.
Pour que ce programme fonctionne, il faut encore déclarer toutes les variables utilisées, au début. \c;spot\n; est de type \c;\l;object\u cbot\object;\n;, alors que \c;dir\n; est de type \c;\l;float\u cbot\float;\n;.