/** HeartBug @author Caroline P 2012 */ import info.gridworld.actor.Bug; import info.gridworld.grid.Location; /** A MysteryBug traces out a repeating heart with an arrow */ public class MysteryBug extends Bug { private int segment; // The segment of the heart or arrow private int steps; // The number of steps in each segment private int segmentLength; // The length of each segment public MysteryBug() { setDirection(Location.NORTHEAST); segment = 0; steps = 0; segmentLength = 3; } public void act() { int count = 0; // An indicator for the arrow if (segment <= 24 && steps < segmentLength) { if (canMove()) { move(); steps++; } } else if (segment == 0) { setDirection(Location.EAST); steps = 0; segmentLength = 4; segment++; } else if (segment == 1) { setDirection(Location.SOUTHEAST); steps = 0; segmentLength = 3; segment++; if(count == 1) { segmentLength = 1; segment = 12; } } else if (segment == 2) { setDirection(Location.SOUTH); steps = 0; segmentLength = 5; segment++; } else if (segment == 3) { setDirection(Location.SOUTHWEST); steps = 0; segmentLength = 10; segment++; } else if (segment == 4) { setDirection(Location.WEST); steps = 0; segmentLength = 1; segment++; } else if (segment == 5) { setDirection(Location.NORTHWEST); steps = 0; segmentLength = 10; segment++; } else if (segment == 6) { setDirection(Location.NORTH); steps = 0; segmentLength = 5; segment++; } else if (segment == 7) { setDirection(Location.NORTHEAST); steps = 0; segmentLength = 3; segment++; } else if (segment == 8) { setDirection(Location.EAST); steps = 0; segmentLength = 4; segment++; } else if (segment == 9) { setDirection(Location.SOUTHEAST); steps = 0; segmentLength = 3; segment++; } else if (segment == 10) { setDirection(Location.EAST); steps = 0; segmentLength = 1; segment++; } else if (segment == 11) { setDirection(Location.NORTHEAST); steps = 0; segmentLength = 3; segment = 0; count = 1; } else if (segment == 12) { setDirection(Location.NORTHEAST); steps = 0; segmentLength = 7; segment++; } else if (segment == 13) { setDirection(Location.SOUTH); steps = 0; segmentLength = 4; segment++; } else if (segment == 14) { setDirection(Location.NORTH); steps = 0; segmentLength = 4; segment++; } else if (segment == 15) { setDirection(Location.WEST); steps = 0; segmentLength = 4; segment++; } else if (segment == 16) { setDirection(Location.EAST); steps = 0; segmentLength = 4; segment++; } else if (segment == 17) { setDirection(Location.SOUTHWEST); steps = 0; segmentLength = 27; segment++; } else if (segment == 18) { setDirection(Location.NORTH); steps = 0; segmentLength = 4; segment++; } else if (segment == 19) { setDirection(Location.SOUTH); steps = 0; segmentLength = 4; segment++; } else if (segment == 20) { setDirection(Location.EAST); steps = 0; segmentLength = 4; segment++; } else if (segment == 21) { setDirection(Location.WEST); steps = 0; segmentLength = 4; segment++; } else if (segment == 22) { setDirection(Location.NORTHEAST); steps = 0; segmentLength = 20; segment++; } else if (segment == 23) { setDirection(Location.SOUTHEAST); steps = 0; segmentLength = 2; segment = 2; } } }