Bonjour a tous,
ce post est mon premier sur ce forum, je souhaite de plus préciser que je suis un novice de la programmation Java.

En gros voilà mon pb,
je créer un petit jeu pour me faire la main.
Mon programme est constitué d'une fenêtre qui intègre un panel a l'intérieur duquel je peint les éléments de mon jeu.

Ma fenêtre dispose d'un KeyListener qui me sert a modifier mon panel. Un personnage ce déplace a l'intérieur de ce dernier et lorsque j'appuie sur 'p' je souhaite lui voir faire un coup d'épée.
Ce faisant, depuis mon keylistener je modifie un booléen de mon panel et je repaint.
Je change une première fois l'image a la position de mon personnage plus met le processus en pause en utilisant un thread. Puis une seconde image avec un temps de pause.
Enfin je refait passer mon booléen a sa valeur initiale pour stopper l'animation du coup d'épée et le jeu peut ainsi reprendre son cour.

Ci-contre : le code de mon "coup d'épée" :

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
if (coup == true) { // coup d'épée
 
							g.setColor(Color.white);
							g.fillRect(x, y, 30, 30);
							g.drawImage(this.coup1, x, y, 30, 30, this);
							System.out.println("coup1");
							this.repaint();
							try {
								Thread.sleep(500);
 
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
 
							g.setColor(Color.white);
							g.fillRect(x, y, 30, 30);
							g.drawImage(this.coup2, x, y, 30, 30, this);
							System.out.println("coup2");
							this.repaint();
							try {
								Thread.sleep(500);
 
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
 
							coup = false;
 
						}
Le problème est le suivant :
bien que testant le fait que mon programme exécute bien le paint de mes 2 images, ''l'animation" se fait a très grande vitesse pour un effet visuelle très moche (le fait de changer le temps de sleep ne change rien). De plus j'ai l'impression que la première image n'est jamais peinte...

Peut être que je n'utilise pas les bonne méthode ? la logique de mon code est elle bonne ? Si des personnes plus aguerris que moi peuvent me donner une piste a suivre ou n'importe quels conseils utiles...

Merci d'avance !!