Probleme instance java

Bonjour,
Je suis debutant en Java.
Dans une class je j'instancie ma classe de facon a crée une grille , avec
Grilles a = new Grilles();
J'ai dans le package une autre class (etudesgrille ) qui est sensé faire des transformations sur ma grille a, j'ai dans cette classe une fonction
score ( EtudeGrille G , int sens , int colonne, int ligne).

Et lorsque je veux faire Etudesgrilles. score (a, 1,1,1);
on me dit que je donnes etudesrilles alors que je devrais donner Grilles. Je comprend l'erreur mais cmt faire pour faire passer de la grille a instancé en debut dans ma class EtudeGrille!
J'espere avoir suffisement exposé les données pour que vous m'aidiez. Merci beaucoup pour votre aide.

4 réponses

  1. Modérateur
    Ta fonction devrait plutôt être ceci je pense :

    score (Grille G , int sens , int colonne, int ligne)
    1. Merci pour ta reponse, j'ai essayé et on me renvoie comme erreur,
      non-static method lecture_grille(Grilles,int,int,int) cannot be referenced from a static context.
      Pourtant lecture grille n'est pas une methode static... Je comprend pas tres bien d'ou vient l'erreur.
      1. Modérateur
        "lecture grille n'est pas une methode static", c'est bien le problème, il faut qu'elle soit static si tu l'utilises dans un contexte static (dans le main par exemple)
      2. D'accord, j'ai reussis a changé lecture_grille en static mais elle fait elle meme appele a des fonctions qui ne sont pas static( elle utilises des variables globales qui evoluent)! du coup il y a des erreurs, comment je fais pour les appelés dans lecture_grille en static?
      3. Modérateur
        Dans ce cas il faut que tu utilises des objets mais là je navigue à l'aveugle, si tu me donnes ton code je te montrerai toutes tes erreurs en une seule fois, plutôt que de les deviner au fur et à mesure.
    2. 
      /**
       *
       */
      public class Etude_grille1 {
        int colonne_prec = 0;
          int ligne_prec = 0;
          int longueur_chaine = 0;
          int monotonie_chaine = 0;
          int monotonie_case = 0;
          static int score = 0;
          int tableau_score[][];
          int grille[][];
          int GrillesJeux[][];
      
          Etude_grille1() {
      
              GrillesJeux = new int[11][11];
          }
         
         
          public static void lecture_grille(Grilles G,int ligne, int colonne, int sens) {
                      int [][] GrillesJeux = G.getGrille();
      // permet de passer d'une case à l'autre
              if (sens != 3) {
                  if (verification(GrillesJeux,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne
      
                      comparaison(GrillesJeux,ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case preceden
      
                  }
      
                  lecture_grille(G,ligne, colonne + 1,1);
              }
      
      
             
              
              else{
                  ajoutscore(longueur_chaine);
                  longueur_chaine =0 ; 
                  
                  // FIN DU JEU!!!
              }
          }
      
         public static void Afficherscore(int score){ 
        
              
              System.out.print("Votre score est de "+score);
                  }
      
          public static void comparaison( int ligne, int colonne, int ligne_prec, int colonne_prec) {// pour comparer une case a l'autre 
      
      
              if (GrillesJeux[ligne][colonne] < grille[ligne_prec][colonne_prec]) {
                  monotonie_case = 1; // depart d'une chaine, ou on continue une chaine, donc pas de "nouvelle_chaine
                  ;
              }
      
              if (GrillesJeux[ligne][colonne] > grille[ligne_prec][colonne_prec]) {
                  monotonie_case = 0;
              }
      
              if (monotonie_case == monotonie_chaine) // Si c'est la "meme" monotonie alors alors on  
              {
      
                  monotonie_chaine = monotonie_case;
      
              } else {
                  ajoutscore(longueur_chaine);
                  longueur_chaine = 0;
              }
      
      
             
          }
          public static int ajoutscore(int longueur_chaine) {
              tableau_score = new int[10][10];
              score = tableau_score[0][longueur_chaine];
              return score;
          }
      
          
          public  static boolean verification(int GrilleJeu[][],int ligne, int colonne) {  // permet de voir si c'est une case de la grille ou non 
              if (GrilleJeu[ligne][colonne] == 1) {
                  return true;
              } else {
                  return false;
              }
          }
      }
      


      Et dans le main j'appelle ce dont on parlais tt a l'h:
      Etude_grille1.lecture_grille(a,1,1,1);
      j'ai des erreurs dans ajoutscore, et comparaison. ( parotut ou j'ai des variable globale). Dis moi si tu n'as pas assez d'info
      1. Modérateur
        De toute évidence tu as un constructeur pour Etude_grille1 donc tu peux enlever les static et utiliser un objet d'Etude_grille1 dans ton main :

        Etude_grille1 eg = new Etude_grille1();
        eg.lecture_grille(a,1,1,1);

        Mais je n'arrive pas du tout à comprendre ce que tu veux faire, en tout cas l'utilisation des variables globales est certainement aberrante dans ton code, elles sont toujours à éviter au maximum et là tu en as partout ce qui est certainement archi-faux, il faudrait savoir à quoi tout ceci sert, mais ça parait très mal parti !
    3. /*
       
      public class Etude_grille1 {
        int colonne_prec = 0;
          int ligne_prec = 0;
          int longueur_chaine = 0;
          int monotonie_chaine = 0;
          int monotonie_case = 0;
          static int score = 0;
          int tableau_score[][];
          int grille[][];
          int GrillesJeux[][];
      
          Etude_grille1() {
      
              GrillesJeux = new int[11][11];
          }
         
         
          public static void lecture_grille(Grilles G,int ligne, int colonne, int sens) {
                      int [][] GrillesJeux = G.getGrille();
      // permet de passer d'une case à l'autre
              if (sens != 3) {
                  if (verification(GrillesJeux,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne
      
                      comparaison(GrillesJeux,ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case preceden
      
                  }
      
                  lecture_grille(G,ligne, colonne + 1,1);
              }
      
      
              if (sens != 4) {
                  if (verification(GrillesJeux,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne
                      comparaison(ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case precedente
                  }
                  lecture_grille(G,ligne + 1, colonne, 2);
              }
      
      
              if (sens != 2) {
                  if (verification(GrillesJeux,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne
                      comparaison(ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case precedente
      
                       lecture_grille(G,ligne - 1, colonne, 4);
                  }
              }
      
              if (sens != 1) {
                  if (verification(GrilleJeu,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne
                      comparaison(ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case precedente
      
                      lecture_grille(G,ligne , colonne-1, 3);
      
      
                      //  en meme temps on envoie les coordoonné pour savoir si c'est dans la meme sequence ou non
                  }
              }
              
              else{
                  ajoutscore(longueur_chaine);
                  longueur_chaine =0 ; 
                  
                  // FIN DU JEU!!!
              }
          }
      
         public static void Afficherscore(int score){ 
        
              
              System.out.print("Votre score est de "+score);
                  }
      
          public static void comparaison( int ligne, int colonne, int ligne_prec, int colonne_prec) {// pour comparer une case a l'autre 
      
      
              if (GrillesJeux[ligne][colonne] < grille[ligne_prec][colonne_prec]) {
                  monotonie_case = 1; // depart d'une chaine, ou on continue une chaine, donc pas de "nouvelle_chaine
                  ;
              }
      
              if (GrillesJeux[ligne][colonne] > grille[ligne_prec][colonne_prec]) {
                  monotonie_case = 0;
              }
      
              if (monotonie_case == monotonie_chaine) // Si c'est la "meme" monotonie alors alors on  
              {
      
                  monotonie_chaine = monotonie_case;
      
              } else {
                  ajoutscore(longueur_chaine);
                  longueur_chaine = 0;
              }
      
      
             
          }
          public static int ajoutscore(int longueur_chaine) {
              tableau_score = new int[10][10];
              score = tableau_score[0][longueur_chaine];
              return score;
          }
      
          
          public  static boolean verification(int GrilleJeu[][],int ligne, int colonne) {  // permet de voir si c'est une case de la grille ou non 
              if (GrilleJeu[ligne][colonne] == 1) {
                  return true;
              } else {
                  return false;
              }
          }
      }
      

      Je n'avais pas tout mlis mon code pour ne pas te surchargé.
      Je vais utilisé des methodes recursives, en faisant lecture_grille(G,ligne + 1, colonne, 2); etc... je veux creer des variables qui resteront vraies meme si j'appelle d'autre fonction. Parce exemple longueurchaine ne peut pas revenir a 0, elle doit rester tout le temps a la valeur que j'increment au fur et a mesure.
      Je ne comprend pas pourquoi je peux enlever les static si je fais ce que tu dis...