RobotProgram (KarelOOP2)
Retired DISLab
package cp.java.week7; import java.awt.Color; import stanford.karel.Karel; import stanford.karel.OopKarelProgram; @SuppressWarnings("serial") public class RobotProgram extends OopKarelProgram { public void run() { Robot[] robots = new Robot[4]; robots[0] = (Robot)getKarel(); robots[1] = new PaintKarel(); robots[2] = new Worker(); robots[3] = new PaintKarel(); add((Karel)robots[1], 3, 7, SOUTH, 0); add((Karel)robots[2], 7, 6, WEST, 0); add((Karel)robots[3], 6, 4, NORTH, 0); startGame(robots); } public static void main(String[] args) { OopKarelProgram.main(args, new Worker()); } public void startGame(Robot[] robots) { for (Robot robot : robots) go(robot, 2); for (Robot robot : robots) paintLine(robot, RED); } public void paintLine(Robot robot, Color color) { robot.walkToWall(); robot.spin(); robot.spin(); paintForward(robot, color); } private void paintForward(Robot robot, Color color) { robot.paint(color); while (robot.canForward()) { robot.walk(); robot.paint(color); } } public int go(Mover mover, int steps) { int i = 0; for ( ; i < steps; i++) { if (!mover.canForward()) break; mover.walk(); } return i; } }