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

2018/6/5

How can i remove Object after Time?

Demyo Demyo

2018/6/5

#
Hello, i got a problem. I want to remove an Object after 10 seconds but i dont want to use Greenfoot.delay(10) because it pauses the game. My Code:
import greenfoot.*; 

public class NPC1 extends NPC
{
    public void act() 
    {
        move();
        if(Greenfoot.isKeyDown("e"))reden();
    }    
    
    public void move(){
        if(random1()==1){
            setLocation(getX()-2, getY());
            setRotation(180);
        }
        if(random1()==2){
            setLocation(getX()+2, getY());
            setRotation(0);
        }
        if(random1()==3){
            setLocation(getX(), getY()-2);
            setRotation(270);
        }
        if(random1()==4){
            setLocation(getX(), getY()+2);
            setRotation(90);
        }
    }
    
    public void reden(){
        
        Text errormsg=new Text();
        getWorld().addObject(errormsg, 600, 220);
        errormsg.setText("You cannot take coke with a penny");   

        //getWorld().removeObject(errormsg);
  
    }
    
    private int random1(){
        int random1 = Greenfoot.getRandomNumber(150)+1;
        return random1;
    } 
}
I already tried it like this but it doesnt worked for me :
import greenfoot.*; 

public class NPC1 extends NPC
{
    int cooldown = 0;
    
    public void act() 
    {
        move();
        cooldown--;
        reden();
    }    
    
    public void move(){
        if(random1()==1){
            setLocation(getX()-2, getY());
            setRotation(180);
        }
        if(random1()==2){
            setLocation(getX()+2, getY());
            setRotation(0);
        }
        if(random1()==3){
            setLocation(getX(), getY()-2);
            setRotation(270);
        }
        if(random1()==4){
            setLocation(getX(), getY()+2);
            setRotation(90);
        }
    }
    
    public void reden(){
        if(Greenfoot.isKeyDown("e")){
            Text errormsg=new Text();
            getWorld().addObject(errormsg, 600, 220);
            errormsg.setText("You cannot take coke with a penny");   
            cooldown = 70;
            if(cooldown<1)getWorld().removeObject(errormsg);
        }

    }
    
    private int random1(){
        int random1 = Greenfoot.getRandomNumber(150)+1;
        return random1;
    } 
}
Demyo Demyo

2018/6/5

#
And iam not enabled to remove the Object, when i use if(Greenfoot.isKeyDown("g"))getWorld().removeObject(errormsg); Can someone help me? :p
danpost danpost

2018/6/6

#
Demyo wrote...
Hello, i got a problem. I want to remove an Object after 10 seconds but i dont want to use Greenfoot.delay(10) because it pauses the game. << Code Omitted >>
The main entries:
// a timer field
private int timer;

// action code
if (++timer == 60*10)
{
    getWorld().removeObject(this);
    return;
}
You need to login to post a reply.