[Débutant] Erreur "java.lang.NullPointerException"
Bonjour,
Je souhaite développer un jeu tel que :
- Il y a deux joueurs et l'un deux doit capturer les billes de l'autre.
- Il y a une méthode distribue_bille() qui permet au joueur de distribuer les billes et donc de se déplacer.
- Il y a aussi une méthode capture_bille() qui permet de capturer les billes de l'autre.
Le problème est que le Joueur arrive à distribuer les billes mais n'arrive pas à capturer les billes.
Dans la méthode capture_bille() quand je place System.out.println("9") avant if((Joueur2.cas[23-numero_case].nombre_bille!=0)&&(Joueur2.cas[numero_case-8].nombre_bille!=0)), 9 est affiché. Par contre, si je mets System.out.println("9") après if((Joueur2.cas[23-numero_case].nombre_bille!=0)&&(Joueur2.cas[numero_case-8].nombre_bille!=0)), 9 n'est pas affiché.
Comme si le problème résidait dans le if((Joueur2.cas[23-numero_case].nombre_bille!=0)&&(Joueur2.cas[numero_case-8].nombre_bille!=0))
Voici l'erreur que j'obtiens :
Citation:
Exception in thread "main" java.lang.NullPointerException
at Joueur1.capture_bille(Joueur1.java:197)
at Joueur1.distribue_bille(Joueur1.java:178)
at Joueur1.distribue_bille(Joueur1.java:171)
at Joueur1.distribue_bille(Joueur1.java:171)
at Jeu.lance_jeu(Jeu.java:27)
at Jeu.main(Jeu.java:113)
Voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| void capture_bille() {
if ((8 <= numero_case) && (numero_case <= 15)) {
// System.out.println("9");
if ((Joueur2.cas[23 - numero_case].nombre_bille != 0) && (Joueur2.cas[numero_case - 8].nombre_bille != 0)) {
//System.out.println("9");
nombre_bille = Joueur2.cas[23 - numero_case].nombre_bille + Joueur2.cas[numero_case - 8].nombre_bille;
System.out.print(nombre_bille);
Joueur2.cas[23 - numero_case].nombre_bille = 0;
Joueur2.cas[numero_case - 8].nombre_bille = 0;
if (compteur != 0) {
Bille case_vide = getcase_vide();
numero_case = case_vide.getnumero_case();
distribue_bille();
} else {
numero_case = temp;
distribue_bille();
}
}
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
void distribue_bille(){
if ((0 <= numero_case) && (numero_case < 16)) {
nombre_bille = cas[numero_case].nombre_bille;
for (int i = numero_case + 1; i < numero_case + nombre_bille; i++) {
cas[i].nombre_bille = cas[i].getnombre_bille() + 1;
}
cas[numero_case].nombre_bille = 0;
if (cas[numero_case + nombre_bille].nombre_bille == 0) {
cas[numero_case + nombre_bille + 1].nombre_bille = cas[numero_case + nombre_bille + 1].getnombre_bille() + 1;
System.out.println("Le Joueur1 a fait Mador");
} else {
System.out.println("distribue");
cas[numero_case + nombre_bille].nombre_bille = cas[numero_case + nombre_bille].getnombre_bille() + 1;
numero_case = numero_case + nombre_bille;
if ((0 <= numero_case) && (numero_case <= 8)) {
distribue_bille();
cas[numero_case].nombre_bille = 0;
} else {
if (numero_case >= 8) {
temp = numero_case;
capture_bille();
System.out.println("capture");
}
}
}
} |
Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?
Merci d'avance pour votre aide.