blob: e0df3c6292935dfc318600a42675044ed1c2a49d (
plain) (
tree)
|
|
program cards;
{Shuffle a deck of cards}
var ranks:array [0..51] of integer;
suits:array [0..51] of char;
i:integer;
procedure showdeck;
{Print the deck arrays}
begin {showdeck}
for i := 0 to 51 do
begin
if i mod 13 = 0 then writeln;
write(ranks[i]:3,suits[i]);
end;
writeln;
writeln
end; {showdeck}
procedure deck;
{Create the deck in order}
var i,j:integer;
suitnames:packed array [0..3] of char;
begin {deck}
suitnames := 'HSDC';
for i := 0 to 12 do
for j := 0 to 3 do
begin
ranks[13*j+i] := i+1;
suits[13*j+i] := suitnames[j]
end;
writeln('The initial deck:');
showdeck
end; {deck}
procedure shuffle;
{Shuffle the deck randomly}
var rank,i,j:integer;
suit:char;
begin {shuffle}
for i := 51 downto 1 do {For each card in the deck}
begin
j := random(i+1); {Pick a random card before it}
rank := ranks[i]; {Interchange ranks}
ranks[i] := ranks[j];
ranks[j] := rank;
suit := suits[i]; {Interchange suits}
suits[i] := suits[j];
suits[j] := suit
end;
writeln('The shuffled deck:');
showdeck
end; {shuffle}
begin {main program}
deck;
shuffle
end.
|