Mass - Mias TdaoRW2 Info P4 Vous testerez et sauvegarderez au fur et à mesure des exercices les robots dont voici les spécifications : Exo1 : MoveBot Voici le code (sur 2 colonnes) d'un robot que nous nommerons MoveBot : x 150 > -2 * 1 + speedx' sto | y 150 > -2 * 1 + speedy' sto | Main: x 50 < Xmin if | Xmin: random 3 mod 1 + speedx' sto return y 50 < Ymin if | Ymin: random 3 mod 1 + speedy' sto return x 250 > Xmax if | Xmax: random 3 mod 1 + chs speedx' sto return y 250 > Ymax if | Ymax: random 3 mod 1 + chs speedy' sto return Main jump - Quel est le rôle des 2 premières lignes de code ? - Donnez une description en langage courant du comportement de MoveBot. - Réécrivez ce code en utilisant les interruptions, la boucle principale devenant : Main: Main jump Exo2 : CollBot Vu la taille des robots et celle de l'arène, les risques de collision avec un robot ennemi sont élevés. Si la tourelle est dirigée vers l'adversaire, le registre RANGE, lors d'une collision, enregistre une distance de l'ordre de 20 (+/- 10) unités de longueur. - Programmez le robot CollBot, dont le code ne comporte qu'une routine d'interruption gérant les collisions comme suit : tant qu'il y a collision, si le range est de l'ordre de 20 (+/- 10), alors tirer sinon tourner la tourelle d'un angle A. - Justifiez la valeur que vous donnez à l'angle A. - Précisez le sous programmer tirer. L'objectif étant de neutraliser le robot adverse, on peut penser à supprimer son champ protecteur. Comment ? Quelle est ensuite l'arme la plus appropriée pour causer le maximum de dégâts à l'adversaire ? Exo3 : AimBot Voici le code (sur 2 colonnes) d'un robot que nous nommerons AimBot : OhOh range' setint | OhOh: inton | doppler -12 arctan | dup Main: | aim + aim' store aim 7 + aim' store | 1fire' store Main jump | aim swap - aim' store | aim 7 - aim' store | rti - Donnez une description en langage courant du comportement de AimBot. - Expliquez le plus précisément possible le code de la routine d'interruption OhOh. Exo4 : ShieldBot Programmez le robot ShieldBot, dont le code ne comporte qu'une routine d'interruption gérant les détections RADAR comme suit : si la vitesse de l'engin détecté est comprise entre 8 et 12 unités lg/chr, alors activer le champ protecteur en plus de la boucle principale : Main: aim 17 + aim' sto Main jump - Quelle peut être la valeur du champ protecteur ? - Quelle doit être la valeur associée par SETPARAM à RADAR, relativement à la vitesse de rotation de la tourelle ? - Quels sont les types d'engin détectés par ShieldBot ? Comment l'améliorer ? Exo5 : DodgeBot Dans certaines circonstances (collision, décroissance du registre DAMAGE, détection d'une menace -balle ou missile -, ...), on peut préférer l'esquive à l'affrontement. Cette esquive peut être réalisée par une modification de la vitesse ou un déplacement (registres MOVEX et MOVEY). - Programmez le robot DodgeBot, qui, lors d'une de ces 3 circonstances, se déplace dans une bonne direction (par exemple perpendiculairement à la direction de la trajectoire détectée).