Playing cards: Difference between revisions

Content added Content deleted
(Added zkl)
Line 3,891: Line 3,891:
Reg_ins(9) // insert the cards here
Reg_ins(9) // insert the cards here
Return</lang>
Return</lang>

=={{header|zkl}}==
<lang zkl>const Diamonds=1, Spades=3, Clubs=0, Hearts=2, Ace=1;
var suits=T(0x1F0D1,0x1F0C1,0x1F0B1,0x1F0A1); //unicode 🃑,🃁,🂱,🂡

class Card{
fcn init(pip,suit){ // or 0..51
reg p,s;
if(vm.numArgs==1){ s=pip/13; p=pip%13; } else { p=pip; s=suit }
var [const] _pip=p, _suit=s;
}
fcn toString{
p:=_pip + (_pip>=11);
(suits[_suit]+p):Compiler.Tokenizer.intToUTF8(_);
}
}

class Deck{ //--> 52 shuffled Cards
var [const] deck=L();
fcn init{
(0).pump(52,deck.clear().write,Card);
shuffle();
}
fcn shuffle{ deck.shuffle() }
fcn deal(cards=5){ deck.pop(0,cards); }
fcn toString{ deck.pump(String,"toString"); }
}</lang>
<lang zkl>d:=Deck();
d.println(d.deck.len());
d.deal().println();
d.println();</lang>
{{out}}
<pre>
🃎🂱🃗🂢🂸🃄🂷🂤🃉🂡🂽🂥🂶🃃🃇🂳🂫🃍🃅🂭🃚🃞🃋🃘🂹🃛🂩🂺🃁🂮🂣🃖🂨🃙🃝🃒🂪🃂🃊🂲🃈🂧🃑🃆🂵🂴🃔🂾🂦🃓🂻🃕52
L(🃎,🂱,🃗,🂢,🂸)
🃄🂷🂤🃉🂡🂽🂥🂶🃃🃇🂳🂫🃍🃅🂭🃚🃞🃋🃘🂹🃛🂩🂺🃁🂮🂣🃖🂨🃙🃝🃒🂪🃂🃊🂲🃈🂧🃑🃆🂵🂴🃔🂾🂦🃓🂻🃕
</pre>