kakorobot.ads

--
-- Pilotage des robots
--
package KakoRobot is

   -- Renvoie le nombre de robots de la grille
   -- Les robots sont numérotés de 1 à N.
   function Nombre_Robots return Integer ;


   -- Attend que l'utilisateur appuie sur "entrée"
   -- (L'utilisation de cette procédure est purement facultatif)
   procedure Attendre_Entree ;


   -- Liste des directions
   Nord      : constant Character := 'N' ;
   Est       : constant Character := 'E' ;
   Sud       : constant Character := 'S' ;
   Ouest     : constant Character := 'O' ;

   -- Déplace le robot NUMERO d'une case dans la direction indiquée
   procedure Deplacer (Numero : Integer ; Dir : Character) ;


   -- Liste des objets
   Rien      : constant Integer := 0 ;
   Bombe     : constant Integer := 1 ;
   Cible     : constant Integer := 2 ;
   Robot     : constant Integer := 3 ;
   -- Dehors signifie que la case est en dehors des limites du plateau
   Dehors    : constant Integer := 4 ;

   -- Cette fonction renvoie le contenu de la case située
   -- dans la direction indiquée (pour le robot NUMERO)
   -- L'entier retourné vaut 0, 1, 2, 3, ou 4, selon les codes ci-dessus.
   function Scanner (Numero : Integer ; Dir : Character) return Integer ;



   Etat_HS    : constant Integer := 0 ;
   Etat_Pret  : constant Integer := 1 ;
   Etat_Gagne : constant Integer := 2 ;

   -- Indique dans quel état est le robot NUMERO
   --    0 signifie que le robot est hors-service
   --    1 signifie que le robot est en état de marche
   --    2 signifie que le robot a atteint son but
   function Etat (Numero : Integer) return Integer ;


   -- Renvoie la quantité d'énergie restant du robot NUMERO
   function Energie (Numero : Integer) return Integer ;



   -- Coordonnées sur le plateau
   -- (0,0) est situé en haut à gauche
   -- Les Y sont donc croissant vers le bas !
   type T_Coords is record
      X : Integer ;
      Y : Integer ;
   end record ;

   -- Renvoie les coordonnées du robot indiqué
   function Loc_Robot (Numero : Integer) return T_Coords ;

   -- Renvoie les coordonnées d'une cible du plateau
   function Loc_Cible return T_Coords ;

   -- Fonction racine carrée
   function SQRT (X : Float) return Float ;


end KakoRobot ;