public class Ant extends Actor
{
private double xSpeed;
private double ySpeed;
private int goodCalorie;
private int badCalorie;
private double exactX;
private double exactY;
private boolean dead;
public Ant (double xSpeed, double ySpeed)
{
goodCalorie = 200;
badCalorie = 100;
this.xSpeed = xSpeed;
this.ySpeed = ySpeed;
dead = false;
}
protected void addedToWorld (World myWorld)
{
exactX = getX();
exactY = getY();
}
/**
* Act - do whatever the Ant wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
exactX += xSpeed;
exactY += ySpeed;
setLocation ( (int) exactX, (int) exactY );
if ((xSpeed < 0 && getX() <= getImage().getWidth() / 2) || (xSpeed > 0 && getX() >= getWorld().getWidth() - (getImage().getWidth() / 2)))
{
xSpeed = -xSpeed;
}
if ((ySpeed < 0 && getY() <= getImage().getHeight() / 2) || (ySpeed > 0 && getY() >= getWorld().getHeight() - (getImage().getHeight() / 2)))
{
ySpeed = -ySpeed;
}
int closeness = 10000;
Actor closest = null;
for (Object obj : getWorld().getObjects(Fries.class))
{
Actor actor = (Actor) obj;
int dist = (int)Math.hypot(getX() - actor.getX(), getY() - actor.getY());
if (closest == null || dist < closeness)
{
closest = actor;
closeness = dist;
}
}
if (closest != null) {
if (intersects(closest))
{
getWorld().removeObject(closest);
return;
}
turnTowards(closest.getX(), closest.getY());
double rads = Math.atan2((double)(closest.getY()-getY()), (double)(closest.getX()-getX()));;
xSpeed = Math.cos(rads);
ySpeed = Math.sin(rads);
}
/**int closeness2 = 10000;
Actor closest2 = null;
for (Object obj : getWorld().getObjects(Ant.class))
{
Actor actor = (Actor) obj;
int dist = (int)Math.hypot(getX() - actor.getX(), getY() - actor.getY());
if (closest2 == null || dist < closeness)
{
closest2 = actor;
closeness2 = dist;
}
}
if (closest2 != null) {
if (intersects(closest2))
{
getWorld().removeObject(closest2);
return;
}
turnTowards(closest2.getX(), closest2.getY());
double rads = Math.atan2((double)(closest2.getY()-getY()), (double)(closest2.getX()-getX()));;
xSpeed = Math.cos(rads);
ySpeed = Math.sin(rads);
}
**/
if (badCalorie == 0 || goodCalorie == 0)
{
dead = true;
}
}
}
