Java : Quelques petits problèmes

Bigtux -  
Defouille Messages postés 404 Statut Membre -
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 !
Configuration: Windows XP
Safari 532.0

5 réponses

  1. Defouille Messages postés 404 Statut Membre 54
     
    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
    1. Bigtux
       
      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
  2. Defouille Messages postés 404 Statut Membre 54
     
    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
    1. Bigtux
       
      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
  3. Defouille Messages postés 404 Statut Membre 54
     
    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
    1. Bigtux
       
      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
  4. Defouille Messages postés 404 Statut Membre 54
     
    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
    1. Bigtux
       
      Merci beaucoup pour le tuyau ! Cela marche, mais mon programme ne marche toujours pas, je ne sais pas pourquoi.

      Bonne soirée :)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Defouille Messages postés 404 Statut Membre 54
     
    Pas de soucis, bonne chance pour le reste :)
    0