Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de compilation

jeu 2048 en java

    30 octobre 2014 à 2:05:47

    Bonsoir je viens aupres de vous car je rencontre un problème dan smon code.

    pour ne pas generaliser je le restreint au niveau de Right. j'ai testé individuellement chaque methide contenu dans down et celle- ci s'avere bonee juste que des que transforme la methode totalDown de void (ou elle marche bien )a une fonction int celle -ci me cree des erreurs ainsi je ne puis compiler.

    je voudrais recuperer la somme pour la mettre dans un champ somme de cette facon je pourrai contrtoller si 2048 est atteint malheureusement impossible de compiler quand je passe de void a int total right jai le sms suivant:

    Exception in thread "main" java.lang.NullPointerException
        at exercice.Terrain.totalRight(Terrain.java:280)
        at exercice.Terrain.<init>(Terrain.java:20)
        at exercice.Jeu.main(Jeu.java:9)

    mon code est le suivant les suivants

    // les
        // champs---------------------------------------------------------------------------------------------------------------------------------------------------
        private int[][] aireDeJeu;
        private int ligne;
        private int colonne;
        private int nbre;// our number
        public int sum;
    
        // constructor----------------------------------------------------------------------------------------------------------------------------------------------
        public Terrain() {
            ligne = 4;
            colonne = 4;
            sum =  totalRight()/* + totalLeft() + totalDown() + totalUp()*/;
            nbre = chiffre();// random affectation of our random number
    
            aireDeJeu = new int[ligne][colonne];
            for (int i = 0; i < ligne; i++) {
                for (int j = 0; j < colonne; j++) {
                    aireDeJeu[i][j] = 0;// affectation of string a in our integer
                                        // table
                }
            }
        }
        ////////////////////////////////////////////  RIGHT ///////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       
        // method verify or change to test, verify, and use
        // permutation---------------------------------------------------------------------------------------------------------------------------------------------
            private void changeRight(int x) {
                boolean test = true;
    
                while (test == true) {
                    test = false;
                    for (int j = 0; j < 3; j++)// to test 2 numbers in table
                    {
                        if (aireDeJeu[x][j+1] == 0 && aireDeJeu[x][j] != 0)// if precedent case is 0
                        { // and next have numbers, we permute the place
                            permuteColumn(x, j);
                            test = true;
                        }
                    }
                }
            }
    
        // moving
        // Right------------------------------------------------------------------------------------------------------------------------------------------------
            public void moveRight() {
                for (int j = 0; j < ligne; j++) {
                    changeRight(j);
                }
            }
    
        //Method to addition two numb in right direction-----------------------------------------------------------------------------------------------------------   
            public int totalRight(){
                int resultat = 0;
                for(int j = 1; j < 3; j++){ //verification to stay in table
                        for(int i = 0; i < ligne; i++)
                        { if (aireDeJeu[i][j] == aireDeJeu[i][j+1])
                            {
                                aireDeJeu[i][j+1] = aireDeJeu[i][j] *2;//sum of two same elements in our table       
                                aireDeJeu[i][j]= aireDeJeu[i][j-1];//insert element in the empty case after sum
                                resultat = resultat + aireDeJeu[i][j+1];
                            }
                        }
                    }
                return resultat;
                }
    



    }
    et dans mon main je cree un objet qui recupere tous les elements... toute aide serait le bienvenu merci....

    la ligne 280 correspond a la ligne 58 merci pour votre aide

    -
    Edité par franp 30 octobre 2014 à 20:04:33

    • Partager sur Facebook
    • Partager sur Twitter
      30 octobre 2014 à 2:31:22

      benoit45 a écrit:

      Par pitié, ton code est illisible sans coloration syntaxique, utilises le bouton .

      -
      Edité par benoit45 il y a environ 4 heures

      • Partager sur Facebook
      • Partager sur Twitter
      Un de ces quatre, viens faire un tour sur Zeste de Savoir !
        30 octobre 2014 à 10:04:38

        Tout d'abord, j'aimearais que tu édite ton message afin d'utiliser la balise code (bouton </> dans le menu) Ensuite, tu n'as pas d'erreur à la compilation mais bien à l'exécution. Enfin, pourrais-tu nous fournir la ligne 280 de ta classe Terrain?

        Merci

        • Partager sur Facebook
        • Partager sur Twitter
          30 octobre 2014 à 12:15:48

          Bonjour,
          Oui, les balises serait bien ^^.
          Vu l'erreur, je dirais qu'une des variables n'est pas créé.
          L'erreur ne vient pas de la méthode totalRight, donc il nous faudrait la ligne :
          at exercice.Terrain.<init>(Terrain.java:20)
          et même mieux, si possible : at exercice.Jeu.main(Jeu.java:9).
          Vous n'avez pas d'autre constructeur ?
          PS : Vérifier aussi de ne pas avoir de méthode qui détruirait la variable aireDeJeu :
          aireDeJeu = null;
          Bonne continuation.

          -
          Edité par pctronique 30 octobre 2014 à 12:46:22

          • Partager sur Facebook
          • Partager sur Twitter
            30 octobre 2014 à 18:33:51

            Bonjour t vraiment désolé pour l'état du code .... je ne sais comment noircir mes textes et je ne sais pourquoi les chiffres du code ne sont apparu.... pardonner le novice que je suis. toute aide serait le bienvenue par-contre après plusieurs heures sur mon code j'ai décidé de contourner le problème et de remettre ma methode en void vu qu'elle fonctionne ainsi  mais une question me tarode l'esprit, comment faire des sauts de ligne dans une methode string to string() ??
            • Partager sur Facebook
            • Partager sur Twitter
              30 octobre 2014 à 19:59:49

              malheureusement la solution utilisé n'est pas la bonne car dans mon main on  me demande je voulais comparer totalRight a un chiffre or IDE me dit que cela n'est possible alors je reviens au probleme de depart je vais essayer d ameliorer le code
              • Partager sur Facebook
              • Partager sur Twitter
                31 octobre 2014 à 0:45:51

                Donne nous un *.zip avec tout ton code, car là je n'y comprends rien à ton programme ...
                • Partager sur Facebook
                • Partager sur Twitter
                Un de ces quatre, viens faire un tour sur Zeste de Savoir !

                Probleme de compilation

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown