1111import javafx .scene .text .Font ;
1212import javafx .scene .text .Text ;
1313
14+ import java .util .List ;
15+
1416/**
1517 * Summary :
1618 * This handles the life component of the Player implements the life interface and extends the Component
@@ -19,6 +21,7 @@ public class LifeComponent extends Component implements Life {
1921
2022 private static final int MAX_LIVES = 3 ;
2123 private final Image heart = new Image (GameConstants .HEART_IMAGE_PATH );
24+ private final Image heartLost = new Image (GameConstants .HEART_LOST_IMAGE_PATH );
2225 private int life = MAX_LIVES ;
2326
2427 // Declaring Lives Text
@@ -59,24 +62,21 @@ private void updateLifeDisplay() {
5962 // Clear previous entities
6063 clearEntity ();
6164
62- // Adjust hearts and set them based on the current life value
63- heart1 .setLayoutY (10 );
64- heart2 .setLayoutY (10 );
65- heart3 .setLayoutY (10 );
66-
67- heart2 .setLayoutX (heart1 .getLayoutX () + 30 );
68- heart3 .setLayoutX (heart2 .getLayoutX () + 30 );
65+ List <ImageView > lives = List .of (heart1 , heart2 , heart3 );
6966
7067 // Set the appropriate number of hearts based on `life`
71- if (life == 3 ) {
72- setEntity (heart1 );
73- setEntity (heart2 );
74- setEntity (heart3 );
75- } else if (life == 2 ) {
76- setEntity (heart1 );
77- setEntity (heart2 );
78- } else if (life == 1 ) {
79- setEntity (heart1 );
68+ for (int i = MAX_LIVES ; i > 0 ; i --){
69+ ImageView currentHeart = lives .get (MAX_LIVES - i );
70+ if (i > life ){
71+ currentHeart .setImage (heartLost );
72+ }else {
73+ currentHeart .setImage (heart );
74+
75+ }
76+
77+ currentHeart .setLayoutY (10 );
78+ currentHeart .setLayoutX ((MAX_LIVES -i ) * 30 );
79+ setEntity (currentHeart );
8080 }
8181
8282 // Display the lifeText component
0 commit comments