Ok bon c'est vrai que c'est pas très clair donc je vais mettre des bouts de code pour expliquer;
j'ai cette classe dans la quelle je creer un tableau "tablPosNouriture" :
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import objets.Nouriture;
import objets.Objets;
@SuppressWarnings("serial")
public class Envir extends JPanel {
//ne vous souciez pas de ca
// classe qui va tout gerer en gros
//penser a changer 200 par une variable qu'on va pouvoir changer
private Nouriture[]nouriture = new Nouriture[200];// on creer un tableau d'objets
private ImageIcon icoFond;
private Image imgFond;
private int Xfond1;
///////////////////////////////////////////////////////////
/////////////////////ici//////////////////////////////////
///////////////////////////////////////////////////////
public int[][] tablPosNouriture= new int[3][200]; //on créer un grand tableau vide avec tte les positions + les noms genre {"x","y","nom"}
private ArrayList<Nouriture> tabNour; // tableau d'objet qui contien tout les nouriture
//constructeur
public Envir(){
super();
//ici on déclare tt nos merdes
this.Xfond1 = 0;
icoFond = new ImageIcon(getClass().getResource("/images/Fond.png"));
this.imgFond = this.icoFond.getImage();
// peut etre metre ca dans main
for(int i=0; i<200 ; i++){
Random rand = new Random();
int nombX = rand.nextInt(1450); //création d'un nombre aléatoire
int nomby = rand.nextInt(950); //création d'un nombre aléatoire
nouriture[i] = new Nouriture(nombX,nomby,i);//création de 200 nouritures aléatoire
tablPosNouriture[0][i] = i;// 1er ligne = nom (utile plus tard pour colisions (quand la bete et la nouriture seront au meme endroite on utilisera le nom pour changer sa position pour pas que la bte sois statique
tablPosNouriture[1][i] = nombX;//2eme = X
tablPosNouriture[2][i] = nomby;// 3 eme = Y
}
//test ci la tableau marche bien
System.out.println(tablPosNouriture[0][130]);
System.out.println(tablPosNouriture[1][130]);
System.out.println(tablPosNouriture[2][130]);
//ca marche bien okok
tabNour = new ArrayList<Nouriture>();
for(int c=0; c<200 ; c++){
this.tabNour.add(nouriture[c]); //on remplis tabnour}
}
Thread chronoEcran = new Thread(new Chrono());// petit programe qui tourne en fond qui repeind oklm
chronoEcran.start();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics g2 = (Graphics2D)g;
g2.drawImage(imgFond, Xfond1, 0, null);
for(int b=0 ;b<tabNour.size();b++){
g2.drawImage(this.tabNour.get(b).getImgNouriture(), this.tabNour.get(b).getX(), this.tabNour.get(b).getY(), null);
}}
///////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
public int[][] getTablPosNouriture() {
return tablPosNouriture;
}
public void setTablPosNouriture(int[][] tablPosNouriture) {
this.tablPosNouriture = tablPosNouriture;
}
/////////////////////////////////////////////////////////////
///////////////////////////ici j'ai fait les getters de base que eclipse donne /////////////////////////////////
public void Scaner (int Xp,int Yp){
int varX=0 ;
int nomX =0 ;
int varY=0 ;
int nomY= 0 ;
int comparaison ;
//foncion qui va scaner le tableau tablPosNouriture pour rendre la position de la nouriture la plus proche
//enfin si jarrive a faire marcher les getters putin de merde
for(int u= 0; u<200; u++){
if(Xp-Math.abs(varX) > tablPosNouriture[1][u]){//varX prends la coordoné du X le plus proche de ceului qu'on lui a doner
varX= tablPosNouriture[1][u] ;
nomX = u ;
}
if(Yp-Math.abs(varY) > tablPosNouriture[1][u]){//varY prends la coordoné du Y le plus proche de ceului qu'on lui a doner
varY= tablPosNouriture[1][u] ;
nomY = u ;
}
}
//a la fin de la boucle on regarde lequel des deux est le plus pret :
comparaison = varX-varY ;
//si varX est plus proche
if (comparaison>0){
System.out.println("nouriture la plus proche");
//on renvoi les coordonées finalles de nomX
System.out.println(tablPosNouriture[1][nomX]);
System.out.println(tablPosNouriture[2][nomX]);
}
if (comparaison<=0){
System.out.println("nouriture la plus proche");
//on renvoi les coordonées finalles de nomX
System.out.println(tablPosNouriture[1][nomY]);
System.out.println(tablPosNouriture[2][nomY]);
}
}
}
//metre un setters plus tard
et j'ai cette classe ou j'aimerais réutiliser le fameux tableau
package personages;
import java.awt.Image;
import java.util.Objects;
import javax.swing.ImageIcon;
import objets.Objets;
public class Poisson extends Objets implements Runnable{
private int PAUSE = 8 ;
private Image imgPoisson;
private ImageIcon icoPoisson;
public Poisson(int xi, int yi) {
super(xi, yi);
this.icoPoisson = new ImageIcon(getClass().getResource("/images/Poisson.png"));
this.imgPoisson = this.icoPoisson.getImage();
Thread chronoPoiss = new Thread(this);
chronoPoiss.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
}
public Image imgPoisson() {return imgPoisson;}
int varibletabl;
private void scan(){
int Nom ;
int X ;
int Y;
//foncion qui va scaner le tableau tablPosNouriture pour rendre la position de la nouriture la plus proche
//enfin si jarrive a faire marcher les getters ‹
///////////////////////////////////////////////////////////////////////////////
////////////////////////////////////ici j'aimerais me reservir du tableau , comment faire ????/////////////////////////////////////////////‹
}}
ps : merci de la réactivité sérieusement j'ai poster dans plusieurs forums (de programmation surtout ) ben vous êtes les seuls a répondre
////////////////////////////////////////////////////////////////////////////////////////////////////MAJ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
j'ai donc essayer de contourner le problème en insèrent ce que je voulais faire dans la deuxième classe a l’intérieur de la première ça donne ceci :
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import objets.Nouriture;
import objets.Objets;
@SuppressWarnings("serial")
public class Envir extends JPanel {
// classe qui va tout gerer en gros
//penser a changer 200 par une variable qu'on va pouvoir changer
private Nouriture[]nouriture = new Nouriture[200];// on creer un tableau d'objets
private ImageIcon icoFond;
private Image imgFond;
private int Xfond1;
public int[][] tablPosNouriture= new int[3][200]; //on créer un grand tableau vide avec tte les positions + les noms genre {"x","y","nom"}
private ArrayList<Nouriture> tabNour; // tableau d'objet qui contien tout les nouriture
//constructeur
public Envir(){
super();
//ici on déclare tt nos merdes
this.Xfond1 = 0;
icoFond = new ImageIcon(getClass().getResource("/images/Fond.png"));
this.imgFond = this.icoFond.getImage();
// peut etre metre ca dans main
for(int i=0; i<200 ; i++){
Random rand = new Random();
int nombX = rand.nextInt(1450); //création d'un nombre aléatoire
int nomby = rand.nextInt(950); //création d'un nombre aléatoire
nouriture[i] = new Nouriture(nombX,nomby,i);//création de 200 nouritures aléatoire
tablPosNouriture[0][i] = i;// 1er ligne = nom (utile plus tard pour colisions (quand la bete et la nouriture seront au meme endroite on utilisera le nom pour changer sa position pour pas que la bte sois statique
tablPosNouriture[1][i] = nombX;//2eme = X
tablPosNouriture[2][i] = nomby;// 3 eme = Y
}
//test ci la tableau marche bien
System.out.println(tablPosNouriture[0][130]);
System.out.println(tablPosNouriture[1][130]);
System.out.println(tablPosNouriture[2][130]);
//ca marche bien okok
tabNour = new ArrayList<Nouriture>();
for(int c=0; c<200 ; c++){
this.tabNour.add(nouriture[c]); //on remplis tabnour}
}
Thread chronoEcran = new Thread(new Chrono());// petit programe qui tourne en fond qui repeind oklm
chronoEcran.start();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics g2 = (Graphics2D)g;
g2.drawImage(imgFond, Xfond1, 0, null);
for(int b=0 ;b<tabNour.size();b++){
g2.drawImage(this.tabNour.get(b).getImgNouriture(), this.tabNour.get(b).getX(), this.tabNour.get(b).getY(), null);
}}
private int getTablPosNouriture1(int x,int y) {return this.tablPosNouriture[x][y];}
public int[][] getTablPosNouriture() {
return tablPosNouriture;
}
public void setTablPosNouriture(int[][] tablPosNouriture) {
this.tablPosNouriture = tablPosNouriture;
}
//////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////ici je fait mes manips avec le tableau donc plus de problèmes///////////////
public int[] Scaner (int Xp,int Yp){
int varX=0 ;
int nomX =0 ;
int varY=0 ;
int nomY= 0 ;
int Xproche=0;
int Yproche=0;
int comparaison ;
//foncion qui va scaner le tableau tablPosNouriture pour rendre la position de la nouriture la plus proche
//enfin si jarrive a faire marcher les getters putin de merde
for(int u= 0; u<200; u++){
if(Xp-Math.abs(varX) > tablPosNouriture[1][u]){//varX prends la coordoné du X le plus proche de ceului qu'on lui a doner
varX= tablPosNouriture[1][u] ;
nomX = u ;}
if(Yp-Math.abs(varY) > tablPosNouriture[1][u]){//varY prends la coordoné du Y le plus proche de ceului qu'on lui a doner
varY= tablPosNouriture[1][u] ;
nomY = u ;}
}
//a la fin de la boucle on regarde lequel des deux est le plus pret :
comparaison = varX-varY ;
//si varX est plus proche
if (comparaison>0){
System.out.println("nouriture la plus proche");
//on renvoi les coordonées finalles de nomX
System.out.println(tablPosNouriture[1][nomX]);
System.out.println(tablPosNouriture[2][nomX]);
Xproche = tablPosNouriture[1][nomX];
Yproche = tablPosNouriture[2][nomX];
}
if (comparaison<=0){
System.out.println("nouriture la plus proche");
//on renvoi les coordonées finalles de nomX
System.out.println(tablPosNouriture[1][nomY]);
System.out.println(tablPosNouriture[2][nomY]);
Xproche = tablPosNouriture[1][nomY];
Yproche = tablPosNouriture[2][nomY];
}
return new int[] {Xproche, Yproche};
// pour récup ca
// int result[] = Scaner();
// System.out.println(Xproche[0] + Yproche[1]);
}
mais il y a une problème dans l'autre classe maintenant :
package personages;
import java.awt.Image;
import java.util.Objects;
import javax.swing.ImageIcon;
import objets.Objets;
public class Poisson extends Objets implements Runnable{
private int PAUSE = 8 ;
private Image imgPoisson;
private ImageIcon icoPoisson;
public Poisson(int xi, int yi) {
super(xi, yi);
this.icoPoisson = new ImageIcon(getClass().getResource("/images/Poisson.png"));
this.imgPoisson = this.icoPoisson.getImage();
Thread chronoPoiss = new Thread(this);
chronoPoiss.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
}
public Image imgPoisson() {return imgPoisson;}
int varibletabl;
private void scan(){
int Nom ;
int X ;
int Y;
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////la maniere que j utilise d'habitude ne marche pas
///////////////////éclipse dit : "the méthode Scaner is undefinied for the type Poisson :
int result[] = Scaner(2,5);
}}