# 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 ;