Votre question

Tableaux dans java

Tags :
  • true
  • Programmation
Dernière réponse : dans Programmation
15 Juin 2010 21:45:34

Bonjour,

J'aurais besoin d'aide pour avancer dans la programmation d'un jeu qui possède un damier avec des coordonnées de cases x et y et un ensemble de pièces pour lesquelles j'ai déjà créé une classe qui permet d'associer chacune des cases (décrites par leurs coordonnées) à une pièce précise.

Maintenant je dois faire correspondre certaines de ces cases à des portes pour chaque pièce. Certaines pièces ont une pièce, d'autres en ont 3. Pour cela, j'ai créé la classe ci-dessous:

  1. public class CoordPortes
  2. {
  3.  
  4. public boolean coordPorte()
  5. {
  6. int i,j;
  7. int x=0 ,y=0;
  8. int tabXportes[]={9,14,4,11,19,2,20,18,5,2,20,4,12,19,9,14};
  9. int tabYportes[]={3,3,5,5,5,9,9,11,12,14,14,18,18,18,20,20};
  10.  
  11. for(i=0; i<16; i++)
  12. for(j=0; j<16;)
  13. {
  14. if (tabXportes[i]==x && tabYportes[i]==y)
  15. return true;
  16.  
  17. else
  18. return false;
  19. }
  20. return false;
  21. }
  22.  
  23. public int getCoordX()
  24. {
  25. return x;
  26. }
  27.  
  28. public int getCoordY()
  29. {
  30. return y;
  31. }
  32. }


Avec le main suivant:

  1. int tabXportes[]= new int[16];
  2. int tabYportes[]= new int[16];
  3. CoordPortes c=new CoordPortes();
  4. c.coordPorte();
  5.  
  6. CoordPortes coordX= new CoordPortes();
  7. coordX.getCoordX();
  8. System.out.println("coordX = " +coordX.getCoordX());
  9.  
  10. CoordPortes coordY= new CoordPortes();
  11. coordY.getCoordY();
  12. System.out.println("coordY = " +coordY.getCoordY());


Mais, bien sûr, si je vous écris c'est que ça ne fonctionne pas ! Je vous explique ce que j'ai fait:

1)J'ai créé 2 tableaux avec les coordonnées x et y des portes.

2) J'ai écrit une boucle FOR pour que les 2 tableaux soient lus simultanément de i=0 à i=15 avec la condition que si l'ordinateur trouve 2 valeurs x et y qui correspondent à des coordonnées qu'il reconnait comme étant déjà des cases appartenant à la pièce alors il en déduit que c'est une porte. Et donc il retournerait un true.

Le problème c'est que je ne sais pas si ça fonctionne. Par quel moyen puis-je le vérifier ? Pour se faire, j'ai utilisé des get pour que l'ordi puisse me retourner les valeurs des coordonnées de portes mais tout ça est bancal et ca me donne "coordX=0" et "coordY=0".

De plus, dans ma méthode booléenne coordPorte(), Eclipse me suggère de rajouter un "return faulse" à la fin, sinon il me met une jolie croix rouge.

Quelqu'un peut-il m'aider ??

Merci d'avance !

Autres pages sur : tableaux java

a c 232 L Programmation
16 Juin 2010 09:18:43

Salut,

2) Tu n'as pas besoin de 2 boucles for pour que 2 tableaux soient lus simultanément, surtout que ta 2ème boucle qui utilise j ne sert à rien, elle n'est jamais incrémentée, et pourrait poser un problème si tu n'avais pas des return dans ta boucle.

Quelque chose comme ça devrait plus le faire :
  1. for(i=0; i<16; i++)
  2. {
  3. if (tabXportes[i]==x && tabYportes[i]==y)
  4. return true;
  5. }
  6. return false;


Parce que le fait de mettre un return false dans un else fait que tu ne vas jamais aller plus loin que le 1er élément. Soit c'est égal et dans ce cas il va te retourner true, soit c'est pas égal et il va te retourner false et quitter la fonction.

Ensuite, la valeur de x et y n'est jamais mise, donc x et y seront toujours égal à 0

Et pour finir, si tu créées plusieurs CoordPortes entre chaque appel, ils ne vont pas partager les données vu que ce sera 3 objets différents.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS