The Ada Program: deck_package.adb

  1 with Ada, Ada.Numerics.Discrete_Random, Card_Package;
  2 use Ada, Ada.Numerics, Card_Package;
  3 
  4 package body Deck_Package is
  5 
  6    package Int_Random is new Numerics.Discrete_Random (Deck_Range);
  7    Int_Seed: Int_Random.Generator;
  8 
  9    procedure Shuffle is
 10       N: constant Integer := 75;
 11       C: Card_Type;
 12       X,Y: Deck_Range;
 13    begin
 14       for I in 1..N loop
 15          X := Int_Random.Random (Int_Seed);
 16          Y := Int_Random.Random (Int_Seed);
 17          C := Deck (X);  Deck(X) := Deck(Y);  Deck(Y) := C;
 18       end loop;
 19    end;
 20 
 21 begin
 22    Int_Random.Reset (Int_Seed);
 23    for I in Deck'Range loop
 24       declare
 25          Suit : constant Suit_Type  := Suit_Type'Val ((I-1)/13);
 26          Count: constant Count_Type := Count_Type'Val ((I mod 13)+1);
 27       begin
 28          Deck(I) := Card_Package.Card_Type' (Suit, Count);
 29       end;
 30    end loop;
 31 end Deck_Package;