Projet IHM - La guerre des robots

dim. 15 septembre 2002

robots

Objectif : programmer des robots de combat, puis les jeter dans l'arène.

But du jeu : quel que soit le nombre de joueurs, il s'agit de rester en "vie" le plus longtemps possible. Le vainqueur est celui des joueurs dont le robot est le dernier à fonctionner.

Paramètres :

  • dimension du terrain (vu en plan) : 30 x 20 cases
  • nombre de robots : variable
  • nombre de pas des programmes : de 5 à 20 pas
  • énergie dispensée aux robots : de 500 à 3000 points (conditionne la durée de la partie)
  • distance de repérage (voir paragraphe suivant) : de 2 à 6 cases (4 est une bonne valeur)
  • quantité d'obstacles figurant sur le terrain : de 0 à 50%

Cahier des charges

L'application doit permettre :
  • de créer, de sauvegarder et de charger des programmes de robots,
  • de configurer l'environnement du jeu,
  • d'assurer le bon déroulement des parties,
  • d'avoir un rendu visuel qui rende compte de l'évolution du match en cours,
  • de proposer une aide (en ligne, contextuelle, ...).

Programmation des robots

L'action d'un robot peut être automatique ou soumise à un test. En mode automatique, voici les codes des actions que les robots peuvent effectuer :

  • AL : déplacement aléatoire dans une direction donnée (haut, bas, droite, gauche) si la case visée est libre ou bien reste sur place (permet de rompre des séquences de programmation conduisant au blocage).
  • DD : déplacement déterministe dans une direction fournie (haut, bas, droite, gauche) si la case visée est libre ou bien reste sur place. C'est une instruction importante pour les terrains dégagés.
  • MI : pose d'une mine sur l'une des quatre cases contiguës (au hasard). C'est l'arme la plus meurtrière pour les robots adverses. Quand ils marchent sur une de vos mines, ils perdent 200 points d'énergie. En outre, le pas de leur programme au moment de l'explosion est détruit et remplacé par celui du "circuit de secours" (voir ce paragraphe). Les robots sont capables de reconnaître leurs propres mines et ne sautent pas sur elles mais celles-ci se détruisent dans tous les cas de figure.
  • IN : invisibilité. C'est une contre-mesure électronique qui coûte cher en énergie, mais qui déboussole complètement les adversaires. Au moment où votre robot utilise cette instruction, les autres robots ne savent plus où il est.
  • PS : instruction de poursuite. Ici, votre robot doit repérer l'adversaire le plus proche, puis se diriger vers lui. Le déplacement, s'il est possible, s'effectue en diagonale, contrairement aux autres types de déplacement. En mode automatique, cette instruction s'effectue quelle que soit la distance qui sépare votre robot de l'adversaire le plus proche.
  • FT : instruction de fuite. Comme l'instruction PS, mais au lieu de le poursuivre, votre robot fuit l'adversaire le plus proche.
  • TT : appel de l'instruction de test. Elle conditionne l'appel à des instructions déjà connues en mode automatique (AL, MI, IN, PS et FT) et a deux nouvelles instructions (TL, TC). Ce test est un test de distance : il détermine si le robot adverse le plus proche est ou non situé à une distance inférieure ou égaleà celle définie comme "distance de repérage". Si la réponse est oui le robot effectuera l'action correspondant à l'instruction qui suit immédiatement l'instruction TT, sinon il suivra la deuxième instruction qui suit l'instruction TT (exemple : TT MI PS).

Codes des actions propres au mode test :

  • AL, MI, IN, PS et FT
  • TL : tir horizontal. Il est important pour affaiblir vos adversaires. Ils détruisent les mines adverses rencontrées, sans détruire les vôtres. Un robot adverse touché perd 20 points d'énergie. Le tir est stoppé par la première cible rencontrée.
  • TC : tir vertical, idem TL.

En mode automatique, les actions sont donc effectuées quelle que soit la distance des adversaires, alors qu'en mode test, elles sont toujours soumises au test de proximité.

Circuit de secours : votre robot perd un pas de programme en marchant sur une mine. L'instruction qui contenait est immédiatement remplacée par celle du "circuit de secours". L'instruction de secours est choisie par le joueur lui-même au tout début de la programmation de son robot, parmi l'ensemble des instructions suivantes : AL, MI, IN, PS ou FT.


Coût énergétique

Le tableau ci-dessous indique le coût énergétique de chaque action et de chaque avarie :

Codes Actions Coûts Dommages
DD déplacement choisi 5
AL déplacement aléatoire 1
PS poursuite 4
FT fuite 4
MI pose d'une mine 10 200
TL tir horizontal 3 20
TC tir vertical 3 20
IN invisibilité 20
TT test de proximité 4

Stratégie

Chaque joueur est placé devant le problème du rapport coût/efficacité. Un robot très efficace dépense une grande quantitéd'énergie. Il perd donc davantage de points que ses adversaires moins performants. Il prend donc le risque d'être éliminé rapidement. A moins, bien sûr, qu'en raison même de son efficacité, il ne les élimine plus rapidement qu'il ne s'épuise. On doit donc choisir un véritable comportement pour son robot. Il y aura ceux qui poursuivent un adversaire, s'arrêtent au moment d'entrer dans la zone de repérage (instruction TT FT) puis se mettent à tirer tous azimuts. D'autres au contraire adopteront un comportement de fuite systématique s'accompagnant de pose des mines dès qu'un adversaire sera à proximité. A vous de trouver le programme qui fera de votre robot le "terminator" ;-)


Notation

La notation de ce projet prendra en compte le respect du cahier des charges (on doit pouvoir faire fonctionner un robot dans chacun de vos environnements), la qualité de la programmation (robustesse, lisibilité et modularité de votre code) ainsi que les aspects propres à une IHM que sont : cohérence, concision (limitation du nombre d'intervention de l'utilisateur), structuration des activités (décomposition d'une tâche complexe), flexibilité (application personnalisable), retour d'informations et gestion des erreurs, toutes choses qui garantissent une interface ergonomique et intuitive et qui n'apparaissent pas nécessairement ni dans cette présentation, ni dans la maquette qu'en a fait votre enseignant. ;-)

autre robot