Advertisement
PifyZ

Exercice du lundi n°3

Jul 11th, 2014
552
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # http://zetcode.com/lang/tcl/io/
  2. # http://wiki.tcl.tk/1549
  3. # https://fr.wikipedia.org/wiki/Tool_Command_Language
  4.  
  5. # ---------
  6. # Fonctions
  7. # ---------
  8. # Récupérer une valeur au hasard dans une liste
  9. proc random_pick { a_list } {
  10.     lindex $a_list [ expr { int(rand() * [ llength $a_list ]) } ]
  11. }
  12.  
  13. # Donner la valeur d'une carte
  14. proc card_value { card } {
  15.     set value [ lindex [ regexp -all -inline "(.+) de (.+)" $card ] 1 ]
  16.  
  17.     switch $value {
  18.         valet - dame - roi { return 10 }
  19.         as                 { return 11 }
  20.         default            { return $value }
  21.     }
  22. }
  23.  
  24. # Récupérer une carte dans le jeu
  25. proc pick_card { game i } {
  26.     upvar $game a_game
  27.     set card [ lreplace $a_game $i $i ]
  28.     set a_game $card
  29.     return [ lindex $card $i ]
  30. }
  31.  
  32. # Récupérer une carte dans le jeu
  33. proc pick_name { names i } {
  34.     upvar $names a_names
  35.     set name [ lreplace $a_names $i $i ]
  36.     set a_names $name
  37.     return [ lindex $name $i ]
  38. }
  39.  
  40. # ---
  41. # Jeu
  42. # ---
  43. # Noms
  44. set names {
  45.     Yannick Aurelie Guillaume Benoit Hugo Aymeric
  46.     George Jeremy Matthieu Romain Elisa Corentin
  47. }
  48.  
  49. # Cartes
  50. set cards { 2 3 4 5 6 7 8 9 10 valet dame roi as }
  51.  
  52. # Types
  53. set types { coeur pique trefle carreau }
  54.  
  55. # Création du jeu de cartes
  56. set game [ list ]
  57.  
  58. foreach card $cards {
  59.     foreach type $types {
  60.         lappend game "$card de $type"
  61.     }
  62. }
  63.  
  64. set players [ list ]
  65.  
  66. for { set i 0 } { $i < 3 } { incr i } {
  67.     random_pick $names
  68. }
  69.  
  70. # set nb_players [ gets stdin ]
  71. set nb_players 3
  72.  
  73. if { $nb_players > [ llength $names ] } {
  74.     set nb_players [ llength $names ]
  75. }
  76.  
  77. for { set i 0 } { $i < $nb_players } { incr i } {
  78.     # puts $names
  79.  
  80.     set name [ random_pick $names ]
  81.     pick_name names [ lsearch $names $name ]
  82.     lappend players $name
  83.  
  84.     set player($name) [ list ]
  85.     set score($name) 0
  86.  
  87.     for { set j 0 } { $j < 3 } { incr j } {
  88.         set card [ random_pick $game ]
  89.         lappend player($name) $card
  90.         set score($name) [ expr { $score($name) + [ card_value $card ] } ]
  91.         pick_card game [ lsearch $game $card ]
  92.     }
  93.  
  94.     # puts $name
  95. }
  96.  
  97. parray player
  98.  
  99. puts {}
  100.  
  101. set nb_victories 0
  102.  
  103. foreach name $players {
  104.     if { $score($name) == 21 } {
  105.         incr nb_victories
  106.     }
  107. }
  108.  
  109. foreach name $players {
  110.     if { $score($name) == 21 } {
  111.         if { $nb_victories == 1 } {
  112.             set victory victoire
  113.         } else {
  114.             set victory egalite
  115.         }
  116.     } else {
  117.         set victory defaite
  118.     }
  119.  
  120.     puts "Score de $name : $score($name) - $victory"
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement