J'ai 3 classes : Jeu , PersonnageJoueur , InterfaceJeu.
Sachant que InterfaceJeu possède un tableau a 2 dimensions de String. En gros j'ai deux personnages représentés respectivement par les string "1" et "2" qui devront s'affronter dans ce tableau à l'allure de champs de combat... et dans ma méthode déplacer(int nbCases, InterfaceJeu i) de la Classe PersonnageJoueur qui me permet de déplacer mon joueur courant j'aimerai savoir comment les differencier...
Par exemple ma méthode deplacer vers la gauche ne cherche que le joueur 1 ici... :
public int deplacerG(int nbCases, InterfaceJeu i){
for(int y=0; y<InterfaceJeu.LONGEUR_MAX; y++){ for (int x=0; x<InterfaceJeu.LARGEUR_MAX; x++){
if (i.getTab()[x][y]=="1"){ // NE CHERCHE QUE LE JOUEUR 1
Je ne sais pas comment faire pour que selon le personnage qui appellera la methode, celle-ci cherche le "1" dans le tableau ou le "2"...
Je pensais rajouter un parametre (int numeroJoueur) dans ma methode et ensuite le caster en String Integer.toString(numeroJoueur) puis remplacer mon if (i.getTab()[x][y]=="1") en if (i.getTab()[x][y]==numeroJoueur) mais sa ne fonctionne pas et je ne comprend pas pourquoi vu que je lui demande de chercher un String ....
Si vous aviez un petit coup de pouce a me donner :)
KX
Messages postés16722Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 septembre 2023126 13 juin 2015 à 11:37
Bonjour,
Il ne faut pas comparer des String avec == mais avec equals.
De plus si tes String représentent des entiers, pourquoi ne pas faire directement un tableau d'entier ? On pourrait aussi utiliser des enum.
public int deplacerG(int nbCases, InterfaceJeu i, String numeroJoueur)
{
String[][] tab = i.getTab();
for (int x=0; x<tab.length; x++)
for (int y=0; y<tab[x].length; y++)
{
if (tab[x][y].equals(numeroJoueur))
{
//...
}
}
}
Remarque : vu ce que tu veux faire, il serait mieux de ne pas avoir plusieurs méthodes deplacerG, deplacerD, deplacerH et deplacerB, mais de tout mettre dans une seule méthode, sinon ça va être des copier-coller... (et si tu codes en Java 8 c'est même encore plus simple)
Merci beaucoup KX, j'avais complètement oublié equals pour les string !
Concernant le tableau, je suis partie sur un tableau de String car "le terrain" est délimité par des mur représentés comme des "#" et il se trouve que j'ai également généré des murs aléatoires a l'intérieur de la même façon et qu'il y aura aussi des lettres etc.... :)
J'hésitais entre faire une seule méthode avec un switch / case et je suis partie sur la séparation de méthode finallement.... J'essayerai d'optimiser tout sa !