Posted to tcl by Zarutian at Fri Nov 16 02:43:42 GMT 2007view raw
- proc create {deck} {
- set cards ""
- foreach type {S H D C} {
- foreach value {A 2 3 4 5 6 7 8 9 10 J Q K} {
- lappend cards [set value][set type]
- }
- }
- set j 52
- while true {
- set r [expr rand()]
- set k [expr int(($j * $r) + 1)]
- set t1 [lindex $cards [expr $k -1]]
- set t2 [lindex $cards [expr $j -1]]
- lset cards [expr $j -1] $t1
- lset cards [expr $k -1] $t2
- incr j -1
- if {$j > 1} {
- continue
- } else {
- break
- }
- }
- upvar $deck d
- set d $cards
- }