IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Problème avec select case


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut Problème avec select case
    Bonjour j'ai fait un petit jeu en vbs sur bloc-notes. Il commence bien mais une fois que l'utilisateur rentre la données numérique le programme saute le select case et va directement a la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Dim Nom
    inthighnumber = 100
    intlownumber = 1
    randomize
    intnumber = int((inthighnumber - intlownumber + 1) * rnd + intlownumber)
    msgbox(intnumber & "Ceci est le jeu plus ou moins, vous devez devinez le nombre choisie au hasard entre 1 et 100.Si vous avez donné la bonne réponse vous avez gagné,si vous n'avez pas la bonne réponse, il vous répond si votre réponse est plus grand ou plus petit que son nombre jusqu'à que vous avez trouvé son nombre et vous dit en combien d’essais cela vous à prit pour trouver le nombre.")
    Nom=Inputbox("Quelle est votre nom?")
    Reponse=inputbox("Entrez un nombre entre 1 et 100")
    select case Reponse
    case Reponse=111
    msgbox("exit")
    case Reponse < intnumber
    Compteur=compteur+1
    msgbox("Votre nombre est plus petit que le mien")
    case Reponse > intnumber
    Compteur=compteur+1
    msgbox("Votre nombre est plus grand que le mien")
    case Reponse = intnumber
    msgbox("bravo")
    End select
    msgbox("Bravo, vous avez réussie en " & compteur & " tours")
    ceci est ma première discussions si vous avez des commentaires CONSTRUCTIF je serais ravi de les lires

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    c'est l'instruction Select Case qui reçoit normalement l'expression à tester pas les clauses Case
    il existe un trick qui permet d'inverser la logique de cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Case True
    Case Reponse = 111
    ...
    Case Reponse < intnumber
    ...
    End Select
    si vous avez des commentaires CONSTRUCTIF
    ps : évite les messages comminatoires, tu augmenteras tes chances de réponse
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut
    merci de votre réponse j'ai fait comme vous avez dit mais maintenant quoi que l'utilisateur entre le programme répond toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox("Votre nombre est plus grand que le mien")
    il n'y a que le qui fonctionne dans le select case

  4. #4
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 843
    Par défaut

    Testez ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Titre = "DEVINER LE NOMBRE CHOISI PAR L'ORDINATEUR"
    Nom = InputBox("Avant de commencer le jeu je voudrais savoir votre Nom pour que cela soit plus conviviable." & vbCr & "Quel est votre Nom ?", "Quel est votre Nom ?")
    If Nom = "" Then Wscript.Quit
    DebutJeu = MsgBox("Très bien " & Dblquote(Nom) & ", voici les règles du jeu : " & vbCr & "L'ordinateur choisi un nombre compris entre 0 et 100 et vous devez le trouver." & vbCr & "Sachant que l'ordinateur vous dira si le nombre que vous devez trouvez est supérieur ou inférieur à celui que vous avez tapé." & vbCr & vbCr & "Voulez-vous commencer le jeu ?", vbInformation + vbYesNo, "Règles du jeu...")
    If DebutJeu = vbYes Then
    	MsgBox "Très bien alors c'est parti !!!",vbInformation,Titre
    	CodeJeu
    Else
    	WScript.Quit
    End If
    QuitOrReplay = MsgBox("Voulez-vous refaire une partie ?", vbYesNo + vbQuestion, "Voulez-vous rejouer ?")
    If QuitOrReplay = vbYes Then
    	CodeJeu
    Else
    	WScript.Quit
    End If
     
    Sub CodeJeu()
    	Randomize
    	NombreATrouver = Int(Rnd * 101)
    	NombreDeCoups = 1
    'Msgbox  NombreATrouver
    	While NombreJoueur <> NombreATrouver
    		NombreJoueur = InputBox("Tapez le nombre qui vous paraîtrait être celui que l'ordinateur à choisi.",Titre)
    		If NombreJoueur = "" Then Exit Sub
    		On Error Resume Next
    		NombreJoueur = Int(NombreJoueur)
    		If Err <> 0 Then MsgBox "Vous n'avez pas entré un nombre !",16,"Vous n'avez pas entré un nombre !": Exit Sub
    		If NombreJoueur < NombreATrouver Then
    			MsgBox "C'est plus (+)!!!",64,"C'est plus (+)!!!"
    			NombreDeCoups = NombreDeCoups + 1
    		ElseIf NombreJoueur > NombreATrouver Then
    			MsgBox "C'est moins (-)!!!",64,"C'est moins (-)!!!"
    			NombreDeCoups = NombreDeCoups + 1
    		End If
    	Wend
    	MsgBox "Très Bien joué ! " & Dblquote(Nom) & ", le nombre choisi par l'ordinateur était " & NombreATrouver & " ." & vbCr & "Vous avez trouvé ce nombre en " & NombreDeCoups & " coups.",64,Titre
    End Sub
     
    Function Dblquote(str)
    	Dblquote = chr(34) & str & chr(34)
    End Function

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    ok, ma réponse n'était pas complète car il faut aussi tenir compte du cast
    l'exemple complet avec l'inputbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    intnumber = 57
    Reponse = CLng(InputBox("Entrez un nombre entre 1 et 100"))
    Select Case True
    Case Reponse = 111
    	Msgbox "sortie"
    Case Reponse < intnumber
    	MsgBox "dessous"
    Case Reponse = intnumber
    	Msgbox "bingo"
    Case (Reponse > intnumber) and (Reponse < 101)
    	Msgbox "dessus"
    End Select
    Msgbox "fin du jeu"
    voir la fonction CLng ligne n°2
    le transtypage explicite de la variable renvoyée par inputbox est indispensable
    car le cast implicite ne fonctionnera que pour une comparaison avec une valeur numérique expresse ce qui explique que seule la clause "Reponse=111" fonctionnait
    je me dis d'ailleurs qu'un petit topo sur le typage/transtypage des variables dans vbs ne serait pas inutile surtout quand je vois cette discussion...

    ps : hackoofr, je crois que Ryusaki cherche plutôt à apprendre qu'à "jouer" avec un script complet
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 843
    Par défaut
    Omen999 pour ces remarques
    Donc le code avec Select Case devient quelque chose comme ça en ajoutant une Boucle While (Condition)....Wend et quelques gestion d'erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Dim Nom,intnumber,NombreDeCoups,Titre
    Titre = "DEVINER LE NOMBRE CHOISI PAR L'ORDINATEUR"
    randomize
    intnumber = Int(Rnd * 101)
    Msgbox intnumber & " Ceci est le jeu plus ou moins, vous devez devinez le nombre choisie au hasard entre 1 et 100."&vbcr&_
    "Si vous avez donné la bonne réponse vous avez gagné,si vous n'avez pas la bonne réponse, il vous répond si votre réponse est plus grand ou plus petit que son nombre"&vbcr&_
    "jusqu'à que vous avez trouvé son nombre et vous dit en combien d’essais cela vous à prit pour trouver le nombre.",VbInformation,Titre
    Nom=Inputbox("Quelle est votre nom?",Titre)
    If Nom = "" Then Wscript.Quit
    NombreDeCoups = 1
    On Error Resume Next
    While Reponse <> intnumber
        Reponse = CInt(InputBox("Entrez un nombre entre 1 et 100",Titre))
        If Err <> 0 Then MsgBox "Vous n'avez pas entré un nombre !",16,"Vous n'avez pas entré un nombre !"
        Err.Clear
        Select Case True
        Case Reponse > 100
            Msgbox "Le Nombre Choisi est > 100",64,Titre
        Case Reponse < intnumber
            MsgBox "C'est plus (+)!!!",64,"C'est plus (+)!!!"
            NombreDeCoups = NombreDeCoups + 1
        Case Reponse = intnumber
            MsgBox "Très Bien joué ! " & Dblquote(Nom) & ", le nombre choisi par l'ordinateur était " & intnumber & " ." & vbCr & "Vous avez trouvé ce nombre en " & NombreDeCoups & " coups.",64,Titre
        Case (Reponse > intnumber) and (Reponse < 101)
            MsgBox "C'est moins (-)!!!",64,"C'est moins (-)!!!"
            NombreDeCoups = NombreDeCoups + 1
        End Select
    Wend
     
    Function Dblquote(str)
        Dblquote = chr(34) & str & chr(34)
    End Function

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut
    merci Omen999 pour vos réponses cela ma bien aider. Oui un topo sur le typage/transtypage m'aiderais bien je vais le chercher sur
    aussi c'est la première fois que je vois la boucle While (Condition)....Wend
    celui que j'aurai utiliser serait Do....Loop Until(Condition)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec SELECT CASE
    Par skeeler dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/02/2008, 09h51
  2. probléme avec Select Case
    Par polodu84 dans le forum Général VBA
    Réponses: 9
    Dernier message: 01/02/2008, 11h57
  3. [Débutant] Problème avec select case
    Par feynman dans le forum Fortran
    Réponses: 2
    Dernier message: 11/09/2007, 15h35
  4. Problème avec select case
    Par juliopony dans le forum Fortran
    Réponses: 4
    Dernier message: 14/06/2007, 20h57
  5. Problème avec Select case !
    Par kaiser59 dans le forum ASP
    Réponses: 4
    Dernier message: 27/05/2007, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo