Processing nullpointerexception
Résolu
Javi06
Messages postés
5
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
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));
}
}
}
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));
}
}
}
A voir également:
- Processing null pointer exception
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- Processing download - Télécharger - Langages
- Une exception non gérée s'est produite dans votre application - Forum Word
- A java exception has occurred - Forum Logiciels
6 réponses
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
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()?
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()?
Jai essayé, ca ne fonctionne toujours pas... J'ai égalemment retiré toutes les images et ça n'y fait rien non plus...
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!
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!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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.
La confiance n'exclut pas le contrôle
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
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...
donc jai rajouté ton petit bout de programme et... Nullpointerexception
merci quand meme de ton aide