I'm trying to make a game similar to Galaxian, but I have a trouble with my life counter, it reached the exception "Incompatible Types"
I need to make a life counter with max life is 3, life will countinously decrease by 1 everytime my actor hit an enemy.
And when no life left, game will over.
I put this method on my Actor's class. I'm planning to decrease LifeBar by 1 when my Actor hit an Enemy.
This is my method
This is what I wrote on Scenario Class, for the LifeBar
For the class Life, I just put some code to add attribute for LocationX and LocationY to save my Life position in X and Y coordinate
I'm still new to Greenfoot, any help would be very much appreciated :)
1 2 3 4 5 6 7 8 9 10 11 | private void died() { Actor enemy = getOneIntersectingObject(Enemy. class ); if (enemy != null ) { int lastIndex = SpaceWorld.getLifeBar().size()- 1 ; Life LastLife = SpaceWorld.getLifeBar().get(lastIndex); --> [b]( catch error on "lastIndex" , Incompatible Types)[/b] getWorld().removeObject(enemy); getWorld().removeObject(LastLife); SpaceWorld.getLifeBar().remove(lastIndex); } } |
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 | import greenfoot.*; import java.util.ArrayList; public class Scenario extends World { private final int LIFE_MAX = 3 ; private static ArrayList nyawaBar = new ArrayList(); public Scenario() { super ( 600 , 400 , 1 ); prepare(); } private void prepare() { prepareLifeBar( 40 , 30 ); // Add obj. main actor // Add obj. enemy // ... etc } private void prepareLifeBar( int offsetX, int offsetY) { int spaceBetweenLife = 10 ; //just for space between img for ( int i = 0 ; i < LIFE_MAX; i++) { Life life = new Life(); life.setLokasiX( offsetX+((life.getImage().getWidth()+spaceBetweenLife)*i) ); life.setLokasiY(offsetY); addObject(life, life.getLokasiX(),life.getLokasiY()); LifeBar.add(life); } } public static ArrayList getLifeBar() { return LifeBar; } } |