Bonjour à tous,
J'ai un problème depuis plusieurs jours que je n'arrive pas à résoudre. Je tiens à préciser que je poste mon sujet dans cette catégorie car c'est en rapport avec la conséquence mon problème, mais que le problème vient peut-être d'ailleurs.
Je vais essayer d'être clair: Je dois programmer un jeu du "Picross" pour un projet personnel (si vous ne connaissez pas, le but est de cliquer sur des cases en s'aidant d'indice dans le but de découvrir un dessin à la fin). Pour cela je créé un tableau pré-remplis de "0" (case blanche) ou de "1" (case noir), mais lorsque ce tableau est présent, la fenêtre d'affichage de mon jeu renvoie une page blanche.
Voici le code de la classe Partie gérant, donc, la partie:
Et voici le code de la classe Fenetre gérant l'affichage:
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 public class Partie { //Initialisation des variables de classes int nbCaseParLigne; //Tableau posant problème: si je le met en commentaire, l'affichage est normal, sinon j'obtient une page blanche. int tabSolution[][]={{0,1,1,1,0},{1,1,1,1,1},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,1,0}}; int tabReponse[][]; public Partie(int nbCaseParLigne){ int numLigne, numColonne, erreur=0; this.nbCaseParLigne = nbCaseParLigne; tabReponse = new int[nbCaseParLigne][nbCaseParLigne]; Fenetre jeu = new Fenetre(nbCaseParLigne); while(!(partieTerminee())){ numLigne = jeu.ligneCase; numColonne = jeu.colonneCase; if ((tabSolution[numLigne][numColonne])==1){ jeu.caseNoire(numLigne, numColonne); tabReponse[numLigne][numColonne]=1; } else { jeu.croixRouge(numLigne, numColonne); erreur +=1; tabReponse[numLigne][numColonne]=(-1); } } }
Les autres classes ne me semblent pas importantes pour ce problème, si vous pensez que le problème vient de celles-ci, je vous les fournirai.
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125 public class Fenetre extends JFrame { JLabel[][] tableauJlabel; JPanel panelJeu = new JPanel(); ImageIcon blanc; ImageIcon noir; ImageIcon croixRouge; int nbCase; int ligneCase; int colonneCase; public Fenetre(int a) { super("Picross"); this.setSize(800, 800); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); nbCase = a; //assignation d'un Layout à nos panels panelJeu.setLayout(null); //création tableau JLabel tableauJlabel = new JLabel[nbCase][nbCase]; //choix des images pour les JLabels if(nbCase == 5){ blanc = new ImageIcon("blanc5.jpg"); } if(nbCase == 10){ blanc = new ImageIcon("blanc10.jpg"); } if(nbCase == 20){ blanc = new ImageIcon("blanc20.jpg"); } if(nbCase == 5){ noir = new ImageIcon("noir5.jpg"); } if(nbCase == 10){ noir = new ImageIcon("noir10.jpg"); } if(nbCase == 20){ noir = new ImageIcon("noir20.jpg"); } if(nbCase == 5){ croixRouge = new ImageIcon("croix5.jpg"); } if(nbCase == 10){ croixRouge = new ImageIcon("croix10.jpg"); } if(nbCase == 20){ croixRouge = new ImageIcon("croix20.jpg"); } //dimensionnement de nos JLabel pour une grille de 5 if (nbCase == 5) { for (int i = 0; i < nbCase; i++) { for (int j = 0; j < nbCase; j++) { tableauJlabel[i][j] = new JLabel(); tableauJlabel[i][j].setBounds(150 + (100 * i), 150 + (100 * j), 100, 100); tableauJlabel[i][j].setIcon(blanc); panelJeu.add(tableauJlabel[i][j]); this.setContentPane(panelJeu); } } } /* //ajout des écouteurs sur la grille for (int i = 0; i < nbCase; i++) { for (int j = 0; j < nbCase; j++) { //la ligne problématique depuis hier //tableauJlabel[i][j].addMouseListener(this); } } }*/ //dimensionnement de nos JLabel pour une grille de 10 if (nbCase == 10) { for (int i = 0; i < nbCase; i++) { for (int j = 0; j < nbCase; j++) { tableauJlabel[i][j] = new JLabel(); tableauJlabel[i][j].setBounds(150 + (50 * i), 150 + (50 * j), 50, 50); tableauJlabel[i][j].setIcon(blanc); tableauJlabel[i][j].setText("B"); panelJeu.add(tableauJlabel[i][j]); this.setContentPane(panelJeu); } } } //dimensionnement de nos JLabel pour une grille de 10 if (nbCase == 20) { for (int i = 0; i < nbCase; i++) { for (int j = 0; j < nbCase; j++) { tableauJlabel[i][j] = new JLabel(); tableauJlabel[i][j].setBounds(150 + (25 * i), 150 + (25 * j), 25, 25); tableauJlabel[i][j].setIcon(blanc); tableauJlabel[i][j].setText("B"); panelJeu.add(tableauJlabel[i][j]); this.setContentPane(panelJeu); } } } this.setContentPane(panelJeu); }
Je ne trouve aucune solution rationnelle à ce problème, je remercie donc tous ceux qui m'aideront à ce sujet.
Je restes bien sûr à votre disposition en cas de problème,
Merci d'avance,
Toine52000






Répondre avec citation








Partager