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 :
Voici mon codeException 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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } } } }Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); } } } }
Merci d'avance pour votre aide.
Partager