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

VB.NET Discussion :

Cours particulier sur les boucles [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Points : 87
    Points
    87
    Par défaut Cours particulier sur les boucles
    Voilà mon petit problème ou plutôt... mon gros problème :

    Je pensais que While pouvait se traduire par tant que...

    Donc, en suivant cette logique, si j'ai une variable de type interger appellée "Compteur" qui n'est pas égale à 2 donc, tu me fais toute la procédure du jeu (dans laquelle la variable public compteur peut être égale à deux selon l'utilisateur). Si elle devient égale à 2 alors GAME OVER

    J'ai fait ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    compteur=0
    While compteur<>2
    partie_en_cours()
    end while
     
    ecran1.close
    game_over.show()
    Là je tombe dans une boucle infinie ! Pourquoi ? ? ?

    Ensuite, si j'utilise Do

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Compteur=0
    Do
    partie_en_cours()
    Loop while compteur<>2
     
    ecran1.close
    game_over.show()
    Ce coup-ci, il m'affiche directement la fenêtre game over ! ! ! !

    Quelqu'un pourrait-il m'expliquer ce fonctionnement bizarre ?

    Merci d'avance car je deviens fou !

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 86
    Points : 55
    Points
    55
    Par défaut
    Salut

    Il est où ton compteur ?
    Comment est lue sa valeur ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    parce que ton compteur est toujours égal à 0, si tu l'incrémentes pas toi il ne le fera pas tout seul
    dans ta boucle faut que tu fasse un

  4. #4
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    dans ta boucle faut que tu fasse un
    Sa démarche n'est peut être pas d'incrémenter le compteur..

    Citation Envoyé par toutoune95800 Voir le message
    Je pensais que While pouvait se traduire par tant que...
    C'est bien ça.

    Citation Envoyé par toutoune95800 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    compteur=0
    While compteur<>2
    partie_en_cours()
    end while
    Ici ton compteur est toujours égal à 0, donc jamais égal à 2..

    Ton compteur est censé compté quoi ?
    Et surtout où? Dans la fonction partie_en_cours()? Si c'est ça, il faut que la fonction renvoie la valeur à tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    compteur=0
    While compteur<>2
    compteur = partie_en_cours()
    end while
    En tout cas, il faut que tu touche à un moment donner au compteur pour que sa valeur soit à 2..
    J’ai des questions à toutes vos réponses!

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si on regarde bien les 2 boucles qu'il nous donne et si la méthode ne change pas entre les 2 tentatives c'est impossible que l'une sorte et pas l'autre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Points : 87
    Points
    87
    Par défaut
    Mon compteur est dans le sub "partie_en_cours"

    Exemple :

    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
     
    Sub partie_en_cours ' Dire bonjour
     
            If ecran1.box_utilisateur.Text.ToUpper = "BONJOUR" Then
                ecran1.hector_parle.Text = discours_hector(2)
                ecran1.box_utilisateur.Text = ""
                validation(0) = True
     
            ElseIf ecran1.box_utilisateur.Text.ToUpper = "MERDE" Then
                ecran1.hector_parle.Text = discours_hector(3)
                ecran1.box_utilisateur.Text = ""
                validation(0) = False
                compteur+=1
     
            Else
     
                ecran1.hector_parle.Text = discours_hector(4)
                ecran1.box_utilisateur.Text = ""
                validation(0) = False
     
            End if
     
    End sub
    Ce qui donnait dans mon sub jeux


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Sub jeux()
     
    Compteur=0
    While compteur<>2 ' Car il a deux chances d'être poli
    partie_en_cours()
    End While
     
    game_over()

    Dans le sub partie en cours, l'utilisateur tape des phrases. Si jamais, il écrit "merde" deux fois, alors le jeu se ferme.
    Normalement, il incrémente le compteur dans le sub partie_en_cours mais je retombe sur des boucles infinies.

    J'ai bien essayé avec un if mais il vérifie une seule fois la condition et ne reviens plus dessus.

    Je ne déspère pas... Un jour, je comprendrais ! ! ! lol

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Citation Envoyé par -N4w4k- Voir le message
    Et surtout où? Dans la fonction partie_en_cours()? Si c'est ça, il faut que la
    Tout dépend, si la variable compteur est déclarée dans la fonction qui appelle partie_en_cours ou si elle est déclarée au niveau de la class
    Ce qui nous faudrait c'est voir le code de partie_en_cours.

    Faire un bon débogage en mode pas à pas aide souvent à trouver ce genre d'erreur...

  8. #8
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Es tu sur que la variable compteur dans jeu() et dans partie_en_cours() est la même?

    Faire un bon débogage en mode pas à pas aide souvent à trouver ce genre d'erreur...
    +1
    J’ai des questions à toutes vos réponses!

  9. #9
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Points : 87
    Points
    87
    Par défaut
    Tout se passe dans le module "JEUX"

    Dans ce module se trouve une succession de SUB comme vous avez pu le voir. Toutes les déclarations de variables se trouvent dans le module JEUX avant le premier SUB donc le fameux compteur...

    J'ai placé un label sur mon écran 1 pour voir si le compteur augmente quand il le doit et il le fait sans problème. Il n'y a donc aucun problème du côté de l'incrémentation.

    J'ai donc placé au tout début une structure if sans mettre compteur=0.

    Tout fonctionne bien si ce n'est que j'ai du mettre compteur<>1 au lieu de compteur<>2 pour que réellement il y est deux chances ! Sinon, il en mettait 3 !

    En tout cas merci beaucoup pour votre aide mais c'est vrai que je reste dans le noir sujet de cette boucle !

  10. #10
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour toutoune95800.
    Mais j'ai pas vu de boucle de jeux avec compteur integer.....
    Ce que l'on fait habituellement dans un jeu c'est un boolean gameOver et c'est plus clair....

    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
     
    private gameOver as Boolean = False
    Sub jeux()
        gameOver = False
        While  Not gameOver    
           gameOver = partie_en_cours(gameOver )
        End While
       'la variante do ...loop  execute un pas en plus car la condition est   
       'teste apres execution.....   
       gameOver = False
       Do
          gameOver = partie_en_cours(gameOver )
      Loop while  Not gameOver    
     
    end sub
    Function partie_en_cours(ByVal gameOver  as Boolean)  as Boolean  
            If ecran1.box_utilisateur.Text.ToUpper = "BONJOUR" Then
                ecran1.hector_parle.Text = discours_hector(2)
                ecran1.box_utilisateur.Text = ""
                validation(0) = True
     
            ElseIf ecran1.box_utilisateur.Text.ToUpper = "MERDE" Then
                ecran1.hector_parle.Text = discours_hector(3)
                ecran1.box_utilisateur.Text = ""
                validation(0) = False
                compteur+=1
     
            Else
     
                ecran1.hector_parle.Text = discours_hector(4)
                ecran1.box_utilisateur.Text = ""
                validation(0) = False
     
            End if
            If compteur=2 Then 
              gameOver =True
           End If
           Return gameOver
    End Function
    bon code................

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

Discussions similaires

  1. Demande les cours particuliers sur Microsoft BI
    Par SophieTaureau dans le forum Microsoft BI
    Réponses: 4
    Dernier message: 07/11/2013, 16h25
  2. [VBS]Bug sur les boucles for.
    Par méphistopheles dans le forum VBScript
    Réponses: 7
    Dernier message: 24/03/2006, 22h17
  3. [2000] Activité en cours\Informations sur les processus
    Par Débéa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/02/2006, 11h42
  4. cherche cours particulier concernant les includes
    Par giova_fr dans le forum MFC
    Réponses: 6
    Dernier message: 27/01/2006, 14h43

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