gissa.adb

Denna kod är public domain. Om ni hittar fel eller vill ändra något i koden blir jag jätteglad om ni skickar dessa ändringar till jesper [at] fantasi [punkt] se.


with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Numerics.Discrete_Random;

-- Ett litet gissa talet-spel.

procedure Gissa is
   subtype Nummer is Integer range 0 .. 100;
   package Random_Number is new Ada.Numerics.Discrete_Random (Nummer);
   Tal, G : Nummer;
   N      : Integer := 0;
   Namn   : String(1 .. 100);
   Seed   : Random_Number.Generator;
   Antal  : Natural;
begin
   Random_Number.Reset(Seed);
   Tal := Random_Number.Random(Seed);
   Put("Ange ditt namn: ");
   Get_Line(Namn, Antal);
   loop
      Put("Ange din gissning: ");
      Get(G);
      N := N + 1;
      if G < Tal then
         Put_Line("Nej " & Namn(1 .. Antal) &
                  ", den gissningen var för liten!");
      elsif G > Tal then
         Put_Line("Nej " & Namn(1 .. Antal) &
                  ", den gissningen var för stor!");
      else
         Put_Line("Det var rätt!!");
      end if;
      exit when G = Tal;
   end loop;
   Put_Line("Det tog dig " & Integer'Image(N) & " gissningar.");

exception
   when Constraint_Error =>
      put_line("Tyvärr vill jag endast ha gissningar mellan 0 och 100");

end Gissa;