Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Résolu]Probleme Timer

Sujet résolu
    17 mars 2011 à 22:10:42

    Bonjour,
    Je commence le visual basic et j'essaie de faire une simulation de distribution de carte. Le tas de carte se situe au milieu de ma fenêtre, le nombre de carte de chaque joueur est affiché autour. Je veux que les cartes soit distribués l'une après l'autre. Le problème que j'ai c'est que j'arrive pas à distribuer les cartes les unes après les autres, elles se distribuent toutes en même temps. J'ai du mal avec le timer, si vous pouviez m'aider ce serait sympa. Merci
    Voici mon projet:


    Public Class Simulateur
        Dim J1 As Integer
        Dim J2 As Integer
        Dim J3 As Integer
        Dim J4 As Integer
        Dim Reste As Integer
    
    
    
    
    
        Private Sub BT_lancement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lancement.Click
    
            If Me.RB_32.Checked Then
                Reste = 32
                Me.LAB_tas.Text = "32"
            End If
            If Me.RB_56.Checked Then
                Reste = 56
                Me.LAB_tas.Text = "56"
            End If
            Me.BT_lancement.Text = "Nombre de cartes ok"
            ' Vérification des radio boutons + affichage du nombre de cartes sélectionnés dans la textbox centrale
            J1 = 0
            J2 = 0
            J3 = 0
            J4 = 0
    
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.BT_lancement.Text = "Nombre de cartes?"
            Me.Lab_j1.Text = "Joueur 1"
            Me.LAB_J2.Text = "Joueur 2"
            Me.LAB_J3.Text = "Joueur 3"
            Me.LAB_J4.Text = "Joueur 4"
            Me.Lab_c1.Text = "0"
            Me.Lab_c2.Text = "0"
            Me.Lab_c3.Text = "0"
            Me.Lab_c4.Text = "0"
            Me.RB_32.Text = "32 cartes"
            Me.RB_56.Text = "56 cartes"
            Me.LAB_tas.Text = "Non défini"
            Me.Button1.Text = "Lancer"
            ' Initialisation valeurs a 0 et affichage des noms de joueurs ainsi que du txt des checkbox
    
    
    
    
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Timer1.Enabled = True
            Me.Timer1.Interval = 1000
            Me.BT_lancement.Enabled = False
            ' Si on clique sur le bouton de lancement le timer s'active et le bouton de lancement se désactive
            Me.Res.Text = Reste
    
        End Sub
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
            Do
                Lab_c1.Text = J1 + 1
                Reste = Reste - 1
                Me.LAB_tas.Text = Reste
                Me.Lab_c2.Text = J2 + 1
                Me.Lab_c3.Text = J3 + 1
                Me.Lab_c4.Text = J4 + 1
            Loop Until Reste > -1
    
    
        End Sub
    End Class

    • Partager sur Facebook
    • Partager sur Twitter
      17 mars 2011 à 22:20:13

      Poste le code ici, entre les balises <code type="vbnet"></code>.
      Si le code est long, poste-le également entre les balises <secret></secret>. :)

      EDIT : J'ai fait une erreur dans la balise code.
      Voici ton code dans la bonne balise :

      Public Class Simulateur
          Dim J1 As Integer
          Dim J2 As Integer
          Dim J3 As Integer
          Dim J4 As Integer
          Dim Reste As Integer
      
      
      
      
      
          Private Sub BT_lancement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lancement.Click
      
              If Me.RB_32.Checked Then
                  Reste = 32
                  Me.LAB_tas.Text = "32"
              End If
              If Me.RB_56.Checked Then
                  Reste = 56
                  Me.LAB_tas.Text = "56"
              End If
              Me.BT_lancement.Text = "Nombre de cartes ok"
              ' Vérification des radio boutons + affichage du nombre de cartes sélectionnés dans la textbox centrale
              J1 = 0
              J2 = 0
              J3 = 0
              J4 = 0
      
          End Sub
      
          Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
              Me.BT_lancement.Text = "Nombre de cartes?"
              Me.Lab_j1.Text = "Joueur 1"
              Me.LAB_J2.Text = "Joueur 2"
              Me.LAB_J3.Text = "Joueur 3"
              Me.LAB_J4.Text = "Joueur 4"
              Me.Lab_c1.Text = "0"
              Me.Lab_c2.Text = "0"
              Me.Lab_c3.Text = "0"
              Me.Lab_c4.Text = "0"
              Me.RB_32.Text = "32 cartes"
              Me.RB_56.Text = "56 cartes"
              Me.LAB_tas.Text = "Non défini"
              Me.Button1.Text = "Lancer"
              ' Initialisation valeurs a 0 et affichage des noms de joueurs ainsi que du txt des checkbox
      
      
      
      
          End Sub
      
          Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
              Me.Timer1.Enabled = True
              Me.Timer1.Interval = 1000
              Me.BT_lancement.Enabled = False
              ' Si on clique sur le bouton de lancement le timer s'active et le bouton de lancement se désactive
              Me.Res.Text = Reste
      
          End Sub
      
          Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      
              Do
                  Lab_c1.Text = J1 + 1
                  Reste = Reste - 1
                  Me.LAB_tas.Text = Reste
                  Me.Lab_c2.Text = J2 + 1
                  Me.Lab_c3.Text = J3 + 1
                  Me.Lab_c4.Text = J4 + 1
              Loop Until Reste > -1
      
      
          End Sub
      End Class
      
      • Partager sur Facebook
      • Partager sur Twitter
        17 mars 2011 à 22:23:27

        Public Class Simulateur
            Dim J1 As Integer
            Dim J2 As Integer
            Dim J3 As Integer
            Dim J4 As Integer
            Dim Reste As Integer
        
        
        
        
        
            Private Sub BT_lancement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lancement.Click
        
                If Me.RB_32.Checked Then
                    Reste = 32
                    Me.LAB_tas.Text = "32"
                End If
                If Me.RB_56.Checked Then
                    Reste = 56
                    Me.LAB_tas.Text = "56"
                End If
                Me.BT_lancement.Text = "Nombre de cartes ok"
                ' Vérification des radio boutons + affichage du nombre de cartes sélectionnés dans la textbox centrale
                J1 = 0
                J2 = 0
                J3 = 0
                J4 = 0
        
            End Sub
        
            Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                Me.BT_lancement.Text = "Nombre de cartes?"
                Me.Lab_j1.Text = "Joueur 1"
                Me.LAB_J2.Text = "Joueur 2"
                Me.LAB_J3.Text = "Joueur 3"
                Me.LAB_J4.Text = "Joueur 4"
                Me.Lab_c1.Text = "0"
                Me.Lab_c2.Text = "0"
                Me.Lab_c3.Text = "0"
                Me.Lab_c4.Text = "0"
                Me.RB_32.Text = "32 cartes"
                Me.RB_56.Text = "56 cartes"
                Me.LAB_tas.Text = "Non défini"
                Me.Button1.Text = "Lancer"
                ' Initialisation valeurs a 0 et affichage des noms de joueurs ainsi que du txt des checkbox
        
        
        
        
            End Sub
        
            Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                Me.Timer1.Enabled = True
                Me.Timer1.Interval = 1000
                Me.BT_lancement.Enabled = False
                ' Si on clique sur le bouton de lancement le timer s'active et le bouton de lancement se désactive
                Me.Res.Text = Reste
        
            End Sub
        
            Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        
                Do
                    Lab_c1.Text = J1 + 1
                    Reste = Reste - 1
                    Me.LAB_tas.Text = Reste
                    Me.Lab_c2.Text = J2 + 1
                    Me.Lab_c3.Text = J3 + 1
                    Me.Lab_c4.Text = J4 + 1
                Loop Until Reste > -1
        
        
            End Sub
        End Class

        • Partager sur Facebook
        • Partager sur Twitter
          17 mars 2011 à 22:35:01

          Essai ça :

          Me.Timer1.Interval = 1000
          Me.Timer1.Start()
          
          • Partager sur Facebook
          • Partager sur Twitter
            19 mars 2011 à 0:17:18

            Je test ça demain et je vous dis si ça marche ;)

            faut que je le mette a la place de :
            Me.Timer1.Enabled = True
            Me.Timer1.Interval = 1000
            ?

            Edit: j'ai pas réussi a faire fonctionner le programme comme je le veux

            L'idéal serait d'avoir une variable qui compte le nombre d'intervalle effectué par le timer et ensuite selon cette variable, on déterminerai si un joueur doit recevoir ou non une carte mais je ne sais pas comment faire.


            Car ici l'erreur viens du fait que toutes les secondes, le programme effectue tout les actions ci dessous :
            Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Do
                        Lab_c1.Text = J1 + 1
                        J1 = J1 + 1
                        Reste = Reste - 1
                        LAB_tas.Text = Reste
                        Lab_c2.Text = J2 + 1
                        J2 = J2 + 1
                        Reste = Reste - 1
                        LAB_tas.Text = Reste
                        Lab_c3.Text = J3 + 1
                        J3 = J3 + 1
                        Reste = Reste - 1
                        LAB_tas.Text = Reste
                        Lab_c4.Text = J4 + 1
                        J4 = J4 + 1
                        Reste = Reste - 1
                        LAB_tas.Text = Reste
                        ' Ajouter 1 au nombre de carte du joueur, l'afficher et retirer la carte distribuer du nombre de cartes restantes a distribuer
                    Loop Until Reste > -1
                    ' répéter tant que le nombre de carte est supérieur a -1
            
                End Sub
            



            J'ai refait la fin du code de façon à ce que ça marche
            Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            
                    Do
                        If J1 = 0 Or J4 = J1 Then
                            Lab_c1.Text = J1 + 1
                            J1 = J1 + 1
                            Reste = Reste - 1
                            LAB_tas.Text = Reste
                        ElseIf J1 > J2 And J2 = J3 Then
                            LAB_tas.Text = Reste
                            Lab_c2.Text = J2 + 1
                            J2 = J2 + 1
                            Reste = Reste - 1
                            LAB_tas.Text = Reste
                        ElseIf J1 = J2 And J3 = J4 Then
                            Lab_c3.Text = J3 + 1
                            J3 = J3 + 1
                            Reste = Reste - 1
                            LAB_tas.Text = Reste
                        ElseIf J1 = J2 And J2 = J3 And J4 < J1 Then
                            Lab_c4.Text = J4 + 1
                            J4 = J4 + 1
                            Reste = Reste - 1
                            LAB_tas.Text = Reste
                        End If
                        ' Ajouter 1 au nombre de carte du joueur, l'afficher et retirer la carte distribuer du nombre de cartes restantes a distribuer
                    Loop Until Reste > -1
                    ' répéter tant que le nombre de carte est supérieur a -1
            
                End Sub
            


            Et c'est ok.
            Merci à vous
            • Partager sur Facebook
            • Partager sur Twitter

            [Résolu]Probleme Timer

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown