Probleme instance java

tatata -  
 tatata -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    Ta fonction devrait plutôt être ceci je pense :

    score (Grille G , int sens , int colonne, int ligne)
    0
  2. tatata
     
    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.
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      "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)
      0
    2. tatata
       
      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?
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      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.
      0
  3. tatata
     
    
    /**
     *
     */
    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
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      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 !
      0
  4. tatata
     
    /*
     
    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...
    0