Création d'une macro " Blackjack"

Fermé
Gwendolyn23 Messages postés 3 Date d'inscription samedi 11 mai 2013 Statut Membre Dernière intervention 12 mai 2013 - 11 mai 2013 à 19:32
julien_95 Messages postés 1 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 11 avril 2014 - 11 avril 2014 à 13:25
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.
A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
11 mai 2013 à 22:10
Pour aller d'un point à un autre dans un programme :

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 

0
Gwendolyn23 Messages postés 3 Date d'inscription samedi 11 mai 2013 Statut Membre Dernière intervention 12 mai 2013
12 mai 2013 à 20:52
Merci pour cette astuce " Goto " m'a bien aidé!
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
12 mai 2013 à 23:20
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
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 12/05/2013 à 01:07
Bonsoir,

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.
0
Gwendolyn23 Messages postés 3 Date d'inscription samedi 11 mai 2013 Statut Membre Dernière intervention 12 mai 2013
12 mai 2013 à 20:51
J'ai tout repris et cela fonctionne !

Merci pour votre aide :)
0
julien_95 Messages postés 1 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 11 avril 2014
11 avril 2014 à 13:25
Bonjour aurais tu la gentillesse de me poster le travaille finie de ta macro sur le black jack. S'il te plaît. Merci.
0