```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
}

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

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