Java : Quelques petits problèmes

Fermé
Bigtux - 14 janv. 2010 à 15:02
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 - 14 janv. 2010 à 16:28
Bonjour,

J'essaie de faire un tp en java, mais j'ai un petit souci, je pense que je n'ai pas très bien assimilé certaines choses du cours, et je suis un peu perdue sur certains points.

Voilà mon problème. J'ai un ensemble de Personnages qui sont dans un Groupe. J'ai donc une classe Personnage, une classe Groupe. A un moment donné, je dois envoyer un de mes personnage faire une mission, j'ai donc une classe Carte qui contient ma carte, le déplacement du personnage... Mon problème à l'instant est : Quand l'utilisateur me donne un nom de Personnage, il faut que je vérifie qu'il soit dans mon groupe (j'ai une méthode recherche dans Groupe qui recherche si le personnage est dans la groupe). Une fois cela vérifié, il me faut alors affecter mon joueur à ce personnage que m'a désigné l'utilisateur. Mais je n'y arrive pas. Dans la classe Carte j'ai un attribut joueur de type Personnage, j'ai créer les get/set pour y avoir accès ailleurs. Et donc j'essayais de faire dans ma méthode recherche setJoueur(tabPersonnage[rang]); pour que le personnage désigné par l'utilisateur soit attribué au joueur. Mais le problème est qu'il ne connait pas setJoueur dans Groupe, comment puis-je faire ?

Merci de votre aide !
A voir également:

5 réponses

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
14 janv. 2010 à 15:19
Bonjour, as tu une référence à ta classe Carte dans ta classe Groupe ?

Dans ce cas tu pourrais faire quelque chose du style

maCarte.setJoueur(...);


:)
0
Non, je n'en ai pas.

Et sinon j'ai pensé à creer un joueur (monjoueur) dans ma classe Groupe, et que quand j'ai trouvé le personnage dans mon groupe, j'affecte le personnage à monjoueur. Mais ma methode recherche renvoi un boolean, peut-elle renvoyer monjoueur aussi ? Ou sinon comment puis-je avoir accès à monjoueur ?!

Merci !
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
14 janv. 2010 à 15:47
Si j'ai bien compris le personnage est identifié par un numéro de rang.

Dans ton main tu as ta Carte et ton Groupe, tu peux donc faire quelque chose du style :

if(monGroupe.recherche(rang))
    maCarte.setJoueur(monGroupe.tabPersonnage[rang]);

0
Merci !

Ah oui, ce serait top mais en fait la méthode recherche me renvoi un booléen, mais par contre le rang je l'ai à l'intérieur de la méthode. Comment est-ce que je peux faire pour qu'il me renvoie le booléen et le rang ?

Merci !
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
14 janv. 2010 à 15:56
Je ne comprend pas comment tu appelles t'a méthode de recherche et que te fournis l'utilisateur. Donne nous un peu de code ^^

0
Voilà ma méthode de recherche qui se trouve dans Groupe

public boolean cherche(String perso){
boolean estLa = false;
int rang = 0;
while(!estLa && rang<this.getNbPerso())
if (tabPerso[rang].getNomPerso().equals(perso) ) {
estLa = true;
}
else rang = rang + 1;

return estLa;
}

et mon appel à la méthode qui se trouve dans mon main est

System.out.println("Donnez moi le nom d'un perso");
String nomJoueur = Keyboard.getString(); //recupere le nom
boolean ilYEst ;
ilYEst = monGroupe.cherche(nomJoueur); // Verifie que le nom est dans le groupe
if (ilYEst){
maCarte.faireLaMission();
}

En espérant que ça vous aide !
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
14 janv. 2010 à 16:13
Modifie ta fonction de la façon suivante :

public boolean cherche(String perso, int &rang){
    boolean estLa = false;
    /* suppression ligne int rang = 0 ;*/
    while(!estLa && rang<this.getNbPerso())
        if (tabPerso[rang].getNomPerso().equals(perso) ) {
        estLa = true;
    }
    else rang = rang + 1;

    return estLa;
} 


Et ton appel devient :

int rang = 0;
ilYEst = monGroupe.cherche(nomJoueur, rang); // Verifie que le nom est dans le groupe 


Du coup tu as ton rang disponible à l'extérieur. Test et dis moi si ça marche, j'ai rien pour tester.
0
Merci beaucoup pour le tuyau ! Cela marche, mais mon programme ne marche toujours pas, je ne sais pas pourquoi.

Bonne soirée :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
14 janv. 2010 à 16:28
Pas de soucis, bonne chance pour le reste :)
0