with Ada.Integer_Text_Io, Ada.Text_Io, Ada.Numerics.Discrete_Random; use Ada.Integer_Text_Io, Ada.Text_Io; procedure Gd is Limite : Integer; -- sera saisie par l'utilisateur Position, Sortie, compteur : Integer; -- interdiction d'utiliser ces variables! ------------------------------------------------------------------ -- un ensemble de procédures/fonctions que vous pouvez utiliser -- ------------------------------------------------------------------ procedure Gauche is begin Position := Position-1; Compteur := Compteur+1; end Gauche; procedure droite is begin Position := Position+1; Compteur := Compteur+1; end droite; function Gagne return Boolean is begin return Position = Sortie; end Gagne; function Limite_Atteinte return Boolean is begin return (Position = Limite) or (Position=-Limite); end Limite_Atteinte; function Tirage_Random(A, B : Integer) return Integer is -- retourne un entier au hasard dans A .. B, avec -10000 <= A <= B <= 10000 type Numero is range -10000 .. 10000; package tirage is new Ada.Numerics.Discrete_Random (Numero); use tirage; G : Generator; Res : numero; begin Reset (G); Res := Random (G); while(Integer(Res) > B) or (Integer(Res) < A) loop Res := Random (G); end loop; return integer(res); end Tirage_random; procedure Init is begin Put("Veuillez entrer la limite (<=10000)"); Get(Limite); Sortie := Tirage_Random(-Limite, Limite); Position := 0; Compteur := 0; end Init; procedure Affiche_etat is begin for I in (-Limite)..Limite loop if I=Position then Put('X'); elsif I=Sortie then Put('*'); else Put('.'); end if; end loop; New_Line; end Affiche_etat; procedure Affiche_res is begin Put("Nombre de mètres parcourus : "); Put(Compteur); New_Line; end Affiche_res; ------------------------------------------------------------------ -- à partir de là, c'est à vous, vous pouvez vous ajouter des -- fonctions, procédures, variables ------------------------------------------------------------------ -- mavar1 : integer -- etc .. begin Init; -- c'est à vous ! end Gd;