RosettaCodeData/Task/Playing-cards/XPL0/playing-cards.xpl0
2023-07-01 13:44:08 -04:00

32 lines
1.1 KiB
Text

char Deck(52); \card structure (low 2 bits = suit)
def Players = 4; \number of players to deal to
char Hand(Players, 52); \each player's hand
int Card, N, I, J, T;
char Suit, Royal;
[for Card:= 0 to 52-1 do \make a new deck
Deck(Card):= Card;
for N:= 0 to 10000 do \shuffle the deck
[I:= Ran(52); J:= Ran(52);
T:= Deck(I); Deck(I):= Deck(J); Deck(J):= T;
];
for N:= 0 to 52-1 do \deal from the deck
[Card:= Deck(N);
I:= N/Players;
J:= rem(0);
Hand(J, I):= Card;
];
Suit:= "HDCS "; \print each player's hand
Royal:= "JQK "; \ (= contents of the deck)
for J:= 0 to Players-1 do \e.g: 2D 3C 10C AS KD
[for I:= 0 to 52/Players -1 do
[Card:= Hand(J, I);
N:= Card>>2 + 1; \pip value
if N = 1 then ChOut(0, ^A)
else if N >= 11 then ChOut(0, Royal(N-11))
else IntOut(0, N);
ChOut(0, Suit(Card&3));
ChOut(0, ^ );
];
CrLf(0);
];
]