private Point anticipateSheepMovement(Point me, Point targetSheep) { double angleDogToSheep = Calculator.getAngleOfTrajectory(me, targetSheep); if (Calculator.withinRunDistance(targetSheep, me)) { targetSheep = Calculator.getMoveInDirection(targetSheep, angleDogToSheep, 1.0 /*SHEEP_RUN_SPEED*/); } else if (Calculator.withinWalkDistance(targetSheep, me)) { targetSheep = Calculator.getMoveInDirection(targetSheep, angleDogToSheep, .1 /*sheep walk*/); } return targetSheep; }
public Point chaseSheepTowardGoal(int dogNum, int sheepNum, Point goal) { Point dogPoint = dogs[dogNum]; Point sheepPoint = sheeps[sheepNum]; sheepPoint = anticipateSheepMovement(dogPoint, sheepPoint); double angleGapToSheep = Calculator.getAngleOfTrajectory(goal, sheepPoint); Point idealLocation = Calculator.getMoveInDirection(sheepPoint, angleGapToSheep, 1.0); Point moveLocation = Calculator.getMoveTowardPoint(dogPoint, idealLocation); return moveLocation; }