Signaler

Prblm petit programme vbs, peine a trouver l'erreur [Résolu]

Posez votre question docteur_nemo 16Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - Dernière réponse le 10 juil. 2017 à 22:51 par félix
bonjour, je debute en programmation et j'ai essayé de faire un truc simple.
C'est un mini-logiciel de jeu plus ou moins en "msgbox".
Malheureusement, a chaque fois que je le lance, il me dit "plus petit, meme lorsqu'il est censé me dire "hors bornes".
Si vous pouviez me dire ou j'ai fait une erreur, merci


Randomize
msgbox "hhh"
x = int(Rnd * 100) + 1 'tirrage nb aleatoire 1<x<100

do

y = InputBox("ton nombre","plus_ou_moins","nbr") 'input nbr joueur

If y < x then 'plus petit
msgbox "plus grand",0,"plus_ou_moins"
End If

If y > x then 'plus grand
msgbox "plus petit",0,"plus_ou_moins"
End If

If y < 1 or y > 100 then 'hors bornes
msgbox "tu n'est pas dans les bornes",0,"plus ou moins"
End If

If y = x then 'egal
Msgbox "felicitation, tu as trouve",0,"plus_ou_moins"

z = msgbox("veux tu recommencer ?",4+32,"plus_ou_moins") 'question

If z = 6 then 'oui
GoToLine 5
End If

If z = 7 then 'non
Msgbox "Merci d'avoir joue",0,"plus_ou_moins" 'message au revoir
WScript.quit
End If
End If

loop
Utile
+0
plus moins
Salut !

Je pense que quand ton y = -1 les 2 conditions sont valide ( plus petit et hors borne)
C'est pour ca que tu as les 2 messages
docteur_nemo 16Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 7 juil. 2017 à 20:27
Non, ce n'est pas ca, le programme n'affiche que le message plus petit alors que normalement il devrait afficher plus grand ou hors bornes, j'ai toujours le même message unique
Répondre
yg_be 3753Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 10 novembre 2017 Dernière intervention - 7 juil. 2017 à 21:20
que se passe-t'il quand tu acceptes le message unique?
que fait le programme?
Répondre
docteur_nemo 16Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 7 juil. 2017 à 22:56
Il me redemande un nombre et ca répond a nouveau par plus petit
Répondre
yg_be 3753Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 10 novembre 2017 Dernière intervention - 7 juil. 2017 à 23:15
quel nombre encodes-tu?
Répondre
docteur_nemo 16Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 8 juil. 2017 à 10:04
un nombre aléatoire entre 1 et 100
Répondre
Donnez votre avis
Utile
+0
plus moins
bonjour,
tenant compte de la remarque de Unombre, tu pourrais faire ainsi:
        If y < 1 or y > 100 then 'hors bornes
		msgbox "tu n'est pas dans les bornes",0,"plus ou moins"
	ElseIf 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 = x then 'egal
 
docteur_nemo 16Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 8 juil. 2017 à 19:08
merci, je l'ai optimisé
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour docteur_nemo,

Je te propose ce code (vérifie le GoToLine) :


Randomize

MsgBox "hhh"

x = Int(Rnd * 100) + 1 'tirage nb aléatoire 1<x<100

Do
    
  Do
    y = InputBox("ton nombre", "plus_ou_moins", "nbr") 'input nbr joueur
    If y >= 1 And y <= 100 Then Exit Do 'dans les bornes
    MsgBox "tu n'es pas dans les bornes", 0, "plus ou moins"
  Loop
    
  If y = x Then 'egal
    MsgBox "félicitations, tu as trouvé", 0, "plus_ou_moins"
    Z = MsgBox("veux-tu recommencer ?", 4 + 32, "plus_ou_moins") 'question
    If Z = 6 Then 'oui
      GoToLine 10 ' à adapter pour qu'il pointe sur la ligne du 2ème Do
    End If
    If Z = 7 Then 'non
      MsgBox "Merci d'avoir joué", 0, "plus_ou_moins" 'message au revoir
      WScript.Quit
    End If
  End If
  
  ' si trouvé : traitement effectué ci-dessus ; sinon,
  ' ce sera forcément plus petit ou plus grand :
  
  If y < x Then 'plus petit
    MsgBox "plus grand", 0, "plus_ou_moins"
  Else 'plus grand
    MsgBox "plus petit", 0, "plus_ou_moins"
  End If

Loop


Merci de me dire si ça te convient.
 
docteur_nemo 16Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 7 juil. 2017 à 22:59
Fantastique, merci ^^
Répondre
yg_be 3753Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 10 novembre 2017 Dernière intervention - 8 juil. 2017 à 10:19
peux-tu marquer ceci comme résolu?
merci!
Répondre
docteur_nemo 16Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 8 juil. 2017 à 19:09
en fait ca n'as finalement pas fonctionné
Répondre
félix- 8 juil. 2017 à 20:15
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 ».
 
Répondre
félix docteur_nemo - 10 juil. 2017 à 22:51
 
@docteur_nemo

Est-ce que tu utilises seulement VBS ? ou tu utilises aussi le VBA d'Excel ?
Si tu as Excel : en quelle version ? j'ai un fichier Excel qui pourrait bien
t'intéresser. À te lire.
 
Répondre
Donnez votre avis
Utile
+0
plus moins
et ainsi?
y = int(InputBox("ton nombre","plus_ou_moins","nbr")) 'input nbr joueur

docteur_nemo 16Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 8 juil. 2017 à 19:10
merci, prblm résolu
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !