Introduction‎ > ‎

Format de la carte du réseau

Représentation externe (fichier, serveur de carte, ...)

La carte du labyrinthe est pour l'instant stockée dans un fichier, mais devra pouvoir être récupérée depuis un serveur de carte par 0MQ.

La carte est une liste d'arcs. Chaque arc peut être soit horizontal soit vertical. Un arc aura un début et une fin, le début étant le sommet Nord pour un arc vertical, et le sommet Ouest pour un arc horizontal. Les arcs ont aussi une longueur (un poids), qui pourra par exemple être utilisée comme hint dans la commande move (mais pas seulement).

Exemple :

[
       {"direction" : "horizontal",
        "start"     : "nom_du_sommet_de_début",
        "end"       : "nom_du_sommet_de_fin",
        "length"    : chiffre
       },
       ...
]


Par exemple, le fichier map.json en pièce-jointe représente le circuit suivant :

    D       G F
    |       | |
  C−B−E     H−I
    |         |
    A         J

Point de départ par défaut des robots

Pour les tests ultérieurs, le circuit comportera un sommet par robot portant le nom de ce robot ('MM', 'AC', 'NF', 'BG', 'HP', 'ID'). Chaque robot a donc son emplacement de départ propre, portant le même nom que son identifiant.

Au départ, un robot est placé sur ce sommet et pointe vers le Nord.

Possible représentation interne (à caractère non obligatoire)

En interne, la carte sera représentée comme un dictionnaire de sommets (vertex en anglais), reliés entre eux par des segments (ou arc, edge en anglais)

Les sommets

Un sommet (vertex) possède les champs/méthodes suivants :
  • champ north : le segment au nord de ce sommet, ou null s'il n'y en a pas
  • champ south : le segment au sud de ce sommet, ou null s'il n'y en a pas
  • champ east : le segment à l'est de ce sommet, ou null s'il n'y en a pas
  • champ west : le segment à l'ouest de ce sommet, ou null s'il n'y en a pas
  • méthode neighbours(), qui renvoie un set des sommets voisins
  • méthode direction(vertex), qui renvoie la direction du sommet passé en arguments. La direction est un chiffre compris entre 0 et 3 :
    • 0 = nord
    • 1 = est
    • 2 = sud
    • 3 = ouest
    • -1 si le sommet passé en argument n'est pas un voisin
  • méthode length(vertex) : renvoie la longueur en mm de l'arc reliant au sommet voisin passé en argument. Si le sommet n'est pas un voisin, on renverra n'importe quoi.

Les segments

Un segment (edge) est un objet possédant les champs/méthodes suivants :
  • champ length : la longueur de l'arc en mm
  • champ start : le sommet le plus au nord ou le plus à l'ouest du segment
  • champ end : le sommet le plus au sud ou le plus à l'est du segment

Serveur de carte

Un serveur de carte est accessible par une socket en mode REQ sur tcp://a405-01:9734 en envoyant la commande

{"request": "map", "target": "ID"}

"ID" représente les initiales du demandeur (par exemple, Nicolas Feignon utilisera "NF").

La carte est retournée sous la forme d'une chaîne JSON tel que décrit ci-dessus. Le simulateur de robot utilise cette même carte.

ċ
map.json
(1k)
Alexis Polti,
4 janv. 2012 à 15:45