Bonjour à tous,
Je développe actuellement un petit jeu avec un système de barre de vie. J'arrive bien à changer l'affichage de ma barre de vie en fonction des coups pris par le joueur en jouant sur la largeur du rectangle représentant la barre, toutefois le changement est brutal alors que je voudrais qu'il soit progressif (en gros que la largeur de la barre descende ou augmente progressivement vers la bonne valeur).
Voici ma classe "HpBar", très basique, actuelle :
Voici le bout de code qui correspond à la gestion de la largeur de la barre :
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 import java.awt.*; import javax.swing.*; public class HpBar extends JLabel { Color c= Color.green; private static final long serialVersionUID = 1L; public void paint(Graphics g) { super.paint(g); g.setColor(c); g.fillRect(0, 0, (int) 100, (int) 20); } public void changeColor(Color c) { this.c = c; } }
J'ai essayé de bricoler un truc avec un while et une valeur qui se décrémente, mais je n'arrive pas à obtenir cette augmentation ou dégression progressive (et fluide si possible) de la barre... Une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if (playerBar == null) this.playerBar = new HpBar(); float hpLeft = ((float) p.getCurrentHp()/p.getBaseHp()) * 100; this.hpCounter.setText("HP : "+p.getCurrentHp()+"/"+p.getBaseHp()); if (hpLeft <= 20) this.playerBar.changeColor(Color.red); else if (hpLeft <= 50) this.playerBar.changeColor(Color.orange); this.playerBar.setBounds(535,530,(int)hpLeft,25); this.add(playerBar); (Autres traitements pour un affichage complémentaire) this.repaint();
PS : désolé, c'est probablement basique mais je suis une vraie quiche dès qu'il s'agit de faire de l'affichage...
Merci d'avance![]()






Répondre avec citation
Partager