Processing nullpointerexception

Résolu
Javi06 Messages postés 5 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je suis en terminale S spécialité ISN et voici un morceau du programme de mon projet de fin d'année: un jeu de bataille navale.
Mais l'erreur "java.lang.NullPointerException
at processing.core.PApplet.displayable(PApplet.java:15350)
at processing.core.PApplet.runSketch(PApplet.java:10857)
at processing.core.PApplet.main(PApplet.java:10377)" apparait.
J'ai eu beau retourner le programme 15 fois, je ne vois pas ce qui cloche. Merci d'avance de regarder :)

//variables pour la bataille navale
PImage viseur;
PImage platbnavale;
PImage bateau;
boolean placer = false;
boolean placej1 = false;
boolean placej2 = false;
boolean b1j1 = true;
boolean b2j1 = true;
boolean b3j1 = true;
boolean b1j2 = true;
boolean b2j2 = true;
boolean b3j2 = true;
boolean initialisation= false;
int x = 1;
int y = 1;
void setup
{
background(0);
size(933,700);
frameRate(10);
}

void draw()
{
if ( initialisation == false)
{
init();
}

if (placer == false)
{
placerj1();
}

}

void init()
{
viseur= loadImage("viseur.png");
platbnavale = loadImage("plat.jpg");
bateau = loadImage("bateau.jpg");
initialisation = true;
}

void placerj1()
{
background(0);
text("joueur 2",660,50);
text(" doit se retourner",660,70);
text("pendant que joueur1 place ses bateaux.",660,90);
text("Bateau 1/3 de 3 cases",660,110);
text("Placer avec les flèches puis entrée",660,130);
image(platbnavale,0,0);
image(viseur,75+58*(x-1),75+63*(y-1));

if (key != ENTER && placej1 == false)
{
if (key == CODED)
{
if (keyCode == RIGHT && x!=10)
{
x++;
keyCode=0;
}
if (keyCode == LEFT && x!=1)
{
x--;
keyCode=0;
}
if (keyCode == UP && y!=1)
{
y--;
keyCode=0;
}
if (keyCode == DOWN && y!=10)
{
y++;
keyCode=0;
}
}
}else{
if (0==0)
{
placej1 = true;
}else{
keyCode = 0;
}
}
if (placej1==true && mousePressed == false)
{
text("Cliquer sur les viseurs pour choisir",660,150);
text("la position du bateau",660,170);
if (x+2<=10)
{
image(viseur,75+58*(x+1),75+63*(y-1));
}
if (x-2>=1 )
{
image(viseur,75+58*(x-3),75+63*(y-1));
}
if (y+2<=10 )
{
image(viseur,75+58*(x-1),75+63*(y+1));
}
if (y-2>=1 )
{
image(viseur,75+58*(x-1),75+63*(y-3));
}
}
}

6 réponses

  1. Javi06 Messages postés 5 Statut Membre
     
    Merci de ta réponse, je ne pense pas que le problème vienne des images lais plutot du tableau. Je pense quand meme que la clé est l. Merci bcp
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      "je ne pense pas que le problème vienne des images lais plutot du tableau"
      Dans le code que tu as mis il n'y a pas de tableau, et de toute façon l'exception ne correspond pas. La trace donne une erreur sur PApplet.displayable, une image est "displayable", pas un tableau...
      0
    2. Javi06 Messages postés 5 Statut Membre
       
      Ah oui cest vrai je l'avais enlevé le tableau^^
      donc jai rajouté ton petit bout de programme et... Nullpointerexception
      merci quand meme de ton aide
      0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Quand on lit le wiki que je t'avais donné sur processing (Why do I get a NullPointerException?), tu devrais essayer de charger tes images dans la méthode setup(), c'est à dire avant la méthode init(), voir What are setup() and draw()?
    0
  3. Javi06 Messages postés 5 Statut Membre
     
    Jai essayé, ca ne fonctionne toujours pas... J'ai égalemment retiré toutes les images et ça n'y fait rien non plus...
    0
  4. Javi06 Messages postés 5 Statut Membre
     
    CA Y EST!!!!!

    Le problème venait du void init()
    Apres une soudaine illumination je l'ai renommé en void initiali() et tout fonctionne!!
    Encore merci pour ton aide!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Je n'avait pas vu le lien, mais effectivement la méthode init() existe déjà, et si tu veux la personnaliser il faut faire un super.init() pour conserver le comportement déjà mis en place, et non totalement l'écraser.

    Tu avais un exemple de redéfinition de la méthode init dans Undecorated frame

    Du coup je passe cette discussion en résolue.
    0
  7. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Tu devrais regarder Why do I get a NullPointerException?

    Je pense qu'il faudrait en particulier vérifier que tes images sont bien chargées avec loadImage, sinon la valeur de tes PImage seront null et leur affichage plante.

    void showError(String title, String message)
    {
        javax.swing.JOptionPane.showMessageDialog(null,
        message,
        title,
        javax.swing.JOptionPane.ERROR_MESSAGE);
    }
    
    void init() 
    { 
        viseur= loadImage("viseur.png");
        if (viseur==null)
            showError("load image fails","Impossible de charger viseur.png");
    
        platbnavale = loadImage("plat.jpg"); 
        if (platbnavale ==null)
            showError("load image fails","Impossible de charger plat.jpg");
    
        bateau = loadImage("bateau.jpg"); 
        if (bateau ==null)
            showError("load image fails","Impossible de charger bateau.jpg");
    
        initialisation = true; 
    }

    La confiance n'exclut pas le contrôle
    -1