Then, I stand corrected, if I am understanding you properly. The code that bourne gave should be sufficient (with my one added line).
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
import java.util.ListIterator;
/**
* Write a description of class Spider here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Spider extends Actor
{
private int randX, randY;
private void newRandomLoc()
{
randX = Greenfoot.getRandomNumber(getWorld().getWidth());
randY = Greenfoot.getRandomNumber(getWorld().getHeight());
}
public void act()
{
// If not close to destination, move toward it.
if (Math.sqrt(Math.pow(randX - getX(), 2) + Math.pow(randY - getY(), 2)) > 0)
{
if (Math.abs(getX() - randX) > Math.abs(getY() - randY))
{
if (randX > getX())
setLocation(getX() + 1, getY());
else
setLocation(getX() - 1, getY());
}
else
{
turnTowards( getX(), randY);
move(1);
}
setRotation(0);
}
else
newRandomLoc();
}
public void addedToWorld(World world)
{
newRandomLoc();
}
}private int randX = -1;
private int randY = -1;
public void act()
{
if (randX == -1 || (randX ==getX() && randY == getY())) {
randX = Greenfoot.getRandomNumber(getWorld().getWidth());
randY = Greenfoot.getRandomNumber(getWorld().getHeight());
}
int dx = randX-getX();
int dy = randY-getY();
int absDx = (int)Math.abs(dx);
int absDy = (int)Math.abs(dy);
if (Greenfoot.getRandomNumber(absDx+absDy) < absDx) {
setLocation(getX()+dx/absDx, getY());
} else {
setLocation(getX(), getY()+dy/absDy);
}
}private int randX = -1;
private int randY = -1;
public void act()
{
if (randX == -1 || (randX ==getX() && randY == getY())) {
randX = Greenfoot.getRandomNumber(getWorld().getWidth());
randY = Greenfoot.getRandomNumber(getWorld().getHeight());
}
int dx = randX-getX();
int dy = randY-getY();
int absDx = (int)Math.abs(dx);
int absDy = (int)Math.abs(dy);
if (Greenfoot.getRandomNumber(absDx+absDy) < absDx) {
setLocation(getX()+dx/absDx, getY());
} else {
setLocation(getX(), getY()+dy/absDy);
}
} // change instance field declarations to private int randX = -1000; private int randY = -1000; // change this part in line 6 randX == -1 // to randX == -1000 // and change line 8 to this randY = Greenfoot.getRandomNumber(getWorld().getHeight())-getImage().getHeight()+20;
// on line 8 randY = Greenfoot.getRandomNumber(getWorld().getHeight())-getImage().getHeight()/2+20;