Thread

Résolu
Signaler
Messages postés
11
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
21 septembre 2006
-
Messages postés
11
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
21 septembre 2006
-
bonjour , g besoin d'aide sur une affaire de thread , voilà , g une classe qui herite de la classe thread , ma classe et une classe ki dessine des ballons , je voudrais les faire deplacer automatiquement ds la fenetre ,
alors g redefinit la methode run , le probleme ki se pose , c ke mes ballons font tous la mem chose , la mem sequence de mouvement , pouvez vous me conseiller ? merci

7 réponses

Messages postés
11
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
21 septembre 2006

alors voilà , j'ai resolu le probleme com suit :
au lieu que ma classe balle herite de la classe thread , g crée une autre classe qui va gérer le mouvement des balle et c'est elle qui herite de la classe thread . je lui passe ds son constructeur un ArrayList des balles que g crée ds le Main et voici le code de la méthode run .
public void run()
 { int i,j;
        Balle r;
        while(true)
        {i=Rand_i.nextInt(list.size());
         j=Rand_j.nextInt(3); 
         r=(Balle)list.get(i);
         switch(j)
                {
          case 0: {r.avancer(10);break;}
          case 1: {r.droite(45);break;}
          case 2: {r.gauche(45);break;}
     
       }
   r.avancer(10);
        try{this.sleep(100);}
        catch(Exception e){}
       
        }
       
    }

Voilà , j'espere que cela sera utile a kelk'1 , merci de votre aide
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Utilise la classe Random afin de donner de l'aléatoire à tes mouvements.
Messages postés
11
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
21 septembre 2006

en effet , j'ai utilisé la classe Random au sein de ma méthode run comme suit :
mais comme je l'ai précedemment dis , ttes mes instances font la meme chose , que me conseillez vous ?




 public void run()
 { int i;
  
        try {
         while(true)             {
                        switch(i=Rand.nextInt(3))
                {
          case 0: {this.avancer(10);break;}
          case 1: {this.droite(45);break;}
          case 2: {this.gauche(45);break;}
     
       }
             //System.out.println(i);
                this.avancer(10);
                this.sleep(1000);
               
                }
               
            }
         catch (Exception exception) {
            exception.printStackTrace();
        }
       
    }
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Essaye plutôt ceci, ce sera déjà plus aléatoire :

 public void run()
 { int i;
     this.avancer(10);
     this.droite(Rand.nextInt(45);
     this.gauche(Rand.nextInt(45);
     this.sleep(1000);
    }
     
Messages postés
11
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
21 septembre 2006

g essayer , tjs le meme probleme , ce pourrait-il que le probleme soit , dans la classe main qui crée les instances ?
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
fais voir comment tu construit tes thread dans le main
Messages postés
11
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
21 septembre 2006

voila , lorque je click sur le bouton , voici le code qui s'execute :


void proc_click()
 { 
  
  ball1 = new Balle(feuille,"balle1",200,400,"Thread_balle1");//constructeur où on passe une feuille de dessin , c une de mes 
                                                                                          //classes , puis le nom de l'objet , 2 int pour les coordonnées , et le 
                                                                                          //nom du thread .

  ball2 = new Balle(feuille,"balle2",150,400,"Thread_balle2");
  ball3 = new Balle(feuille,"balle3",100,400,"Thread_balle3");
  feuille.drawIt();
  while (true)
  {ball1.start();
  ball2.start();
  ball3.start();
  }
 
}