Création d'une macro " Blackjack"
Gwendolyn23
Messages postés
3
Statut
Membre
-
julien_95 Messages postés 1 Statut Membre -
julien_95 Messages postés 1 Statut Membre -
Bonjour,
Dans le cadre d'un devoir d'informatique, je cherche à créer une macro sur le thème du casino. J'ai choisi le Blackjack.
Ma question est la suivante: comment faire en sorte d'aller d'un point à un autre dans une macro?
Je précise, voici mon travail:
Sub blackjack()
Dim valeur As Double
Dim mise As Double
Dim x As Integer
Dim choix As Integer
Dim banque As Integer
Dim autrepartie As Integer
Dim carte1 As Integer
Dim carte2 As Integer
Dim carte3 As Integer
valeur = 500
MsgBox (" Pour débuter, vous disposez de " & valeur & "euros ")
InputBox (" Votre mise : ")
If mise < 0 Or mise > valeur Then
InputBox (" Vous ne pouvez miser cette somme. ")
End If
Randomize
carte1 = Int((Rnd() * 10) + 1)
carte2 = Int((Rnd() * 10) + 1)
Total = carte1 + carte2
MsgBox (" Vous recevez " & carte1 & " et " & carte2 & " soit : " & carte1 + carte2)
Do
choix = InputBox(" Une autre carte ? 1- oui 2- non ")
If choix = 1 Then carte3 = Int((Rnd() * 10)) + 1
Total = carte3 + Total
MsgBox (carte3)
MsgBox (" Votre total s'élève à : " & Total)
Loop While choix = 1 And Total < 21
If Total > 21 Then MsgBox (" Vous avez perdu, votre total est supérieur à 21 !")
valeur = valeur - mise
Do
banque = (Int(Rnd() = 10) + 1) + banque
Loop While banque = Total
MsgBox (" Score de la banque : " & banque)
valeur = valeur + mise
If banque > 21 Then MsgBox ("Vous avez gagné! La banque dépasse 21 ! ")
If (banque < Total) Then MsgBox ("Bravo vous avez gagné! Votre score est supérieur à celui de la banque. ")
valeur = valeur + mise
If (banque = Total) Then MsgBox (" Egalité. Personne ne gagne . ")
If (Total = 21) Then MsgBox ("BLACKJACK !! Vous empochez 2 fois votre mise.")
valeur = valeur + 2 * mise
If (banque > Total) Then MsgBox (" Vous avez perdu. La banque empoche votre mise. ")
valeur = valeur - mise
If (valeur = 0) Then MsgBox ("Vous n'avez plus de crédit ! ")
InputBox ("Voulez vous recommencer une autre partie? 1-oui 2-non")
If (autrepartie = 1) Then valeur = 500
End Sub
Au début, 2 cartes sont proposées, jusque là tout va bien. Ensuite je demande à l'utilisateur s'il souhaite avoir une autre carte et là je bloque...
La réponse "2- Non" n'est pas valide, la macro continue de s'exécuter même si le joueur ne veut plus de carte.
Merci pour votre aide,
Cordialement.
Dans le cadre d'un devoir d'informatique, je cherche à créer une macro sur le thème du casino. J'ai choisi le Blackjack.
Ma question est la suivante: comment faire en sorte d'aller d'un point à un autre dans une macro?
Je précise, voici mon travail:
Sub blackjack()
Dim valeur As Double
Dim mise As Double
Dim x As Integer
Dim choix As Integer
Dim banque As Integer
Dim autrepartie As Integer
Dim carte1 As Integer
Dim carte2 As Integer
Dim carte3 As Integer
valeur = 500
MsgBox (" Pour débuter, vous disposez de " & valeur & "euros ")
InputBox (" Votre mise : ")
If mise < 0 Or mise > valeur Then
InputBox (" Vous ne pouvez miser cette somme. ")
End If
Randomize
carte1 = Int((Rnd() * 10) + 1)
carte2 = Int((Rnd() * 10) + 1)
Total = carte1 + carte2
MsgBox (" Vous recevez " & carte1 & " et " & carte2 & " soit : " & carte1 + carte2)
Do
choix = InputBox(" Une autre carte ? 1- oui 2- non ")
If choix = 1 Then carte3 = Int((Rnd() * 10)) + 1
Total = carte3 + Total
MsgBox (carte3)
MsgBox (" Votre total s'élève à : " & Total)
Loop While choix = 1 And Total < 21
If Total > 21 Then MsgBox (" Vous avez perdu, votre total est supérieur à 21 !")
valeur = valeur - mise
Do
banque = (Int(Rnd() = 10) + 1) + banque
Loop While banque = Total
MsgBox (" Score de la banque : " & banque)
valeur = valeur + mise
If banque > 21 Then MsgBox ("Vous avez gagné! La banque dépasse 21 ! ")
If (banque < Total) Then MsgBox ("Bravo vous avez gagné! Votre score est supérieur à celui de la banque. ")
valeur = valeur + mise
If (banque = Total) Then MsgBox (" Egalité. Personne ne gagne . ")
If (Total = 21) Then MsgBox ("BLACKJACK !! Vous empochez 2 fois votre mise.")
valeur = valeur + 2 * mise
If (banque > Total) Then MsgBox (" Vous avez perdu. La banque empoche votre mise. ")
valeur = valeur - mise
If (valeur = 0) Then MsgBox ("Vous n'avez plus de crédit ! ")
InputBox ("Voulez vous recommencer une autre partie? 1-oui 2-non")
If (autrepartie = 1) Then valeur = 500
End Sub
Au début, 2 cartes sont proposées, jusque là tout va bien. Ensuite je demande à l'utilisateur s'il souhaite avoir une autre carte et là je bloque...
La réponse "2- Non" n'est pas valide, la macro continue de s'exécuter même si le joueur ne veut plus de carte.
Merci pour votre aide,
Cordialement.
A voir également:
- Création d'une macro " Blackjack"
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
2 réponses
Pour aller d'un point à un autre dans un programme :
1) mettre une étiquette avant l'autre point, par exemple :
2) utiliser Goto à partir du premier point, par exemple :
1) mettre une étiquette avant l'autre point, par exemple :
AutrePoint: MsgBox "La partie est terminée" Exit Sub
2) utiliser Goto à partir du premier point, par exemple :
Rep = MsgBox("Voulez-vous arrêter ?", vbYesNo)
If Rep = vbYes Then GoTo AutrePoint
'Sinon on continue
MsgBox "la partie continu !"
Stop
Gwendolyn23
Messages postés
3
Statut
Membre
Merci pour cette astuce " Goto " m'a bien aidé!
Patrice33740
Messages postés
8930
Statut
Membre
1 781
Il ne s'agit pas d'une astuce mais de l'instruction normale (en VBA) pour faire un saut d'un point à un autre d'un programme
Bonsoir,
J'ai testé et il sort bien de la boucle si je répond 2.
Par contre quand tu écris :
Vu que tu as mis qcq chose derrière le Then tu es sur un If sur 1 seule ligne.
Tout ce que est en-dessous s'exécute car ton If est fini en fin de ligne.
Pour un If sur plusieurs lignes écrire :
Si le test est positif toutes les lignes entre le If et le Endif s'exécuteront, aucune s'il est négatif.
A toi de voir si tu voulais mettre toutes ces lignes dans le If ou pas.
Tu as pour ainsi dire tous tes IF à reprendre...
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
J'ai testé et il sort bien de la boucle si je répond 2.
Par contre quand tu écris :
If choix = 1 Then carte3 = Int((Rnd() * 10)) + 1
Total = carte3 + Total
MsgBox (carte3)
MsgBox (" Votre total s'élève à : " & Total)
Vu que tu as mis qcq chose derrière le Then tu es sur un If sur 1 seule ligne.
Tout ce que est en-dessous s'exécute car ton If est fini en fin de ligne.
Pour un If sur plusieurs lignes écrire :
If choix = 1 Then ' rien d'autre derrière !!! carte3 = Int((Rnd() * 10)) + 1 Total = carte3 + Total MsgBox (carte3) MsgBox (" Votre total s'élève à : " & Total) End If
Si le test est positif toutes les lignes entre le If et le Endif s'exécuteront, aucune s'il est négatif.
A toi de voir si tu voulais mettre toutes ces lignes dans le If ou pas.
Tu as pour ainsi dire tous tes IF à reprendre...
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.