"loop" sans "do"

Résolu
docteur_nemo Messages postés 21 Statut Membre -  
docteur_nemo Messages postés 21 Statut Membre -
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

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
  2. félix
     
    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
    1. docteur_nemo Messages postés 21 Statut Membre
       
      merci ^^
      0