Bonjour, Bonsoir !
Comme beaucoup je viens vous exposer mon probl�me en esp�rant avoir une aide de votre part.
Je suis en train de finaliser un projet en JAVA dans le cadre de mon enseignement de sp�cialit� au lyc�e. Mon groupe a d�cid� de r�alis� un petit jeu. En quatre mois, on a bien avanc� : la majeure partie est termin�e. Seulement, nous sommes confront�s � un probl�me.
Nous souhaitons ajouter deux boutons "JOUER" et "QUITTER" � notre jeu. Le bouton Jouer servirait � lancer le jeu et Quitter � quitter le jeu.
C'est chose faite. Mais le probl�me est que lorsqu'on clique sur "JOUER", le jeu ne se lance pas. La fen�tre ne r�agi plus et se ferme au bout de quelques secondes. Le bouton QUITTER fonctionne, lui, tr�s bien.
En esp�rant que quelqu'un ait une id�e, je vous ajoute � la suite le code complet du jeu. N'h�sitez pas � demander des pr�cisions.
M�thode Main :
M�thode "Play", fen�tre principale du jeu :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 public class Main { public static void main(String[] args){ new Play(); } }
M�thode "Panel", panneau dessinant les personnages et le fond (images � modifier pour que vous puissiez y avoir acc�s) :
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 import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Play extends JFrame implements KeyListener, ActionListener{ private JButton play = new JButton("JOUER"); private JButton quit = new JButton("QUITTER"); private JPanel container = new JPanel(); private JLabel label = new JLabel ("mon label"); private Panel panPersos = new Panel(); private boolean stop = false; JLabel labelInfo = new JLabel(); int debut = 0; int etatPartie = 0; int xSP=panPersos.getPosXSP(); int ySP=panPersos.getPosYSP(); int xVolt=panPersos.getPosXVolt(); int yVolt=panPersos.getPosYVolt(); public Play(){ //paramètres fenêtre this.setTitle("PICSRUN"); this.setSize(620, 550); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(true); this.addKeyListener(this); container.setBackground(Color.white); container.setLayout(new BorderLayout()); container.add(panPersos, BorderLayout.CENTER); container.add(label, BorderLayout.NORTH); this.setContentPane(container); this.setVisible(true); play.addActionListener(this); quit.addActionListener(this); JPanel south = new JPanel(); south.add(play); south.add(quit); container.add(south, BorderLayout.SOUTH); //gameloop(); } public void gameloop(){ startup(); while(!stop) { update(); draw(); pause(); } shutdown(); } private void startup() { etatPartie = 0; stop=false; } private void update() { // mets à jour la position du panneau{ xVolt=panPersos.getPosXVolt(); yVolt=panPersos.getPosYVolt(); xVolt=xVolt+1; panPersos.setPosXVolt(xVolt); panPersos.setPosYVolt(yVolt); if(etatPartie==1){ xSP=panPersos.getPosXSP(); ySP=panPersos.getPosYSP(); xSP=xSP+7; panPersos.setPosXSP(xSP); panPersos.setPosYSP(ySP); etatPartie=2; } if (xSP >= 600){ labelInfo.setText("Tu as gagné !"); stop = true; } else if(xVolt >= 600){ labelInfo.setText("Dommage, tu as perdu..."); stop = true; } } private void draw() { // redessinner le panneau panPersos.repaint(); } private void pause() { // attendre le temps nécessaire try { Thread.sleep(10); //la pause en millième de s. } catch (InterruptedException e){ e.printStackTrace(); } } private void shutdown() { // une fois la ligne dépassée arrêter le jeu + afficher temps/nb clic System.exit(0); } public void keyPressed(KeyEvent e){ if(etatPartie==0){ if(e.getKeyCode() == e.VK_LEFT|| e.getKeyCode() == e.VK_RIGHT){ etatPartie=1; } } else if (etatPartie==1) { if(e.getKeyCode() == e.VK_LEFT || e.getKeyCode() == e.VK_RIGHT){ etatPartie=2; } } } @Override public void keyReleased(KeyEvent e) { //sert à ne pas avancer quand reste appuyé sur la touche if(etatPartie==1 || etatPartie==2){ if(e.getKeyCode() == e.VK_LEFT || e.getKeyCode() == e.VK_RIGHT){ etatPartie=0; } } } @Override public void keyTyped(KeyEvent e) { //chercher à quoi ça sert } @Override public void actionPerformed(ActionEvent a) { if(a.getSource() == play) { gameloop(); } if(a.getSource() == quit) { System.exit(0); } } }
Note :
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 import java.awt.Graphics; import java.awt.Image; import java.io.File; import javax.imageio.ImageIO; import javax.swing.JPanel; public class Panel extends JPanel { private int posXSP = 10; private int posYSP = 130; private int posXVolt = 10; private int posYVolt = 250; private int backgroundX = 0; private int backgroundY = 0; public void paintComponent(Graphics g){ super.paintComponent(g); try{ Image img = ImageIO.read(new File("C:/Users/Adeline/Desktop/Background.jpg")); g.drawImage(img, backgroundX, backgroundY, this); } catch (Exception e){ e.printStackTrace(); } try { Image img = ImageIO.read(new File("C:/Users/Adeline/Documents/ISN/volt2.png")); g.drawImage(img, posXVolt, posYVolt, this); } catch (Exception e){ e.printStackTrace(); } try { Image img = ImageIO.read(new File("C:/Users/Adeline/Documents/ISN/SPAnim2.gif")); g.drawImage(img, posXSP, posYSP, this); } catch (Exception e){ e.printStackTrace(); } } public int getPosXVolt() { return posXVolt; } public void setPosXVolt(int posXVolt) { this.posXVolt = posXVolt; } public int getPosYVolt() { return posYVolt; } public void setPosYVolt(int posYVolt) { this.posYVolt = posYVolt; } public int getPosXSP() { return posXSP; } public void setPosXSP(int posXSP) { this.posXSP = posXSP; } public int getPosYSP() { return posYSP; } public void setPosYSP(int posYSP) { this.posYSP = posYSP; } }
- SP (Super-Patate) & Volt d�signent les personnages du jeu.
L'utilisation de Thread r�glerait-elle mon probl�me ? Si oui, comment l'utiliser ?
Merci d'avance !
Bonne soir�e![]()
Partager