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

2023/4/4

terminal window because isatedge

gijsdevries gijsdevries

2023/4/4

#
When an actor reaches the edge i want to remove it. It works fine but i keep getting a terminal window. this is the code of the class
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Kogel here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Kogel extends Actor
{
    int bijl =1;
    int tellerAnimatie =1;
    /**
     * Constructor die nieuwe actors maakt
     *  
     */ 
    public void act()
    {
        if (getWorld() != null) doeKogelDingen();
        if (getWorld() != null) vermoordMonster();
        if (getWorld() != null) vermoordNachtbaas();
        animatieBijl();
    }
    /**
     * methode die animatie laat gebeuren
     */
    public void animatieBijl() {
        move(4);
        if (bijl<=8)
            {
                if (tellerAnimatie == 5)    
                {
                setImage("AxeThrowing" + bijl + ".png");
                bijl++;
                tellerAnimatie=1;
                }
            }
        
        else
        {
            bijl=1;
        }
        tellerAnimatie++;
    }
    /**
     * methode die monsters vermoord en de counter update
     */
    public void vermoordMonster() {
        Actor monster = getOneIntersectingObject(Monsters.class);
        if (monster != null) // als het monster niet gelijk is aan niks (dus hij is er wel), update de counter, verwijder de desbetreffende kogel en monster
        {
            updateScoreLevel1();
            getWorld().removeObject(monster);
            getWorld().removeObject(this);
        }
    }
    public void vermoordNachtbaas() {
        Actor nachtbaas = getOneIntersectingObject(Nachtbaas.class);
        if (nachtbaas != null) // als de nachtbaas niet gelijk is aan niks (dus hij is er wel), update de counter, en verwijder de desbetreffende kogel
        {
            updateScoreLevel2();
            getWorld().removeObject(this);
            setLocation(nachtbaas.getX() - 40, nachtbaas.getY()- 40);
        }
    }
    /**
     * de methode wat de basis is van wat de kogel moet doen
     */
    public void doeKogelDingen() {
        if (isAtEdge()) //als je aan de rand bent, verwijder de desbetreffend kogel
        {
            getWorld().removeObject(this);
        }
        if (isTouching(Obstakel.class)) // als je een obstakel raakt, verwijder de desbetreffende kogel
        {
            getWorld().removeObject(this);
        }
    }
    /**
     * de methode die de counter met 1 update 
     */
    private void updateScoreLevel1()
    {
       Level1 level1 = (Level1) getWorld();
       Score score = level1.pakScore(); 
       score.bumpCount(1);
    }
    /**
     * de methode die de counter met 1 update
     */
    private void updateScoreLevel2() {
        Level2 level2 = (Level2) getWorld();
        Score2 score2 = level2.pakScore2();
        score2.bumpCount2(1);
    }
}
danpost danpost

2023/4/4

#
gijsdevries wrote...
When an actor reaches the edge i want to remove it. It works fine but i keep getting a terminal window. this is the code of the class
Cut/copy line 22 and insert (paste) it back in at line 19. It seems to be the only method that does NOT remove this actor from the world. Anyways, moving should be done before checking for collisions as the natural order of things.
TheGoatFighter TheGoatFighter

2023/4/5

#
This code is so easy, danpost 1v1 me on greenfoot on the 21st September 2029
You need to login to post a reply.