Bonsoir à tous
je suis étudiante en informatique programmation java netbeans; j'ai un petit soucis pour terminer un TP
Il s'agit d'un petit programme en graphisme
une fenêtre avec trois boutons T1 T2 et T3. chaque bouton a pour rôle de faire bouger un triangle
T1 de gauche vers la droite en haut
T2 de droite vers la gauche bien sur les deux triangles sont sur la même ligne;
les deux triangles bougent horisontalement
quand T1 et T2 se rencontrent au milieu doivent descendre vers le bas ensembles;
T3 doit bouger de bas vers le haut jusqu'à arrivé au milieu;
une fois les trois triangles arrivés au point milieu ils se déplacent vers la droite
je mets à votre disposition mon travail
main
class balle
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 package ballesimplethread; import javax.swing.UIManager; import java.awt.*; public class BalleSimpleThread { boolean packFrame = false; /**Construire l'application*/ public BalleSimpleThread() { Cadre frame = new Cadre(); //Valider les cadres ayant des tailles prédéfinies //Compacter les cadres ayant des infos de taille préférées - ex. depuis leur disposition if (packFrame) { frame.pack(); } else { frame.validate(); } //Centrer la fenêtre Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } /**Méthode principale*/ public static void main(String[] args) { /* try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } */ new BalleSimpleThread(); } }
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 package ballesimplethread; import javax.swing.*; import java.awt.*; class Balle { private JPanel panneau; private int x, y, dx = 2, dy = 2; private static final int taille = 40; private static final int taille2 = 80; static int a=0,b=0,c=0; public Balle(JPanel panneau) { this.panneau = panneau; } public void dessine() { Graphics surface = panneau.getGraphics(); // récupère les ressources graphiques surface.fillRect(x, 30, taille2, taille); // pour permettre le tracé des dessins surface.dispose(); // libère les ressources graphiques pour d'autres apllications } public void déplace() { Graphics surface = panneau.getGraphics(); if(x<=594){ surface.setXORMode(panneau.getBackground()); // panneau.paint(surface); surface.fillRect(x ,30, taille2, taille); // efface l'ancien tracé grâce à la fonction XOR x+=dx ; //y += dy; Dimension dim = panneau.getSize(); // dimension du panneau surface.fillRect(x,30, taille2, taille); // trace le nouvel emplacement de la balle surface.dispose();} if(a!=0){ if(b!=0) { // panneau.paint(surface); //surface.setXORMode(panneau.getBackground()); surface.fillRect(600, y, taille2, taille); // efface l'ancien tracé grâce à la fonction XOR // x+=dx ; y += dy; Dimension dim = panneau.getSize(); // dimension du panneau surface.fillRect(600, y, taille2, taille); // trace le nouvel emplacement de la balle surface.dispose(); surface.setXORMode(panneau.getBackground()); } } } /* x+=dx ; y += dy; Dimension dim = panneau.getSize(); // dimension du panneau g.fillRect(x, 30, taille2, taille); // trace le nouvel emplacement de la balle g.dispose(); p.paint(g); */ public void rebond() { x=10;; y=70; dessine(); for(int i=0;i<290;i++){ déplace(); try { Thread.sleep(20); } catch (InterruptedException e) {} } a++; /* if(a*b==1){ //y=70; dessine(); for(int i=0;i<160;i++){ déplace(); try { Thread.sleep(20); } catch (InterruptedException e) {} } }*/} public void dessine2() { Graphics surface = panneau.getGraphics(); // récupère les ressources graphiques surface.fillRect(x, 30, taille2, taille); // pour permettre le tracé des dessins surface.dispose(); // libère les ressources graphiques pour d'autres apllications } public void déplace2() { Graphics surface = panneau.getGraphics(); //surface.setXORMode(panneau.getBackground()); if (x>671){ surface.setXORMode(panneau.getBackground()); // panneau.paint(surface); surface.fillRect(x, 30, taille2, taille); // efface l'ancien tracé grâce à la fonction XOR x-=dx ;//y += dy; Dimension dim = panneau.getSize(); // dimension du panneau surface.fillRect(x, 30, taille2, taille); // trace le nouvel emplacement de la balle surface.dispose(); } if(b!=0){ if(a!=0){ //surface.setXORMode(panneau.getBackground()); surface.fillRect(670, y, taille2, taille); // efface l'ancien tracé grâce à la fonction XOR // x+=dx ; y += dy; Dimension dim = panneau.getSize(); // dimension du panneau surface.fillRect(670, y, taille2, taille); // trace le nouvel emplacement de la balle surface.dispose(); surface.setXORMode(panneau.getBackground()); //panneau.paint(surface); //} } } } public void rebond2() { x=1280; y=70; dessine2(); for(int i=0;i<350;i++){ déplace2(); try { Thread.sleep(20); } catch (InterruptedException e) {} } b++; if(a*b==1){ ; dessine2(); for(int i=0;i<100;i++){ déplace2(); try { Thread.sleep(20); } catch (InterruptedException e) {} déplace(); try { Thread.sleep(20); } catch (InterruptedException e) {} } } } public void dessine3() { Graphics surface = panneau.getGraphics(); // récupère les ressources graphiques surface.fillRect(680, y, taille2, taille); // pour permettre le tracé des dessins surface.dispose(); // libère les ressources graphiques pour d'autres apllications } public void déplace3() { Graphics surface = panneau.getGraphics(); surface.setXORMode(panneau.getBackground()); surface.fillRect(680, y, taille2, taille); // efface l'ancien tracé grâce à la fonction XOR x+=dx ;y -= dy; Dimension dim = panneau.getSize(); // dimension du panneau surface.fillRect(680, y, taille2, taille); // trace le nouvel emplacement de la balle surface.dispose(); } public void rebond3() { y=625; dessine3(); for(int i=0;i<100;i++){ déplace3(); try { Thread.sleep(20); } catch (InterruptedException e) {} } } }
class cadre
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 package ballesimplethread; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Cadre extends JFrame { JPanel contentPane; BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel(); //JButton boutonDémarrer = new JButton(); JButton boutonFermer = new JButton(); JPanel panneau = new JPanel(); JButton T1 = new JButton(); JButton T2 = new JButton(); JButton T3 = new JButton(); /**Construire le cadre*/ public Cadre() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } /**Initialiser le composant*/ private void jbInit() throws Exception { //setIconImage(Toolkit.getDefaultToolkit().createImage(Cadre.class.getResource("[Votre icône]"))); contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(315, 250)); this.setTitle("Rebond d'une balle avec un seul Thread"); /*boutonDémarrer.setText("Démarrer"); boutonDémarrer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { boutonDémarrer_actionPerformed(e); } });*/ boutonFermer.setText("Fermer"); boutonFermer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { boutonFermer_actionPerformed(e); } }); T1.setText("T1"); T1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { T1_actionPerformed(e); } }); T2.setText("T2"); T2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { T2_actionPerformed(e); } }); T3.setText("T3"); T3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { T3_actionPerformed(e); } }); panneau.setBackground(Color.orange); contentPane.add(jPanel1, BorderLayout.SOUTH); //jPanel1.add(boutonDémarrer, null); jPanel1.add(T1, null); jPanel1.add(T2, null); jPanel1.add(T3, null); jPanel1.add(boutonFermer, null); contentPane.add(panneau, BorderLayout.CENTER); } /**Remplacé, ainsi nous pouvons sortir quand la fenêtre est fermée*/ protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } /*void boutonDémarrer_actionPerformed(ActionEvent e) { Balle balle = new Balle(panneau); balle.rebond(); }*/ void boutonFermer_actionPerformed(ActionEvent e) { System.exit(0); } void T1_actionPerformed(ActionEvent e) { Balle balle = new Balle(panneau); balle.rebond(); } void T2_actionPerformed(ActionEvent e) { Balle balle = new Balle(panneau); balle.rebond2(); } void T3_actionPerformed(ActionEvent e) { Balle balle = new Balle(panneau); balle.rebond3(); } }
Connaître son ignorance est la meilleure part de la connaissance.
merci d'avance pour votre aide
Partager