Laboratoire SUPINFO de recherche en robotique

Tuto Robocode – Part 2

Tuto Robocode – Part 2

30 avr, 2013

 

 

Dans cette partie 2, nous allons aborder plus en détails les différentes méthodes d’ événements disponibles, ainsi que la récupération de données.
Plus vous récupérez d’informations sur vous et vos ennemis, plus votre I.A sera performante.

Allons-y!

 

Le Champ de bataille:

Vous vous rappelez de ce schéma:

coordonées

Et bien les méthodes getX() et getY() vont nous permettre de récupérer les coordonnées de notre robot sur le champs de bataille.

C’est mieux si le robot sait où il se situe.

Ces méthodes retournent un double.

Exemple:
double x = getX();
double y = getY();
System.out.println(« Coordonées du robot:  » + x + » , « + y );

 

Le champ de bataille est de taille variable, un bon code doit pouvoir s’adapter à tout terrain.

getBattleFiledWidth() et getBattleFieldHeight() permettent de récupérer respectivement la largeur et la hauteur du champ de bataille.

Ces méthodes retournent un double.

Exemple:
double largeur = getBattleFiledWidth();
double hauteur = getBattleFiledHeight();
System.out.println(« Dimensions du terrain:  » + largeur + » , « + hauteur );

 

Combien d’adversaire doit-je affronter?

getOthers() renvoie un ‘int’ qui indique le nombre d’autre robot sur le champs de bataille.

Exemple:

System.out.println(« Il y a « +getOthers()+ » autre(s) robot(s) sur le terrain. »);

 

Les événements:

Nous avons déjà vu, en première partie :

onScannedRobot(ScannedRobotEvent event), onHitByBullet(HitByBulletEvent event) ,  et onHitWall(HitWallEvent event).

Nous allons rentrer dans les entrailles de ces méthodes et voir ce que nous pouvons en tirer… :)

 

public void onScannedRobot(ScannedRobotEvent event)
{

event.getDistance();      //Cela va nous permettre de récupérer la distance en pixel, entre notre robot et le robot scanné.

event.getEnergy();      //Nous renverras l’énergie du robot scanné.

event.getHeading();      //Renvoie l’orientation en degré, du robot ennemi par rapport à l’avant de notre robot.

event.getName();      //Le nom du robot scanné.

event.getVelocity();     //Et enfin, sa vitesse de déplacement.

}

Vous pouvez constater que les informations du  radar ne sont pas à prendre à la légère…

 

Pour mieux comprendre le fonctionnement du radar de votre robot, rendez-vous dans le menu ‘Options‘, puis ‘Preferences’, puis ‘ View Options

optionscan

 

Cocher la case ‘Visible Scan Arcs‘ dans la partie ‘Arena‘. Vous verrez alors apparaître lors des combats, le radar de chaque robot.

scanner

 

Continuons, 

public void onHitByBullet(HitByBulletEvent event)

{

event.getName(); //Retourne le nom du robot qui vous a touché.

event.getPower(); //Retourne la puissance du tir.

}

 

public void onHitWall(HitWallEvent event)

{

event.getBearing(); //Retourne en degré la partie de votre robot qui a heurté le mur.

Cette valeur est comprise entre 0 et 180 ou 0 et -180, comprenez la partie droite ou gauche de votre robot.

}

 

Pour des événements supplémentaires, je vous invite à consulter la documentation de la classe « Robot »cette page.. (On apprends mieux en cherchant soi-même ;) )

 

Mais sachez tout de même que vous pouvez:

- Savoir si vous avez touché quelqu’un avec la méthode onBulletHit(BulletHitEvent event).

- Savoir si vous avez raté votre cible avec la méthode onBulletMissed(BulletMissedEvent event).

- Savoir si un autre robot est mort avec la méthode onRobotDeath(RobotDeathEvent event).

 

 

D’autres méthodes bien utiles:

Scan() : Permet d’appeler la méthode onScannedRobot(). Utile si vous voulez gagnez du temps d’exécution, on boucler sur cette dernière méthode.

Stop() : Arrêteras tout exécution du programme en cours.

Resume() : Reprendra l’exécution du programme bloqué précédemment par la méthode Stop().

 

 

Voilà, je vous laisse assimiler tout ça, et je vous rappel, n’hésitez pas à commenter ce Tuto, et à poster vos questions ou remarques.

Bonne programmation!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>