Rechercher un String dans un tableau a partir d'un objet ?

Fanny - 13 juin 2015 à 00:41
 Fanny - 13 juin 2015 à 11:58
Bonjour,

j'ai un petit soucis...

Pour résumer :

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


for(int d=x-1; d>=(x-nbCases); d--){


if(!(i.caseVide(x, d))) {
System.out.println("Erreur : Quelque chose vous empeche de bouger !");
return 0;
}

}

i.getTab()[x][y]=" ";
i.getTab()[x-nbCases][y]="1";
return 1;
}
}

}
return 0;
}


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 :)

Merci d'avance !
A voir également:

2 réponses

KX
Messages postés
16560
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
29 juin 2022
124
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)
1