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).