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.
 

AltStyle によって変換されたページ (->オリジナル) /