Bonjour,
j'espère ne pas me tromper de rubrique, mais si c'est le cas, excusez-moi.
Je vous mets dans le contexte afin de mieux cerner le probleme.
Je suis en train de faire un jeu en graphique (joueur Rouge et joueur Jaune) et pour question de simplicité, les cases de la grille du jeu sont des petits JPanel dans lesquels je dois tracer des traits au moment d'un clic par exemple.
Et je précise aussi que j'implémente une Intelligence Artificielle.
La classe du joueur Ordinateur possède une fonction :
Coup play(Coup a)
A chaque partie, le joueur Rouge commence.
Deux façons différentes de commencer :
1) L'ordinateur est Rouge, donc il doit commencer la partie, du coup on appelle :
joueurOrdi.play(null);
2) L'ordinateur est Jaune, donc c'est l'utilisateur (le joueur Rouge) qui doit commencer la partie. Du coup, apres le clic, on lancera :
jeu(joueurOrdi.play(coupUtilisateur));
Le probleme arrive lorsque le joueur Ordinateur est Rouge.
Ca me met :
Exception in thread "main" java.lang.NullPointerException
at Connexion.jeu(Connexion.java:316)
La ligne 316 correspond à :
clic[i][j].paint(g);
Mais quand le joueur Ordinateur est Jaune, il n'y a aucun probleme.
Voici la fonction qui a du mal avec paint(Graphics g) :
Et cette fonction, je l'appelle avec ça au départ :
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 public void jeu(Coup coup) { Coup coupJoueurOrdi = coup; if (couleurJoueurOrdi.equals("ROUGE")) { if (coupJoueurOrdi.i1 == coupJoueurOrdi.i2) { int i=coupJoueurOrdi.i1*2-1; int j=coupJoueurOrdi.j1*2-1; if (clic[i][j].getOk()==1) { Graphics g=clic[i][j].getGraphics(); clic[i][j].setOk(2); clic[i][j].trace(i,j,"RougeHorizontal"); clic[i][j].paint(g); } } else if (coupJoueurOrdi.i1 != coupJoueurOrdi.i2) { int i=coupJoueurOrdi.i1*2; int j=coupJoueurOrdi.j1*2-2; if (clic[i][j].getOk()==1) { Graphics g=clic[i][j].getGraphics(); clic[i][j].setOk(2); clic[i][j].trace(i,j,"RougeVertical"); clic[i][j].paint(g); } } numJoueur=2; } else if (couleurJoueurOrdi.equals("JAUNE")) { if (coupJoueurOrdi.i1 == coupJoueurOrdi.i2) { int i=coupJoueurOrdi.i1*2-2; int j=coupJoueurOrdi.j1*2; if (clic[i][j].getOk()==1) { System.out.println("if (clic[i][j].getOk()==1)"); Graphics g=clic[i][j].getGraphics(); clic[i][j].setOk(2); clic[i][j].trace(i,j,"JauneHorizontal"); clic[i][j].paint(g); } } else if (coupJoueurOrdi.i1 != coupJoueurOrdi.i2) { int i=coupJoueurOrdi.i1*2-1; int j=coupJoueurOrdi.j1*2-1; if (clic[i][j].getOk()==1) { Graphics g=clic[i][j].getGraphics(); clic[i][j].setOk(2); clic[i][j].trace(i,j,"JauneVertical"); clic[i][j].paint(g); } } numJoueur=1; } }
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 if (couleurJoueurOrdi.equals("ROUGE")) { joueurOrdi=new Joueur(taille,couleurJoueurOrdi,false); coupUtilisateur=new Coup(); numJoueur=1; coupUtilisateur=joueurOrdi.play(null); jeu(coupUtilisateur); } else if (couleurJoueurOrdi.equals("JAUNE")) { joueurOrdi=new Joueur(taille,couleurJoueurOrdi,false); coupUtilisateur=null; numJoueur=1; }
J'espere que vous arriverez à m'aider.
Partager