| 12
 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
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 
 |  
// modelisation d un objet avec des Threads
public class ObjetProxi extends Thread
{
static int lagraine=0;
static int tabPosX[];
static int tabPosY[];
static int tabPosZ[];
static int NombreDobjets=0;
private int x, y, z;
private String obj;
public int numero;
ObjetMemoire ObjetMem;
 
public ObjetProxi(String obj,int numero)
{
if (numero > NombreDobjets) NombreDobjets = numero;
this.numero=numero;
tabPosX = new int[10];
tabPosY = new int[10];
tabPosZ = new int[10];
lagraine++;
Random r = new Random(lagraine);
x= r.nextInt(10);
y= r.nextInt(10);
z= r.nextInt(10);
System.out.println ("aleatoire ="+x);
this.obj=obj;
System.out.println ("je suis un objet"+this.obj);
}
private int choix_nouvelle_direction(int varCoo,int limite)
{
Random r = new Random();          
if (varCoo>limite) return -2;
if (varCoo<0) return 2;
return (r.nextInt (3)-1);
}
public int GetX()
{
return this.x;
}
 
public int GetY()
{
return this.y;
}
 
public int GetZ()
{
return this.z;
}
 
private int VerifPosition(int tabPos[],int coordonnee)
{
int i=0;
while (i<3)
  { 
  if (i != this.numero)
    {
    System.out.println ("i="+i+"tabPos"+(tabPos[i]));
    System.out.println ("i="+i+"coordonnee"+coordonnee);
    System.out.println ("i="+i+"ecart"+(tabPos[i]-coordonnee));
    if (((tabPos[i]-coordonnee)*(tabPos[i]-coordonnee))<50)
      {
      System.out.println (tabPos[i]-coordonnee);
      System.out.println ("ecart :" +"i "+ i+" "+ this.numero +" tableau =  "+ tabPos[i]+"coord =  "+ coordonnee);
      coordonnee=coordonnee+10;  
      }
    }
    i++;
  }
return coordonnee;
}
 
private double distance(int j,int k,ObjetProxi[] ListObjet)
{
 
	int diff;
	int carre1,carre2,carre3;
	diff=ListObjet[j].x-ListObjet[k].x;
	carre1=diff*diff;
	diff=ListObjet[j].y-ListObjet[k].y;
	carre2=diff*diff;
	diff=ListObjet[j].z-ListObjet[k].z;
	carre3=diff*diff;
	return Math.sqrt(carre1+carre2+carre3);
 
 
}
 
 
public void run()
{
int dx,dy,dz;
int var;
ObjetProxi[] ListObjet;
try{
  for (int i=0;i<100;i++)
  {
  dx=choix_nouvelle_direction(x,100);
  dy=choix_nouvelle_direction(y,100);
  dz=choix_nouvelle_direction(z,100);
  // on recupere le numero de l objet;
 
  int val = this.numero;
 
 
 
  tabPosX[val]=this.x;
  tabPosY[val]=this.y;
  tabPosZ[val]=this.z;
 
// LA OU SE TROUVE L ERREUR  
  ListObjet=ObjetMem.GetObjetThread ();
// ========================= 
 
 
Random r = new Random(lagraine);
 
  for (int j=0;j<NombreDobjets;j++)
  {
	  for( int k=0;k<NombreDobjets;k++)
	  {
		  if (j !=k )
		  {
			 while (distance(j,k,ListObjet)<5)
			 {
				 var=r.nextInt(3);
				 if (var==0) ListObjet[j].x++;
				 if (var==1) ListObjet[j].y++;
				 if (var==2) ListObjet[j].z++; 
			 }	  		 			  
		  }		  
	  }
  }
  System.out.println ("======================");
 
  sleep(100);
  System.out.println("objet= "+this.numero+ "  "+tabPosX[val]+ " "+tabPosY[val]+ " "+tabPosZ[val]+ " ");
  }
}
catch (InterruptedException e) {}
}
} | 
Partager