Aller au contenu


Photo
- - - - -

[JAVA] les getters et les tableaux


  • Veuillez vous connecter pour répondre
6 réponses à ce sujet

#1 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 22 octobre 2016 - 11:09

Salut a tous;  j'ai un petit problème :

 

comment utiliser les getters (et setters) avec un tableau multidimensionnel ?

 

voila c'est pas très long comme question mais ça me pose un gros problème donc merci d'avance pour vos raiponces car je commence a m’énerver / perdre espoir la ...   ;)


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#2 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 22 octobre 2016 - 12:23

Il faut en dire un plus :) Pas facile de t'aider comme ça.

 

C'est pour une app android ? un robot en java ?



#3 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 22 octobre 2016 - 12:55

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);
	
	
	
	
	
	
	
	
	
}}

 


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#4 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 22 octobre 2016 - 06:39

J'ai rien compris ...  :) C'est illisible. Et, il n'est pas fini ton programme.



#5 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 22 octobre 2016 - 07:33

Ok c’était juste quelques " bouts de code" j'ai du mal m'exprimer j'en suis désolé.Mais c'est pas grave tu peux supprimer le post on m'a donner un solution sur un autre forum entre temps ... merci quand même !


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#6 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 22 octobre 2016 - 07:51

Sois pas désolé. J'étais sincère. Supprimes pas. Expliques ce que tu as appris :)



#7 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 22 octobre 2016 - 10:01

en gros les gens si vous voulez 

 

renvoyer un tableau avec un getter : 

public int getTableau(int PosL, int PosC) { // avec L ligne et C colone 
		return Tableau[PosL][PosC];
	}

et pour avoir le tableau dans une autre classe :

LaclasseDeBase coucou = new LaclasseDeBase();
	int recherche= coucou.getTablPosNouriture(L,C); // a la place du L et du C metre les lignes et colone  

voila ce que j'en ai appris 


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users