$tabcarte = ("as","deux","trois","quatre","cinq","six","sept","huit","neuf","dix","valet","dame","roi") $tabcouleur = ("coeur","carreau","pique","trèfle") $jeux=@{} $CrLF="`r`n" $rand = New-Object System.Random do{ $I=0 #Déclaration des variables de portée "script" $script:histo $script:pointJ=0 $script:pointC=0 $script:carte $script:tabjoueur $script:tabcroupier #On remplit automatiquement une hashtable qui représente le jeu de 52 cartes $tabcarte|foreach{ $var=$_ $tabcouleur|foreach{ $nocarte="carte"+$I switch($var){ "as"{$val=11} "deux"{$val=2} "trois"{$val=3} "quatre"{$val=4} "cinq"{$val=5} "six"{$val=6} "sept"{$val=7} "huit"{$val=8} "neuf"{$val=9} "dix"{$val=10} "valet"{$val=10} "dame"{$val=10} "roi"{$val=10} } $jeux.$nocarte=@{nom=$var;couleur=$_;valeur=$val} $I++ } } #cette fonction permet de tirer une carte #le paramètre d'entrée est soit joueur soit croupier #le tirage de la carte se fait avec un random #le numéro tiré est placé dans un tableau d'historique pour ne pas retirer les mêmes cartes function get-carte{ param($name=".") do{ $numrand=$rand.next(0,51) $var=$script:histo|where{$_ -eq $numrand} if($var -ne $numrand) { $nocarte="carte"+$numrand $script:carte= $jeux.$nocarte.nom + " de " + $jeux.$nocarte.couleur $test=$true } }until($test -eq $true) $script:histo+=@($numrand) switch($name){ "joueur" {$script:pointJ+=$jeux.$nocarte.valeur;$script:tabjoueur+=@($script:carte)} "croupier" {$script:pointC+=$jeux.$nocarte.valeur;$script:tabcroupier+=@($script:carte)} } } #cette fonction affiche les jeux function affichage{ clear write-host "Distribution des cartes :" write-host ($CrLF*2) write-host "Cartes du croupier :" $script:tabcroupier write-host $CrLF write-host "Points du croupier:" $script:pointC write-host ($CrLF*2) write-host "Votre jeu :" $script:tabjoueur write-host $CrLF write-host "Vos points :" $script:pointJ } #On affiche les jeux mais une carte du croupier est cachée clear write-host "Distribution des cartes :" write-host ($CrLF*2) write-host "Cartes du croupier :" get-carte croupier $cartecroup=$script:carte $cartecroup get-carte croupier $hide=$script:carte write-host ($CrLF*2) write-host "Vos cartes :" get-carte joueur get-carte joueur $script:tabjoueur write-host $CrLF write-host "Vos points :" $script:pointJ #on boucle tant que le joueur veut tirer une carte do{ $test="" #$count permet de savoir si le joueur n'a tiré que 2 cartes (pour gérer le Black Jack) $count=$tabjoueur.count #on teste le permier tirage if($script:pointJ -gt 21) { write-host $CrLF write-host "vous avez perdu !!!" $test=$true } elseif($script:pointJ -eq 21 -and $count -eq 2) { write-host $CrLF write-host "Black Jack !!!" $test=$true } else { do{ write-host $CrLF $rep=read-host "Voulez-vous tirez une autre carte ? " } until ($rep -eq "o" -or $rep -eq "n") } #on retire une carte pour le joueur if($rep -eq "o" -and $test -ne $true) { clear write-host "Distribution des cartes :" write-host ($CrLF*2) write-host "cartes du croupier :" $cartecroup write-host $CrLF write-host "Votre jeu :" get-carte joueur $script:tabjoueur write-host $CrLF write-host "Vos points :" $script:pointJ } }until($rep -eq "n" -or $test -eq $true) #le joueur arrête de jouer if($test -ne $true -or $rep -eq "n") { #on affiche la carte cachée du croupier ainsi que ses points affichage #si le croupier a moins que le joueur il tire des cartes while($script:pointJ -gt $script:pointC){ get-carte croupier affichage } #On affiche le résultat if($script:pointc -gt 21) { write-host $CrLF write-host "Le Croupier a dépassé, vous gagnez" } if($script:pointc -eq $script:pointj) { write-host $CrLF write-host "Egalité, le Croupier gagne" } if($script:pointc -lt $script:pointj) { write-host $CrLF write-host "vous avez gagnez !!!" } if($script:pointc -le 21 -and $script:pointc -gt $script:pointJ) { write-host $CrLF write-host "Le Croupier gagne" } $count=$tabcroupier.count if($script:pointc -eq 21 -and $count -eq 2) { write-host $CrLF write-host "Black Jack du Croupier !!!" } } #On enlève les variable de portée "script" remove-variable -name histo remove-variable -name pointJ remove-variable -name pointC remove-variable -name carte remove-variable -name tabcroupier remove-variable -name tabjoueur do{ write-host $CrLF $rep1=read-host "Voulez-vous rejouer ? " } until ($rep1 -eq "o" -or $rep1 -eq "n") }until($rep1 -eq "n")