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.
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 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 ); } } |