Posted to tcl by dandyn at Wed Mar 15 16:37:32 GMT 2023view pretty

# This is part of Tcllib
package require struct::list


set p_02 ".poker"; bind pub -|- $p_02 poker

proc poker {nick uhost hand chan text} {

        putquick "PRIVMSG $chan :Five cards:  \003 $::card_2a  $::card_2b  $::card_2c  $::card_2d"
        putquick "PRIVMSG $chan :Which cards to keep?"
}


bind pub -|- !random proc:random
proc proc:random {nick host handle channel arg} {
    set shuffle_cards {
        "$::card_2a" "$::card_2b" "$::card_2c" "$::card_2d"
        "$::card_3a" "$::card_3b" "$::card_3c" "$::card_3d"
        "$::card_4a" "$::card_4b" "$::card_4c" "$::card_4d"
        "$::card_5a" "$::card_5b" "$::card_5c" "$::card_5d"
        "$::card_6a" "$::card_6b" "$::card_6c" "$::card_6d"
        "$::card_7a" "$::card_7b" "$::card_7c" "$::card_7d"
        "$::card_8a" "$::card_8b" "$::card_8c" "$::card_8d"
        "$::card_9a" "$::card_9b" "$::card_9c" "$::card_9d"
        "$::card_Ta" "$::card_Tb" "$::card_Tc" "$::card_Td"
        "$::card_Ja" "$::card_Jb" "$::card_Jc" "$::card_Jd"
        "$::card_Qa" "$::card_Qb" "$::card_Qc" "$::card_Qd"
        "$::card_Ka" "$::card_Kb" "$::card_Kc" "$::card_Kd"
        "$::card_Aa" "$::card_Ab" "$::card_Ac" "$::card_Ad"
    }

    set output [struct::list shuffle $shuffle_cards]
    putnow "PRIVMSG $channel : [lrange $output 0 4]"
}

#Färgerna saknar alltid betydelse vid rangordningen, bara högsta kortet är intressant.
#Den högsta stegen är AKQJT. Om flera spelare har tretal jämför man i första hand valören
#på korten i tretalet, i andra hand högsta sidokortet och i sista hand det lägre sidokortet.
#Färgerna är betydelselösa.


# a=`, b=e, c=f, d=c
# fK  eK  cK  `K  `A

set ::card_2a "\\00391`2\003\"
set ::card_2b "\\00352e2\003\"
set ::card_2c "\\00352f2\003\"
set ::card_2d "\\00391c2\003\"

set ::card_3a "\`3\"
set ::card_3b "\e3\"
set ::card_3c "\f3\"
set ::card_3d "\c3\"

set ::card_4a "\`4\"
set ::card_4b "\e4\"
set ::card_4c "\f4\"
set ::card_4d "\c4\"