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

  1. # This is part of Tcllib
  2. package require struct::list
  3.  
  4.  
  5. set p_02 ".poker"; bind pub -|- $p_02 poker
  6.  
  7. proc poker {nick uhost hand chan text} {
  8.  
  9. putquick "PRIVMSG $chan :Five cards: \003 $::card_2a $::card_2b $::card_2c $::card_2d"
  10. putquick "PRIVMSG $chan :Which cards to keep?"
  11. }
  12.  
  13.  
  14. bind pub -|- !random proc:random
  15. proc proc:random {nick host handle channel arg} {
  16. set shuffle_cards {
  17. "$::card_2a" "$::card_2b" "$::card_2c" "$::card_2d"
  18. "$::card_3a" "$::card_3b" "$::card_3c" "$::card_3d"
  19. "$::card_4a" "$::card_4b" "$::card_4c" "$::card_4d"
  20. "$::card_5a" "$::card_5b" "$::card_5c" "$::card_5d"
  21. "$::card_6a" "$::card_6b" "$::card_6c" "$::card_6d"
  22. "$::card_7a" "$::card_7b" "$::card_7c" "$::card_7d"
  23. "$::card_8a" "$::card_8b" "$::card_8c" "$::card_8d"
  24. "$::card_9a" "$::card_9b" "$::card_9c" "$::card_9d"
  25. "$::card_Ta" "$::card_Tb" "$::card_Tc" "$::card_Td"
  26. "$::card_Ja" "$::card_Jb" "$::card_Jc" "$::card_Jd"
  27. "$::card_Qa" "$::card_Qb" "$::card_Qc" "$::card_Qd"
  28. "$::card_Ka" "$::card_Kb" "$::card_Kc" "$::card_Kd"
  29. "$::card_Aa" "$::card_Ab" "$::card_Ac" "$::card_Ad"
  30. }
  31.  
  32. set output [struct::list shuffle $shuffle_cards]
  33. putnow "PRIVMSG $channel : [lrange $output 0 4]"
  34. }
  35.  
  36. #Färgerna saknar alltid betydelse vid rangordningen, bara högsta kortet är intressant.
  37. #Den högsta stegen är AKQJT. Om flera spelare har tretal jämför man i första hand valören
  38. #på korten i tretalet, i andra hand högsta sidokortet och i sista hand det lägre sidokortet.
  39. #Färgerna är betydelselösa.
  40.  
  41.  
  42. # a=`, b=e, c=f, d=c
  43. # fK eK cK `K `A
  44.  
  45. set ::card_2a "\\00391`2\003\"
  46. set ::card_2b "\\00352e2\003\"
  47. set ::card_2c "\\00352f2\003\"
  48. set ::card_2d "\\00391c2\003\"
  49.  
  50. set ::card_3a "\`3\"
  51. set ::card_3b "\e3\"
  52. set ::card_3c "\f3\"
  53. set ::card_3d "\c3\"
  54.  
  55. set ::card_4a "\`4\"
  56. set ::card_4b "\e4\"
  57. set ::card_4c "\f4\"
  58. set ::card_4d "\c4\"
  59.