"loop" sans "do"

Résolu/Fermé
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018 - 8 juil. 2017 à 19:13
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018 - 9 juil. 2017 à 18:00
bonjour,
j'ai un problème avec mon programme:
a chaque fois que je le lance, il me dit erreur, 'loop' sans 'de' mais je suis pas fou, je l'ai mis le do.
Merci de me dire comment résoudre ce problème.

Le programme:

'plus ou moins
Randomize
MsgBox "Plus ou moins" & Chr(10) & "Bienvenue dans le jeu du plus ou moins",0,"plus_ou_moins"
w = MsgBox("une fois ce jeu lance, vous ne pourrez l'arreter qu'en gagnant," & Chr(10) & "etes-vous sur ?",36,"plus_ou_moins")
If w = 7 then 'arret
msgbox "alors en revoir ^^",0,"plus_ou_moins"
WScript.quit
End If
'initialization
dim dif
dim d
dif = msgboxperso("quelle difficulte voulez-vous ?","plus_ou_moins",32,"facile","difficile","true") 'choix difficulte
If dif = 1 then 'facile
d = 100
Else if dif = 2 then 'difficile
d = 1000
Else if dif = 0 then 'annuler
WScript.quit
End If
dim s
s = 1
x = int(Rnd * d) + 1 'tirrage nb aleatoire 1<x<d

Do
y = int(InputBox("ton nombre","plus_ou_moins","nbr")) 'input nbr joueur
If y < x then 'plus petit
msgbox "plus grand",0,"plus_ou_moins"
Else If y > x then 'plus grand
msgbox "plus petit",0,"plus_ou_moins"
Else If y < 1 or y > d then 'hors bornes
msgbox "tu n'est pas dans les bornes",0,"plus ou moins"
End If
If y = x then 'victoire
Msgbox "felicitation, tu as trouve en " & s & " coups",0,"plus_ou_moins"
z = msgbox("veux tu recommencer ?",4+32,"plus_ou_moins") 'nouvelle partie ?
If z = 7 then 'non
Msgbox "Merci d'avoir joue",0,"plus_ou_moins" 'message au revoir
WScript.quit
Else If z = 6 then 'oui
msgbox "alors allons-y pour une nouvelle partie",0,"plus_ou_moins"
dif = msgboxperso("quelle difficulte voulez-vous ?","plus_ou_moins",32,"facile","difficile","true") 'choix difficulte
If dif = 1 then 'facile
d = 100
Else If dif = 2 then 'difficile
d = 1000
Else If dif = 0 then 'annuler
WScript.quit
End If
'reinitialisation
s = 0
x = int(Rnd * d) + 1 'tirrage nb aleatoire 1<x<d
End If
End If
s = s + 1
loop

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
8 juil. 2017 à 19:30
Bonjour Nemo, bonjour le forum,

Je pense que le problème vient de Else If que tu devrais écrire ElseIf (sans espace)
Ton code modifié et avec identation (ce qui le rend bien plus facile à lire)

Dim dif
Dim d
Dim s

'plus ou moins
Randomize
MsgBox "Plus ou moins" & Chr(10) & "Bienvenue dans le jeu du plus ou moins", 0, "plus_ou_moins"
w = MsgBox("une fois ce jeu lance, vous ne pourrez l'arreter qu'en gagnant," & Chr(10) & "etes-vous sur ?", 36, "plus_ou_moins")
If w = 7 Then 'arret
    MsgBox "alors en revoir ^^", 0, "plus_ou_moins"
    WScript.Quit
End If
'initialization
dif = msgboxperso("quelle difficulte voulez-vous ?", "plus_ou_moins", 32, "facile", "difficile", "true") 'choix difficulte
If dif = 1 Then 'facile
    d = 100
ElseIf dif = 2 Then 'difficile
    d = 1000
ElseIf dif = 0 Then 'annuler
    WScript.Quit
End If
s = 1
x = Int(Rnd * d) + 1 'tirrage nb aleatoire 1<x<d
Do
    y = Int(InputBox("ton nombre", "plus_ou_moins", "nbr")) 'input nbr joueur
    If y < x Then 'plus petit
        MsgBox "plus grand", 0, "plus_ou_moins"
    ElseIf y > x Then 'plus grand
        MsgBox "plus petit", 0, "plus_ou_moins"
    ElseIf y < 1 Or y > d Then 'hors bornes
        MsgBox "tu n'est pas dans les bornes", 0, "plus ou moins"
    End If
    If y = x Then 'victoire
        MsgBox "felicitation, tu as trouve en " & s & " coups", 0, "plus_ou_moins"
        Z = MsgBox("veux tu recommencer ?", 4 + 32, "plus_ou_moins") 'nouvelle partie ?
        If Z = 7 Then 'non
            MsgBox "Merci d'avoir joue", 0, "plus_ou_moins" 'message au revoir
            WScript.Quit
        ElseIf Z = 6 Then 'oui
            MsgBox "alors allons-y pour une nouvelle partie", 0, "plus_ou_moins"
            dif = msgboxperso("quelle difficulte voulez-vous ?", "plus_ou_moins", 32, "facile", "difficile", "true") 'choix difficulte
            If dif = 1 Then 'facile
                d = 100
            ElseIf dif = 2 Then 'difficile
                d = 1000
            ElseIf dif = 0 Then 'annuler
                WScript.Quit
            End If
            'reinitialisation
            s = 0
            x = Int(Rnd * d) + 1 'tirrage nb aleatoire 1<x<d
        End If
    End If
    s = s + 1
Loop


0
Bonjour docteur_nemo,

Dans le programme que j'avais fait, j'avais oublié l'instruction int =>
si tu corriges ainsi la ligne #11, ça devrait aller :
y = Int(InputBox("ton nombre", "plus_ou_moins", "nbr")) 'input nbr joueur
car le retour de InputBox est du texte, et avec Int, c'est converti en entier.

À part ça, la structure était mieux (ordre des tests) ; et tu auras remarqué
qu'on sort de la 2ème boucle Do seulement si le nb y est dans les bornes.

D'autre part, si WScript.Quit arrête le programme et sort de la sub,
c'est ok ; sinon, il suffit de rajouter juste après « : Exit Sub ».

-------------------------------------

J'ai vu que tu as ajouté 2 niveaux de difficulté ; tu devrais plutôt en
ajouter 3, via InputBox : 1 = facile ; 2 = moyen ; 3 = difficile


  Select Case dif
    Case 1: d = 100    ' facile
    Case 2: d = 500    ' moyen
    Case 3: d = 1000   ' difficile
  End Select


Un niveau intermédiaire, ce sera plus sympa pour le joueur.  ;)
 
0
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
9 juil. 2017 à 18:00
merci ^^
0