Hey, I'm writing a game "Mr.Oops" like and want to have arrows popping up, being there for a second or so and then disappearing and creating another object, a cannon ball. I have no idea how to do that. The delay method delays the whole execution and with a timer I don't see a way of doing this. I think the code is written quite poorly, but I hope it is still possible. Thank you for your time.
public class Arrowup extends Object
{
private SimpleTimer timer = new SimpleTimer();
private GreenfootImage bildup = new GreenfootImage("Arrowup.png");
private GreenfootImage bilddown = new GreenfootImage("Arrowdown.png");
private GreenfootImage bildleft = new GreenfootImage("Arrowleft.png");
private GreenfootImage bildright = new GreenfootImage("Arrowright.png");
public void act()
{
if (Greenfoot.getRandomNumber(50)==7)Arrow(); // I don't want the method to be executed with every act
}
public void Arrow()
{
//if (Greenfoot.getRandomNumber(20)==7) { ignore this
int i=Greenfoot.getRandomNumber(4);
int j=Greenfoot.getRandomNumber(10);
int k=Greenfoot.getRandomNumber(6);
if(i==0) //on which side the arrow shall appear
{
World OopsWorld=getWorld();
Arrowup arrowdown = new Arrowup();
OopsWorld.addObject(arrowdown,(j*60+30) ,30);
arrowdown.setImage(bilddown);
getWorld().removeObject(this);
//if (timer.millisElapsed() > 1000
Rocket rocket = new Rocket();
OopsWorld.addObject(rocket, j*60+30, 30);
rocket.setRotation(90);
}
if(i==1)
{
World OopsWorld=getWorld();
Arrowup arrowup = new Arrowup();
OopsWorld.addObject(arrowup,(j*60+30) ,570);
arrowup.setImage(bildup);
//timer.mark();
//if (timer.millisElapsed() > 1000)
getWorld().removeObject(this);
Rocket rocket = new Rocket();
OopsWorld.addObject(rocket, j*60+30, 570);
rocket.setRotation(270);
}
if(i==2)
{
World OopsWorld=getWorld();
Arrowup arrowright = new Arrowup();
OopsWorld.addObject(arrowright,30 ,(j*60+30));
arrowright.setImage(bildright);
//timer.mark();
//if (timer.millisElapsed() > 1000)
getWorld().removeObject(this);
Rocket rocket = new Rocket();
OopsWorld.addObject(rocket, 30, j*60+30);
}
if(i==3)
{
World OopsWorld=getWorld();
Arrowup arrowleft = new Arrowup();
OopsWorld.addObject(arrowleft,570 ,(j*60+30));
arrowleft.setImage(bildleft);
//timer.mark();
//if (timer.millisElapsed() > 1000)
getWorld().removeObject(this);
Rocket rocket = new Rocket();
OopsWorld.addObject(rocket, 570, j*60+30);
rocket.setRotation(180);
}
}

