To call the move() in the Star class from the world class, use the following to move the first star in your array of stars
Change '0' to any number between '1' and '299' to move a different star.
stars[0].move();
stars[0].move();
for (int i = 0; i < stars.length; i++) stars[i].move();
int x = (getX() + speed) % getWorld().getWidth(); setLocation(x, getY());
public void act() { for (Object obj : getObjects(Star.class)) ((Star) obj).move(setSpeed); }
public void act() { setSpeed = (setSpeed + 359) % 360; for (Object obj : getObjects(Star.class)) ((Star) obj).move(setSpeed); }
import greenfoot.*; import java.awt.Color; public class Space extends World { int stars = 100; int i; int setSpeed; int x = Greenfoot.getRandomNumber(getWidth()); int y = Greenfoot.getRandomNumber(getHeight()); public Space() { super(600, 400, 1); createBackgroundImage(); createStars(); } private void createBackgroundImage() { getBackground().setColor(Color.black); getBackground().fill(); } private void createStars() { while (i < stars) { i++; int x = Greenfoot.getRandomNumber(getWidth()); int y = Greenfoot.getRandomNumber(getHeight()); addObject(new Star(), x, y); } } public void act() { setSpeed -= 1; for (Object obj : getObjects(Star.class)) ((Star) obj).move(setSpeed); } }
import greenfoot.*; import java.awt.Color; public class Star extends Actor { /** * creates the star and gives it various random attributes */ public Star() { int size = Greenfoot.getRandomNumber(4) + 1; GreenfootImage star = new GreenfootImage(size, size); int r = Greenfoot.getRandomNumber(256); int g = Greenfoot.getRandomNumber(256); int b = Greenfoot.getRandomNumber(256); star.setColor(new Color(r, g, b)); star.fillOval(0, 0, size, size); setImage(star); } public void move(int speed) { int x = (getX() + speed) % getWorld().getWidth(); setLocation(x, getY()); } }
// in the Star class // add the following two methods public void setSpeed(int newSpeed) { while (newSpeed < 0) newSpeed += getWorld().getWidth(); speed = newSpeed % getWorld().getWidth(); } public int getSpeed() { return speed; } // then, change line 21 in the Star class to public void move() // also, add the line in the Star constructor speed = Greenfoot.getRandomNumber(4) + 1; // NOW, in the SpaceWorld class // insert before line 27 int i = 0; // change the act() method to the following public void act() { for (Object obj : getObjects(Star.class)) { Star star = (Star) obj; int newSpeed = star.getSpeed() - 1; star.setSpeed(newSpeed); star.move(); } }