Playing cards: Difference between revisions
Content added Content deleted
Cyril Nocton (talk | contribs) (→APL) |
Drkameleon (talk | contribs) (added Arturo) |
||
Line 377: | Line 377: | ||
7H 3D 2H 9D KS 7C JH TC JS .. |
7H 3D 2H 9D KS 7C JH TC JS .. |
||
</pre> |
</pre> |
||
=={{header|Arturo}}== |
|||
<syntaxhighlight lang="arturo">ranks: 1..13 |
|||
suits: [`♣`, `♦`, `♥`, `♠`] |
|||
define :card [rank, suit][ |
|||
init: [ |
|||
ensure -> |
|||
and? -> contains? ranks this\rank |
|||
-> contains? suits this\suit |
|||
] |
|||
print: [ |
|||
R: ø |
|||
case [this\rank=] |
|||
when? [1] -> R: `A` |
|||
when? [11]-> R: `J` |
|||
when? [12]-> R: `Q` |
|||
when? [13]-> R: `K` |
|||
else -> R: this\rank |
|||
~{|R||this\suit|} |
|||
] |
|||
] |
|||
define :deck [][ |
|||
init: [ |
|||
this\cards: [] |
|||
loop ranks 'rank -> |
|||
loop suits 'suit -> |
|||
this\cards: this\cards ++ to :card @[rank, suit] |
|||
] |
|||
] |
|||
shuffleUp: function [this :deck][ |
|||
this\cards: shuffle this\cards |
|||
] |
|||
deal: function [this :deck, cnt :integer][ |
|||
if cnt > size this\cards -> |
|||
panic "Not enough cards in deck" |
|||
cards: [] |
|||
do.times: cnt [ |
|||
dealt: sample this\cards |
|||
'cards ++ dealt |
|||
this\cards: remove this\cards dealt |
|||
] |
|||
return cards |
|||
] |
|||
; create a new deck |
|||
Deck: to :deck [] |
|||
; and shuffle it |
|||
shuffleUp Deck |
|||
; deal 5 cards |
|||
print deal Deck 5</syntaxhighlight> |
|||
{{out}} |
|||
<pre>A♥ 6♣ 7♣ Q♦ K♥</pre> |
|||
=={{header|ATS}}== |
=={{header|ATS}}== |