Bonjour,
dans le cadre d 'un exercice, je dois dessiner une interface graphique.
Le problème est que j arrive à afficher mes zone Layout avec le BorderLayout
J'arrive donc à avoir 5 zones (OUest, est, nord, sud, centre). J'arrive à créer bouton dans ma fenêtre
Outre ces essais là, j'arrie à créer un ovale dans ma fenêtre de jeu.
Cependant, je n'arrives pas à créer les deux en même temps. j'ai l'impression que l'un ecrése l'autre. C'est embetant.
L'objectif étant de créer un cercle au centre de la fenêtre de jeu. Et de créer un tableau dans la zone rouge de la capture d'écran.
J'ai beau chercher , je ne trouves pas.
Pourriez vous me conseiller sur la conception graphique.
Je vous poste une image de ce que j'arrives à avoir.
http://bcoudou.free.fr/ebay/Capture.png
Je vous montre mon code , je vous mets le code en rouge là où je travailles sur le graphique
D'avance je vous remercie pour votre aide
Programme
Partie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // j importe les biblio import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Programme { public static void main (String [] args){ //on cree la fenetre principale qui heberge le jeu FenetrePrincipale fen = new FenetrePrincipale(); } }
Jeux ici le code qui affiche les cadres et les boutons
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195 //sert à la lecture au clavier import java.util.Scanner; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; //classe qui va créer la combinaison et les réponses. Elle hérite de la classe Partie public class Partie extends Jeu{ // on crée une combinaison à n cellules selon ce qu on a déclaré dans le constructeur protected int [] combinaison; //on crée une variable qui va acceuillir la réponse protected int [] reponse; //je copies mes tableaux pour pouvoir travailler dessus. protected int [] copieCombinaison; protected int [] copieReponse; //on définit les constructeurs par défaut public Partie(int a ,int b, int c){ // on appele le constructeur de la classe mère super(a,b,c); setPartie(); } //on déclare la méthode qui va définir la combinaison public void setPartie(){ //j initialise mes copies de tableaux copieCombinaison = new int[nbPions]; copieReponse = new int[nbPions]; //on définit une combinaison à x pions combinaison = new int[nbPions]; //ANCIEN PROGRAMME //on introduit //System.out.println("Joueur 1, vous allez définir votre combinaison:"); // on affiche une msgbox qui previent JOptionPane.showMessageDialog(null,"Joueur 1, vous allez définir votre combinaison:"); // on définit des variables String tmptxt; int tmp; // on donnes des valeurs à la combinaisons, il faut passer sur chaque positions du tab for (int i=0; i<nbPions; i++){ //ANCIEN PROGRAMME /*//ceci sert pour la lecture au clavier. Scanner clavier = new Scanner (System.in); System.out.print("Choisissez un chiffre entre 1 et "+nbCouleurs+"? "); int tmp = clavier.nextInt();*/ //on demande la saisie du chiffre tmptxt=JOptionPane.showInputDialog(null, "Choisissez un chiffre entre 1 et "+nbCouleurs+"? "); // on transforme en int tmp=Integer.parseInt(tmptxt); // on teste si c'est > 0 ou < aux nombres de couleurs while(tmp > nbCouleurs || tmp < 0) { //ANCIEN PROGRAMME //System.out.print("ATTENTION!!!Choisissez un chiffre entre 1 et "+nbCouleurs+"? "); //tmp = clavier.nextInt(); // on affiche une msgbox qui previent de l erreur tmptxt=JOptionPane.showInputDialog(null, "ATTENTION!!! Choisissez un chiffre entre 1 et "+nbCouleurs+"? "); } //si on sort de la boucle alors c'est bon combinaison[i]=tmp; } } //une méthode pour retourner la combinaison. On affiche chaque él du tableau public void getCombinaison(){ System.out.print("la combinaison est: "); for (int i=0;i<nbPions;i++){ System.out.print(combinaison[i]+" "); } System.out.println(""); } //on surcharge toString public String toString(){ return "la combinaison a "+nbPions+" pions";} //on définit le nombre de pions bien placés public int bienPlaces(){ //je définis une variable qui va définir le nombre de pions bien placés int bp=0; //on compare chaque el de la reponse aux el de la combi, et qu elle sont bien placé for (int i=0;i<nbPions;i++){ if (reponse[i]==combinaison[i]){ bp++; // on le met = 0 afin de na pas le compter dans la methode malPlace copieReponse[i]=copieCombinaison[i]=0; } } return bp; } //on définit le nombre de pions mal placés public int malPlaces(){ //je définis une variable qui va définir le nombre de pions mal placés int mp=0; //on compare chaque el à tous les él afin de voir si il se trouve dans la combi, et dans une autre boucle on fait el par el de la combi for (int j=0;j<nbPions;j++){ for (int i=0;i<nbPions;i++){ if (copieReponse[j]==copieCombinaison[i] && (copieReponse[j] != 0 || copieCombinaison[i] != 0)){ ///j incremente mp++; // je met les valeurs = 0 copieReponse[j]=copieCombinaison[i]=0; } } } return mp; } //on lit la réponse dans une méthode public void setReponse(int a) { //cette boucle sert à effacer la combi définit par l'utilisateur 1 for (int x=0; x<100; x++){ System.out.println("-------------------------"); } // on définit le nombre d'el qui compose la réponse reponse =new int[nbPions]; //on introduit System.out.println("Joueur 2,vous allez définir votre réponse:"); // on comte le nombre d'esssai effectué int essai=a; // cran d'arrêt quand il aura trouvé la réponse boolean arret=false; // ceci sert pour la lecture au clavier. Scanner clavier = new Scanner (System.in); // on donnes des valeurs à la reponse, il faut passer sur chaque positions du tab for (int i=0;i<nbPions;i++){ System.out.print("Choisissez un chiffre entre 1 et "+nbCouleurs+"? "); int tmp = clavier.nextInt(); // on teste si c'est > 0 ou < aux nombres de couleurs while(tmp > nbCouleurs || tmp < 0) { System.out.print("ATTENTION!!!Choisissez un chiffre entre 1 et "+nbCouleurs+"? "); tmp = clavier.nextInt(); } //si on sort de la boucle de vérification des couleurs reponse[i]=tmp; } //je copies mon tableau de reponse afin de le modifier System.arraycopy(reponse,0,copieReponse,0,nbPions); System.arraycopy(combinaison,0,copieCombinaison,0,nbPions); // on test le nombre de pions bien placés if (bienPlaces()==nbPions){ System.out.println("Vous avez trouvé la combinaison!!!! FELICITATIONS"); //si true alors la combi a été trouvé et on arrete le jeu arret=true; // on demande si il veut continuer à deviner? System.out.print("Continuer?[0(arreter)/1(continuer)]"); int go = clavier.nextInt(); if ( go ==1) { setPartie(); setReponse(0); } } else{ System.out.println("le nombre de pions bien placés est "+bienPlaces()+"."); // on teste le nombre de pions mal placés System.out.println("le nombre de pions mal placés est "+malPlaces()+"."); //on incremente les essais essai++; } // on demande si il veut continuer à deviner? System.out.print("Continuer?[0(arreter)/1(continuer)]"); int go = clavier.nextInt(); if ( go ==1) { // on fait x tentatives comme définit au début. if( arret !=true && essai< nbTentatives ){ //on rappele la fonction avec le nb de tentatives effectués setReponse(essai); } else{ getCombinaison(); } } else{ getCombinaison(); } } // une méthode pour retourner la Reponse. On affiche chaque él du tableau public void getReponse(){ System.out.print("la reponse est: "); for (int i=0;i<nbPions;i++){ System.out.print(reponse[i]+" "); } System.out.println(""); } }
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245 // j importe les biblio import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; //classe mère où les variables de bases sont définies. Elles seront rappelées par la suite public class Jeu { //on déclare les variables suivantes qu'on aura besoin pour le jeu protected int nbPions; protected int nbCouleurs; protected int nbTentatives; //on déclare un constructeur par défaut en initialisant les variables. public Jeu(){ setJeu(4,5,5); } // on déclare un constructeur dans le cas où les variables sont proposées public Jeu( int a, int b, int c) { setJeu (a,b,c);} // on déclare la méthode qui va initialiser toutes ces variables pour ce jeu (surcharge) public void setJeu(int a, int b, int c){ nbPions=a; nbCouleurs=b; nbTentatives=c; } //on définit une méthode qui va initialiser la variable nbPions public void setNbPions(int a){ nbPions=a;} //on définit une méthode qui va initialiser la variable nbCouleurs public void setNbCouleurs(int a){ nbCouleurs=a;} //on définit une méthode qui va initialiser la variable nbTentatives public void setNbTentatives(int a){ nbTentatives=a;} //on définit une méthode qui retourne les variables demandées public int getnbPions(){return nbPions;} public int getnbCouleurs(){return nbCouleurs;} public int getnbTentatives(){return nbTentatives;} // on surcharge le TOstring public String toString() { return "la classe est définie par nb de pions="+nbPions+" nb de couleurs="+nbCouleurs+" nb de tentatives="+nbTentatives;} } //classe s occupant de la construction de la fenetre principale class FenetrePrincipale extends JFrame implements ActionListener{ //je crée la barre de menu protected JMenuBar barreMenus; //je crée les menus protected JMenu fichier, options, jeux, aide; // je crée les sous menus protected JMenuItem nouveauJeu, ferme, definirTentatives, definirCouleurs, definirPions, definirCombinaison, about, nouveauJeuAvance; //Je cree monJeu private Partie monJeu = null; // ********TEST*********** private JPanel pan; //bouton repondre afin de proposer la solution private JButton repondre, tester; //constructeur par défaut public FenetrePrincipale(){ // permettre la fermeture du programme sur la croix rouge addWindowListener(new WindowAdapter() { public void windowClosing (WindowEvent e) { System.exit(0); } }); setFenetre(); } //paramétrage de la fenetre public void setFenetre(){ ///je definis le titre setTitle ("MasterMind"); //je definis la taille de la fenetre setSize(800,600); //creations de la barre de menus barreMenus = new JMenuBar(); setJMenuBar(barreMenus); //creations du menu fichier et de ses sous menus fichier = new JMenu("Fichier"); barreMenus.add(fichier); nouveauJeu = new JMenuItem("Nouveau Jeu"); fichier.add(nouveauJeu); nouveauJeu.addActionListener(this); nouveauJeuAvance= new JMenuItem("Nouveau Jeu avancé"); fichier.add(nouveauJeuAvance); nouveauJeuAvance.addActionListener(this); ferme = new JMenuItem("Quitter"); fichier.add(ferme); ferme.addActionListener(this); //creations du menu options et ses sous menus options = new JMenu("Options"); barreMenus.add(options); definirTentatives = new JMenuItem("Définir un nombre de tentatives"); options.add(definirTentatives); definirTentatives.addActionListener(this); definirCouleurs = new JMenuItem("Définir un nombre de couleurs"); options.add(definirCouleurs); definirCouleurs.addActionListener(this); definirPions = new JMenuItem("Définir un nombre de pions"); options.add(definirPions); definirPions.addActionListener(this); //creations menu Jeux et sous menus jeux = new JMenu("Jeux"); barreMenus.add(jeux); definirCombinaison= new JMenuItem("Définir votre combinaison"); jeux.add(definirCombinaison); definirCombinaison.addActionListener(this); //creation menu aide aide = new JMenu("?"); barreMenus.add(aide); about= new JMenuItem("About"); aide.add(about); about.addActionListener(this); this.setVisible(true); // on cree les panneaux de jeux //le panneau principal (toute la fenetre) Container c = getContentPane(); c.setLayout(new BorderLayout()); // on cree 5 panneaux JPanel centre=new JPanel(); JPanel ouest= new JPanel(); JPanel sud= new JPanel(); JPanel nord = new JPanel(); JPanel est = new JPanel(); //on ajoute ces panneaux au panneau principal c.add(centre,BorderLayout.CENTER); c.add(nord,BorderLayout.NORTH); c.add(ouest,BorderLayout.WEST); c.add(est,BorderLayout.EAST); c.add(sud,BorderLayout.SOUTH); // on cree le bouton repondre repondre= new JButton("Proposer"); tester = new JButton("Test"); //on ajout une methode d alignement au panneau sud sud.setLayout(new FlowLayout(FlowLayout.RIGHT)); // on ajoute le bouton au panneau sud sud.add(repondre); centre.setLayout(new BorderLayout()); centre.add(tester,BorderLayout.EAST); centre.setBackground(Color.red); //pan= new Pion(); //c.add(pan,BorderLayout.WEST); } //surcharge de ActionPerformed // ecouteur public void actionPerformed (ActionEvent e){ Object source = e.getSource(); //si on clique sur nouvelle partie, on lance une nouvelle partie. if (source == nouveauJeu) { //on informe JOptionPane.showMessageDialog(null, "Le nombre de pions est de 4, le nombre de couleurs est de 5, le nombre de tentatives est de 5"); //Partie j; monJeu=new Partie(4,5,5); } // on permet la fermeture du programme if (source == ferme){ //this.setVisible(false); System.exit(0); } //si on clique sur nouvelle partie, on lance une nouvelle partie avance. if (source == nouveauJeuAvance) { // on definit le nombre de tentatives String txtTentatives = JOptionPane.showInputDialog(null, "Donnez le nombre de tentatives autorisées:"); int tmpTentatives=Integer.parseInt(txtTentatives); // on definit le nombre de couleurs autoriszs String txtCouleurs = JOptionPane.showInputDialog(null, "Donnez le nombre de couleurs autorisées:"); int tmpCouleurs=Integer.parseInt(txtCouleurs); // on definit le nombre de pions String txtPions = JOptionPane.showInputDialog(null, "Donnez le nombre de pions autorisées:"); int tmpPions=Integer.parseInt(txtPions); // on cree la nouvelle partie monJeu=new Partie(tmpPions,tmpCouleurs,tmpTentatives); } // on permet la definition des nbTentatives if (source == definirTentatives){ String txt = JOptionPane.showInputDialog(null, "Donnez le nombre de tentatives autorisées:"); int tmp=Integer.parseInt(txt); if (txt == null){ monJeu.setNbTentatives(5); } else{ monJeu.setNbTentatives(tmp); } } // on permet la definition des nbCouleurs if (source == definirCouleurs){ String txt = JOptionPane.showInputDialog(null, "Donnez le nombre de couleurs autorisées:"); int tmp=Integer.parseInt(txt); if (txt == null){ monJeu.setNbCouleurs(5); } else{ monJeu.setNbCouleurs(tmp); } } // on permet la definition des nbPions if (source == definirPions){ String txt = JOptionPane.showInputDialog(null, "Donnez le nombre de pions autorisées:"); int tmp=Integer.parseInt(txt); if (txt == null){ monJeu.setNbPions(4); } else{ monJeu.setNbPions(tmp); } } // on permet la definition de la combinaison if (source == definirCombinaison){ monJeu.setPartie(); } // on permet la definition des nbTentatives if (source == about){ // on affiche une msgbox qui affiche un about JOptionPane.showMessageDialog(null,"Powered by Benjamin Coudou V1.0"); } } //surcharge TOSTRING public String toString() { return "La classe est la classe qui construit la fenetre principale";} } class Pion extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); g.drawOval(130,60,110,50); } }
Partager