bonjour tt le monde... ça serait pour savoir si vous pouviez jeter un oeil a cet algo qui marche pas trop trop.... merci d'avance
Dim i, j, k, h, x, Nbpartie, score, scorebanquier, argent, mise, valeur(9), tab(9) As Integer
Dim carte(9), main, mainbanquier, message(6), tirer As String
Dim tirercarte, repioche As Boolean
'initialisation des variables
message(0) = "Vous avez perdu cette donne. "
message(1) = "il vous reste" & argent
message(2) = "Egalité, vous regagnez néanmoins ce que vous avez misé"
message(3) = "BLACK JACK !!! Vous gagnez 3 fois votre mise"
message(4) = "vous avez gagné cette donne, vous gagnez 2 fois votre mise"
message(5) = "Vous n'avez pas assez d'argent pour continuer. Désolé!"
message(6) = "Vous avez fini vos " & Nbpartie & ". Il vous reste " & argent & ". Au revoir et à bientôt"
i = j = k = h = x = Nbpartie = score = scorebanquier = mise = 0
argent = 500
main = mainbanquier = ""
tirer = repioche = True
'nombre de partie et controle de la mise qui ne doit pas dépasser l'argent du joueur.
Nbpartie = InputBox("Combien de parties voulez vous faire")
For x = 0 To Nbpartie - 1
mise = InputBox("Combien voulez-vous miser, sachant qu'il vous reste " & argent)
Do While mise > argent
mise = InputBox("Combien voulez-vous miser, sachant qu'il vous reste " & argent)
Loop
argent = argent - mise
' ici commence la génération des chiffres aléatoires qui seront stockés dans tab()
'et qui vont déterminer les cartes des joueurs stockées, elles, dans cartes()
Randomize()
'permet d éviter les doublons dans le tableau, et donc dans le jeu des joueurs
tab(0) = Int(Rnd() * 52) + 1
For i = 1 To 9
tab(i) = Int(Rnd() * 52) + 1
Do While tab(i) = tab(i - 1)
If tab(i) = 0 Then
tab(i) = Int(Rnd() * 52) + 1
End If
Loop
Next
For i = 0 To 9
'ici on stocke dans le tableau carte() les couleurs des cartes tirées
If tab(i) <= 13 Then
carte(i) = " de carreau"
ElseIf tab(i) > 13 And tab(i) <= 26 Then
carte(i) = " de pique"
tab(i) = tab(i) - 13
ElseIf tab(i) > 27 And tab(i) <= 39 Then
carte(i) = " de coeur"
tab(i) = tab(i) - 26
Else : carte(i) = " de trèfle"
tab(i) = tab(i) - 39
End If
Next
'ici on met tout les chiffre de tab() sur la base de 13 pour pouvoir attribuer un peu plus loin les valeurs de cartes plus rapidement
For i = 0 To 9
If tab(i) > 13 And tab(i) <= 26 Then
tab(i) = tab(i) - 13
ElseIf tab(i) > 27 And tab(i) <= 39 Then
tab(i) = tab(i) - 26
Else : tab(i) = tab(i) - 39
End If
'et on stocke les valeurs et les noms des cartes tirées respectivement dans valeur () (pour compter les pts) et dans carte()
'une carte entre 1 et 10 garde sa valeur et sa dénomination correspond au chiffre
'pour les têtes (valet, dame et roi) on est obligé de faire au cas par cas.
If tab(i) <= 10 Then
carte(i) = tab(i) & carte(i)
valeur(i) = tab(i)
ElseIf tab(i) = 11 Then
carte(i) = "Valet" & carte(i)
valeur(i) = 10
ElseIf tab(i) = 12 Then
carte(i) = "Dame" & carte(i)
valeur(i) = 10
Else : carte(i) = "Roi" & carte(i)
valeur(i) = 10
End If
Next
'on met a jour les scores et les mains (juste pour une carte pour l instant) des 2joueurs (banquier et humain) en sachant que les cartes et leurs valeurs
'du joueur vont de carte et valeur (0) a (4)/ et (5) a (9) pour le banquier
score = valeur(0)
main = carte(0)
scorebanquier = valeur(5)
mainbanquier = carte(5)
'ici on s occupe du banquier on le fait piocher ou pas selon son score. si son score est strictement inférieur a 16, alors il repioche sion on sort de la boucle (k=k+5)
For k = 6 To 9
If repioche = True Then
scorebanquier = scorebanquier + valeur(k)
mainbanquier = mainbanquier & " et" & k - 5 & " carte(s) face cachée"
If scorebanquier >= 16 Then
repioche = False
End If
End If
Next
'ici on annonce aux joueurs les cartes que le banquier a, les cartes que lui-
'même a, et on lui propose de repiocher. S il veut pas ou s il a déjà 21 pts
'ou plus on sort de la boucle
For h = 1 To 4
score = score + valeur(h)
main = main & ", et " & carte(h)
If tirercarte = True Then
If score < 21 Then
tirer = InputBox("Vous avez en main: " & main & ". Cela vous fait un total de " & score & ". Quant au banquier il a" & mainbanquier & "Veux-tu repiocher une carte? Tape oui ou non. ")
If tirer = "non" Then
tirercarte = False
End If
End If
End If
Next
'ici on compare le score du joueur à la limite (21) et au score du banquier
'pour déterminer s il y a victoire ou pas, et donc faire gagner ou pas de
'l argent au joueur.
'on renvoie aux messages qui ont été initialisés plus haut.
If score > 21 And score > scorebanquier Then
MsgBox("Vous avez perdu cette donne.il vous reste " & argent)
ElseIf score < 21 And scorebanquier < 21 And score < scorebanquier Then
MsgBox("Vous avez perdu cette donne.il vous reste " & argent)
ElseIf score = scorebanquier Then
argent = argent + mise
MsgBox("Egalité, vous regagnez néanmoins ce que vous avez misé. il vous reste " & argent)
ElseIf score = 21 Then
argent = argent + 3 * mise
MsgBox("BLACK JACK !!! Vous gagnez 3 fois votre mise. il vous reste " & argent)
Else : MsgBox("vous avez gagné cette donne, vous gagnez 2 fois votre mise. il vous reste " & argent)
End If
'si le joueur n a plus d argent alors il perd et ne peut plus continuer les
'parties qu il avait prévues.
If argent <= 0 Then
x = x + Nbpartie
End If
Next
'ici on affiche un message différent selon s il reste ou pas de l argent au joueurs.
If argent <= 0 Then
MsgBox("Vous n'avez pas assez d'argent pour continuer. Désolé!")
Else : MsgBox("Vous avez fini vos " & Nbpartie & ". Il vous reste " & argent & ". Au revoir et à bientôt")
End If