This site requires JavaScript, please enable it in your browser!
Greenfoot back
vegtio
vegtio wrote ...

2014/11/17

How do I get my actor "Charactar" to do the things in the hitMonster method for a different level?

vegtio vegtio

2014/11/17

#
  public void hitMonster()
    {
        Actor monster = getOneIntersectingObject(Monster.class);
    if(monster != null)
    {
        World myLevel1 = getWorld();
        Level1 level1 = (Level1)myLevel1;
        HealthBar healthbar = level1.getHealthBar();
         if(touchingMonster == false)
          {
                healthbar.loseHealth();
                touchingMonster = true;
                setLocation(46, 508);
               if(healthbar.health <=0)
               {
                GameOver gameover = new GameOver();
                myLevel1.addObject(gameover, myLevel1.getWidth()/2, myLevel1.getHeight()/2);
                myLevel1.removeObject(this);
               }
            }
    }else {
        touchingMonster = false;
    }
   }
This is what I tried to do.
public void hitMonster2()
    {
        Actor monster1 = getOneIntersectingObject(Monster.class);
    if(monster1 != null)
    {
        World myLevel2 = getWorld();
        Level2 level2 = (Level2)myLevel2;
        HealthBar healthbar = level2.getHealthBar();
         if(touchingMonster1 == false)
          {
                healthbar.loseHealth();
                touchingMonster1 = true;
                setLocation(46, 508);
               if(healthbar.health <=0)
               {
                GameOver gameover = new GameOver();
                myLevel2.addObject(gameover, myLevel2.getWidth()/2, myLevel2.getHeight()/2);
                myLevel2.removeObject(this);
               }
            }
    }else {
        touchingMonster1 = false;
    }
   }
But I get a error saying this java.lang.ClassCastException: Level2 cannot be cast to Level1 at Character.hitMonster(Character.java:174) at Character.act(Character.java:39)
danpost danpost

2014/11/17

#
What class do both your 'Level1' and 'Level2' classes extend?
vegtio vegtio

2014/11/17

#
They extend my World
danpost danpost

2014/11/17

#
If you added an intermediate class between World and them, you could move the healthbar field and methods to it and have access to them from all your sub-level classes.
You need to login to post a reply.