Contributor: LEE BARKER               

{
LEE BARKER

³ I'm trying to Write a small Poker game For a grade in my
³ High School Pascal Class.

While the Array of Strings will work, it is a lot of overhead
for what you want to do. It is also difficult to do the scoring.
The following is a small piece of code I posted a year or two
ago when someone asked a similar question. Offered as a study
guide For your homework.
}

Const
  Limit    = 5; { Minimum cards before reshuffle }
  MaxDecks = 1; { Number of decks in use }
  NbrCards = MaxDecks * 52;
  Cardvalue : Array [0..12] of String[5] =
                ('Ace','Two','Three','Four','Five','Six','Seven',
                 'Eight','Nine','Ten','Jack','Queen','King');
  Suit : Array [0..3] of String[8] =
           ('Hearts','Clubs','Diamonds','Spades');

Type
  DeckOfCards = Array [0..Pred(NbrCards)] of Byte;

Var
  Count,
  NextCard : Integer;
  Cards    : DeckOfCards;

Procedure shuffle;
Var
  i, j,
  k, n : Integer;
begin
  randomize;
  j := 0;  { New Decks }
  For i := 0 to pred(NbrCards) do
  begin
    Cards[i] := lo(j);
    inc(j);
    if j > 51 then
      j := 0;
  end;
  For j := 1 to 3 do { why not ? }
    For i := 0 to pred(NbrCards) do
    begin { swap }
      n := random(NbrCards);
      k := Cards[n];
      Cards[n] := Cards[i];
      Cards[i] := k;
    end;
  NextCard := NbrCards;
end;

Function CardDealt : Byte;
begin
  Dec(NextCard);
  CardDealt := Cards[NextCard];
end;

Procedure ShowCard(b : Byte);
Var
  c, s : Integer;
begin
  c := b mod 13;
  s := b div 13;
  Writeln('The ', Cardvalue[c], ' of ', Suit[s]);
end;

begin
  Shuffle;
  Writeln('< The deck is shuffled >');
  { if NextCard <= Limit then shuffle }
  For Count := 1 to 5 do
    ShowCard(CardDealt);
  Readln;
end.