Processing nullpointerexception

Résolu/Fermé
Javi06 Messages postés 5 Date d'inscription jeudi 8 mai 2014 Statut Membre Dernière intervention 16 mai 2014 - 8 mai 2014 à 22:46
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 - 16 mai 2014 à 18:46
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

Javi06 Messages postés 5 Date d'inscription jeudi 8 mai 2014 Statut Membre Dernière intervention 16 mai 2014
12 mai 2014 à 21:38
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
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 981
12 mai 2014 à 21:41
"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
Javi06 Messages postés 5 Date d'inscription jeudi 8 mai 2014 Statut Membre Dernière intervention 16 mai 2014
15 mai 2014 à 00:06
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
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 981
15 mai 2014 à 07:54
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
Javi06 Messages postés 5 Date d'inscription jeudi 8 mai 2014 Statut Membre Dernière intervention 16 mai 2014
15 mai 2014 à 19:17
Jai essayé, ca ne fonctionne toujours pas... J'ai égalemment retiré toutes les images et ça n'y fait rien non plus...
0
Javi06 Messages postés 5 Date d'inscription jeudi 8 mai 2014 Statut Membre Dernière intervention 16 mai 2014
Modifié par Javi06 le 16/05/2014 à 10:27
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 981
16 mai 2014 à 18:46
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
KX Messages postés 16635 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 27 novembre 2022 2 981
Modifié par KX le 9/05/2014 à 10:21
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