So i tried to make grant2 always go to either the x or y coordinate of the next grant one
to determine who the next grant one was I used this post
Tricky situation... Get the nearest object
but there was an error here is my code and the error
java.lang.ClassCastException: class grant2 cannot be cast to class grant1 (grant2 and grant1 are in unnamed module of loader java.net.URLClassLoader @57092432)
at grant.a(grant.java:67)
at grant2.act(grant2.java:17)
at greenfoot.core.Simulation.actActor(Simulation.java:567)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:530)
at greenfoot.core.Simulation.runContent(Simulation.java:193)
at greenfoot.core.Simulation.run(Simulation.java:183)
so yeah hope someone could help me out fast
public double getDistance(Actor actor) {
return Math.hypot(actor.getX() - getX(), actor.getY() - getY());
}
public Actor getNearestActor()
{
List<Actor> nearActors = getObjectsInRange(300, Actor.class);
Actor nearestActor = null;
double nearestDistance = 300;
double distance;
for (int i = 0; i < nearActors.size(); i++)
{
distance = getDistance(nearActors.get(i));
if (distance < nearestDistance)
{
nearestActor = nearActors.get(i);
nearestDistance = distance;
}
} return nearestActor;
}
public grant()
{
GreenfootImage image = getImage();
image.scale(image.getWidth() / 2, image.getHeight() / 2);
setImage(image);
b=System.currentTimeMillis();;
}
public void a(int range, int b)
{Math.round(spin);
List<grant> isi = getObjectsInRange(range, grant.class);
x=getX();
y=getY();
int c=0;
int spinn = (int) spin;
getWorld().showText("b"+spin, 400, 400);
if(!isi.isEmpty())
{
grant1 grant1 = (grant1) getNearestActor();
spin =(Math.atan2(grant1.y-y,grant1.x-x)/Math.PI*360);
if(Math.abs(getX()-grant1.x)!=0||Math.abs(getY()-grant1.y)!=0)
{if(Math.abs(getX()-grant1.x)<=Math.abs(getY()-grant1.y))
{ if(getX()-grant1.x<=0)
{move(1);
}if(getX()-grant1.x>=0)
{move(-1);
}
}
if(Math.abs(getY()-grant1.y)<=Math.abs(getX()-grant1.x))
{ if(getY()-grant1.y<=0)
{ setLocation(getX(), getY()+1);
}if(getY()-grant1.y>=0)
{ setLocation(getX(), getY()-1);
}
}
}
}
