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

Windows Forms Discussion :

probleme d'incrémentation d'une variable


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 34
    Points : 30
    Points
    30
    Par défaut probleme d'incrémentation d'une variable
    Bonjour,
    voilà j'ai fait un programme qui simule un tirage de Lotto XD
    Avec un petit jeu en plus qui demande à l'utilisateur 6 nombres et qui est cencé ajouter 1 à une variable (lorsque le nombre entré correspond au nombre sorti (par le programme)) et l'affiche dans un label, voici le 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
      Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            End
     
        End Sub
     
        Private Sub Btn_tir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_tir.Click
     
            Lbl1.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl2.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl3.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl4.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl5.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl6.Text = CStr(CInt((41 * Rnd() + 1)))
     
        End Sub
     
        Private Sub BtnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPlay.Click
            Dim number, numbers, tableau(5) As String
     
            Dim i, B As Short
            Dim numberwin As Integer = 0
     
     
            Lbl1.Text = CInt((41 * Rnd() + 1))
            Lbl2.Text = CInt((41 * Rnd() + 1))
            Lbl3.Text = CInt((41 * Rnd() + 1))
            Lbl4.Text = CInt((41 * Rnd() + 1))
            Lbl5.Text = CInt((41 * Rnd() + 1))
            Lbl6.Text = CInt((41 * Rnd() + 1))
     
            For i = 0 To 5
                numbers = InputBox("Rentrez vos nombre ici", "Jeu fictif loterie", number)
     
                tableau(i) = numbers
                Try
                    If tableau(i) = Lbl1.Text Or Lbl2.Text Or Lbl3.Text Or Lbl4.Text _
                                Or Lbl5.Text Or Lbl6.Text Then
                        numberwin += 1
     
                    Else
                        Lbl1.Text = Lbl2.Text
                        Lbl1.Text = Lbl3.Text
                        Lbl1.Text = Lbl4.Text
                        Lbl1.Text = Lbl5.Text
                        Lbl1.Text = Lbl6.Text
     
                        Lbl2.Text = Lbl3.Text
                        Lbl2.Text = Lbl4.Text
                        Lbl2.Text = Lbl5.Text
                        Lbl2.Text = Lbl6.Text
     
                        Lbl3.Text = Lbl4.Text
                        Lbl3.Text = Lbl5.Text
                        Lbl3.Text = Lbl6.Text
     
                        Lbl4.Text = Lbl5.Text
                        Lbl4.Text = Lbl6.Text
                        Lbl4.Text = Lbl2.Text
     
                        Lbl5.Text = Lbl6.Text
                    End If
     
                Catch ex As Exception
                    MsgBox(ex.ToString)
     
                End Try
            Next
     
     
            Label1.Text = CStr(numberwin)
     
        End Sub
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Randomize()
        End Sub
    End Class
    il y a plusieurs problèmes :
    1) dans tous les cas (que j'ai testé) , la variable "numberwin" contenait le chiffre (6), à mon avis le problème viens de la comparaison entre les valeurs du tableau et les labels

    2) Y a t'il moyen de diminuer le nombre de lignes de codes pour exprimer ceci?

    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
     
      Lbl1.Text = Lbl2.Text
                        Lbl1.Text = Lbl3.Text
                        Lbl1.Text = Lbl4.Text
                        Lbl1.Text = Lbl5.Text
                        Lbl1.Text = Lbl6.Text
     
                        Lbl2.Text = Lbl3.Text
                        Lbl2.Text = Lbl4.Text
                        Lbl2.Text = Lbl5.Text
                        Lbl2.Text = Lbl6.Text
     
                        Lbl3.Text = Lbl4.Text
                        Lbl3.Text = Lbl5.Text
                        Lbl3.Text = Lbl6.Text
     
                        Lbl4.Text = Lbl5.Text
                        Lbl4.Text = Lbl6.Text
                        Lbl4.Text = Lbl2.Text
     
                        Lbl5.Text = Lbl6.Text
    Merci d'avance, toute réponse est la bienvenue
    PS: si besoin, posez vos questions.

  2. #2
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2003
    Messages : 201
    Points : 182
    Points
    182
    Par défaut
    j'ai recréer ton programme ce midi et je l'ai trouvé un peu bizzarre

    1 - comme il est programmé, tu peux faire un tirage sans entrer de nombre via ton bouton btn_tir

    2 - quand tu demande de jouer (btnplay) à chaque fois, tes numéros de tirage sont renouvelé

    3 - ton if est mal construit et ton numberwin passe toujours strike

    ...mais ca dépend de ce que tu voulais faire...mais bon ton tableau est pas remplis qu'il y a déja 6 tirage de fait

    4- pour ton else que tu veux raccourcir le code, tu pourrai garder la dernière ligne de chaque lbl1.text = x, lbl1.text = y, ...car de toute facon, ce sera la seule que l'utilisateur risque de voir (tes valeurs sont pas additionné mais remplacé )

    tk on s'en reparle, tu peux resoumettre c'est quand même un bon début de quelque chose
    \|/ que la force soit avec vous

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    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 172
    Points : 25 112
    Points
    25 112
    Par défaut
    rien ne va dans ton code !!!



    Citation Envoyé par dispa Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Private Sub Btn_tir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_tir.Click
     
            Lbl1.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl2.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl3.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl4.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl5.Text = CStr(CInt((41 * Rnd() + 1)))
            Lbl6.Text = CStr(CInt((41 * Rnd() + 1)))
     
        End Sub
    enfin si, ca c'est pas trop moche, tu places donc un nombre aléatoire dans chaque label

    Citation Envoyé par dispa Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            Lbl1.Text = CInt((41 * Rnd() + 1))
            Lbl2.Text = CInt((41 * Rnd() + 1))
            Lbl3.Text = CInt((41 * Rnd() + 1))
            Lbl4.Text = CInt((41 * Rnd() + 1))
            Lbl5.Text = CInt((41 * Rnd() + 1))
            Lbl6.Text = CInt((41 * Rnd() + 1))
    euh, pourquoi la meme chose à un autre endroit ?
    si tu veux faire la meme chose, autant appeler la sub directement, m'enfin à mon avis faut pas faire la meme chose


    Citation Envoyé par dispa Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                numbers = InputBox("Rentrez vos nombre ici", "Jeu fictif loterie", number)
     
                tableau(i) = numbers
    wow, demander quelque chose avec un inputbox, et en plus un tableau de nombre ??
    pas possible et carrément pas ergonomique


    Citation Envoyé par dispa Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    If tableau(i) = Lbl1.Text Or Lbl2.Text Or Lbl3.Text Or Lbl4.Text _
                                Or Lbl5.Text Or Lbl6.Text Then
    ca, ca sent le option explicit off, pas recommandé du tout
    de plus le or ne fonctionne pas comme tu le pense ici, à mon avis ca teste que tableau(i) est égal à la somme des textes, car or est un opérande d'ajout binaire aussi
    tu voulais écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If tableau(i) = Lbl1.Text Or tableau(i) = Lbl2.Text  etc...

    Citation Envoyé par dispa Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                        Lbl1.Text = Lbl2.Text
                        Lbl1.Text = Lbl3.Text
                        Lbl1.Text = Lbl4.Text
                        Lbl1.Text = Lbl5.Text
                        Lbl1.Text = Lbl6.Text
    alors ca, si j'hallucine pas, c'est du grand n'importe quoi aussi
    l'enchainement de ca ne fait rien de plus Lbl1.Text = Lbl6.Text
    je ne comprends pas du tout ce que tu voulais faire


    il faut activer option explicit dans ton les propriétés de ton projet, ca évite quelques bugs

    il faut que tu lises ca :http://plasserre.developpez.com/vsommair.htm
    tu comprendras un peu plus .net


    une solution que je te propose :
    un bouton "faire une grille", qui rend visible 6 textbox et les vide
    6 textbox, dans lequel l'utilisateur entre des nombres
    un bouton démarrer le tirage
    un label ou apparaitront les numéros tirés

    pour le bouton démarrer le tirage :
    - vérifier que les textbox contiennent bien des nombres if isnumeric(), sinon on ne va pas plus loin
    - générer les nombrs dans un system.collections.generic.list(of integer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for i as integer = 1 to 6
        if listof.contains(cint(directcast(me.controls("txt" & i),textbox).text)) then
           directcast(me.controls("txt" & i),textbox).backcolor = green
        else
           directcast(me.controls("txt" & i),textbox).backcolor = red
        end if
    next
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Ouah... tu es courageux Sperot d'avoir fait l'analyse de son code...........
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Strict On
    Option Explicit On 'a placer en haut d'une feuille de code
    Voici mon cours :
    http://aspic.developpez.com
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    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 172
    Points : 25 112
    Points
    25 112
    Par défaut
    ca m'arrive des fois oui
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 34
    Points : 30
    Points
    30
    Par défaut
    Comment appelle t'on la procédure du bouton "tirage" ? Parce que en fait si j'en ai besoin pour le jeu u_u

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    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 172
    Points : 25 112
    Points
    25 112
    Par défaut
    pour appeler une sub il suffit de taper son nom
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2003
    Messages : 201
    Points : 182
    Points
    182
    Par défaut
    pour mieux expliquer...

    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
    public sub 6nombre(byval x as shit)e.envie avec ma main...
     
                   bla blabla
                   stocke par ici
                   bla bla bla
                   stocke par la
                   call tirage()
              end sub
              public sub tirage()
     
                  sort 6 nombre aleatoire
                  met ca dans les labels
                  call resultat()
              end sub
              public sub resultat()
     
                  si stocke ici = label1.text 'résultat 1
                        call winner()
                  si (tu comprend qu'on fait ca pour les 6 nombres)
                        call tout le temps winner()
              end sub
              public sub winner()
                    bigbigbigwinner = bigbigbigwinner + 1
              end sub
    ....j'ai écris ca pour m'amuser à t'aider a mieux voir comment on peut structurer son travail...et ca vaut la peine (surtout dans des programmes de 40 000 lignes) le tout est totalement fictif mais la fonction call est fonctionnel..( call nomdelafonction(valeurapasser, autrevaleur)

    bon l'heure de la pause...bon développement lache pas, moi aussi ils m'ont blasté au début...et c'est normal, c'est pour voir si tu es fait fort
    \|/ que la force soit avec vous

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    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 172
    Points : 25 112
    Points
    25 112
    Par défaut
    Citation Envoyé par Ouija33 Voir le message
    ...

    tu viens de quelle planète l'ami ??
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Je comprends rien à son code.......
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. Probleme d'acces a une variable.
    Par starkson dans le forum Delphi
    Réponses: 1
    Dernier message: 29/06/2006, 18h00
  2. Réponses: 4
    Dernier message: 14/12/2005, 08h33
  3. [Débutant] Probleme d'incrémentation d'une variable
    Par sakuragikan dans le forum ASP
    Réponses: 2
    Dernier message: 25/08/2005, 13h11
  4. [Debutant] Probleme d'acces a une variable
    Par Bugmaster dans le forum Langage
    Réponses: 16
    Dernier message: 02/09/2004, 15h57
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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