Then, I stand corrected, if I am understanding you properly. The code that bourne gave should be sufficient (with my one added line).
![Twitter](/assets/twitter-4e19209ef84344ee0c433f4c7bad8d49.png)
![Twitter.hover](/assets/twitter.hover-1fb19a5bafc50deace8f88eaec867845.png)
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;