Partage
  • Partager sur Facebook
  • Partager sur Twitter

Code ne marchant qu'à moitié .. :s

Pourquoi ?

    27 août 2011 à 21:52:18

    Bonjour à tous , j'ai écrit ce code qui ne marche qu'à motié :/
    If PictureBox.Location.X = PictureBox.location.X then
    [..]
    
    end if
    


    le problème c'est que mes deux pictureBox sont controlès par un Timer qui change leur location de 1 toutes les 400 milli secondes et quand elles se rencontrent il ne se produit rien .. :-°

    J'ai essayé de n'en faire bougé qu'une et que l'autre soit stable ( marche pas non plus .. )

    Expliquez-moi , je vous en suppli !

    PS : J'ai aussi essayé le même code avec des variables intermédiaire ..
    • Partager sur Facebook
    • Partager sur Twitter
      27 août 2011 à 22:02:36

      Donne plus d'information sur ce que tu veux qu'il se produise, le code et ce que tu veux faire. ;)
      • Partager sur Facebook
      • Partager sur Twitter
        27 août 2011 à 22:08:03

        Salut, j'y connais rien en C# mais l'opérateur d'égalité en langage objet c'est en général ==
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          27 août 2011 à 22:23:51

          Citation : Agbeladem

          Salut, j'y connais rien en C# mais l'opérateur d'égalité en langage objet c'est en général ==


          Oui, dans tous les langages c'est comme ça, sauf en VB/VB.NET ^^
          • Partager sur Facebook
          • Partager sur Twitter
            27 août 2011 à 22:33:06

            En fait c'est plus subtil car en Java, il faut utiliser equals() pour tester l'égalité et == pour vérifier qu'il s'agit strictement du même objet (une exception sur les String sur lesquels le compilateur reconnaît dans certains cas cette erreur de débutant).

            En Ruby par contre, c'est exactement l'inverse ! == vérifie l'égalité sémantique de deux objets et equals vérifie que les deux références pointent vers le même objet.

            En outre, dans certains langages où l'opérateur d'affectation est différent, par exemple := ou ← (par exemple le TI Basic ou au pif euh scilab je crois), l'égalité se fait avec un seul symbole égal.
            • Partager sur Facebook
            • Partager sur Twitter
              27 août 2011 à 22:50:01

              If PictureBox.Location.X = PictureBox.location.X then
              

              J'y connais pas grand chose au picturebox mais d'habitude la coordonnée x est mesuré au coin supérieur gauche. Tu dois donc faire quelquechose comme ceci:

              If Math.Abs(PictureBoxA.Location.X-PictureBoxB.location.X) < PictureBoxA.size.X(ou .width je ne sais plus) then
              
              • Partager sur Facebook
              • Partager sur Twitter
                28 août 2011 à 1:14:05

                Faut, en vb.net le code qu'il a ecrit est sencer fonctionner, il faudrait voir le reste du code pour en dire plus.

                En tout ca pour le moment je peut te conseiller que 2 chose, déjà verifie bien que dans ton code tu a bien remplacer PictureBox dans :
                If PictureBox.Location.X = PictureBox.location.X then
                

                par le bon objet dans ton formulaire (car dans le code que tu nous a donné ça désigne le même objet.

                Ensuite essaye en plaçant des break point un peu partout a cet endroit la dans ton code (depuis le lancement du timer jusqu’à la collision par exemple), place aussi certain espion, ça peut aider....

                Il faut aussi vérifier le contenu de ton test, voir si ce n'est pas a cet endroit que ça coince.

                Je croit qu'on ne peut pas faire plus si tu ne nous donne pas un copier collé du code en question.

                désolé
                • Partager sur Facebook
                • Partager sur Twitter
                  28 août 2011 à 13:45:51

                  If PictureBox.Location.X = PictureBox.location.X then
                  

                  ... Et il n'y a personne pour s'étonner du fait qu'il est en train de tester si une valeur est égale à elle-même ? o_O Il n'y a pas deux PictureBox utilisées dans ce code, il n'y en a qu'une.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 août 2011 à 14:01:44

                    Ah je pensais que c'était fait exprès
                    Mais si il veut déclencher quelque chose à la collision il faut tenir compte du fait que ce sont les coordonnes gauche
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 août 2011 à 20:52:21

                      juste, en principe ca devrait donné un truc du genre

                      If PictureGauche.location.X = PictureDroit.location.X + PictureGauche.Width then
                      


                      ou

                      If PictureGauche.location.X = PictureDroit.location.X + PictureGauche.Size.Width then
                      


                      Je ne sais plus très bien en wpf c'est les propriétés sont différente :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 août 2011 à 14:11:19

                        Citation : Orwell

                        If PictureBox.Location.X = PictureBox.location.X then
                        


                        ... Et il n'y a personne pour s'étonner du fait qu'il est en train de tester si une valeur est égale à elle-même ? o_O Il n'y a pas deux PictureBox utilisées dans ce code, il n'y en a qu'une.



                        Mes pictureBox ne sont pas les mêmes , pardon je me suis mal exprimé ..Enfaite pour tout vous dire c'est quand "Player1" entre en contact avec "Branche" alors celui-ci n'est plus visible .

                        Mais quand il entre en contact avec la branche rien ne se passe :/
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 août 2011 à 0:10:33

                          Tu a essayer le code que je t'ai donné?

                          s'il marche tant mieux sinon dis-nous en un peu plus...

                          Et encore une petite question, les Player sont-ils toujours du même coté lorsqu'il entre en contact?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 août 2011 à 10:02:40

                            Quel est le nom de tes picturebox ?
                            Si c'est pic_Player1 et pic_branche
                            ->
                            If pic_Player1.Location.X = pic_branche.Location.X then
                            Msgbox("Bouh")
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Code ne marchant qu'à moitié .. :s

                            × 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