@@ -0,0 +1,1416 @@
+package xyz.will.karelplusplus;%0A%0Aimport stanford.karel.SuperKarel;%0A%0Apublic class KarelPlusPlus extends SuperKarel %7B%0A%0A%09private static final long serialVersionUID = 1L;%0A%0A%09// Turn Right%0A%09public void turnRight() %7B%0A%09%09for(int i=0; i%3C3; i++) %7B%0A%09%09%09this.turnLeft();%0A%09%09%7D%0A%09%7D%0A%09%0A%09// Direction Logic%0A%09private Direction currentDirection = Direction.EAST;%0A%09public enum Direction %7B%0A%09%09NORTH(0),%0A%09%09EAST(1),%0A%09%09SOUTH(2),%0A%09%09WEST(3);%0A%09%09%0A%09%09Direction(int id) %7B%0A%09%09%09this.id = id;%0A%09%09%7D%0A%09%09%0A%09%09private int id;%0A%09%09public int getID() %7B%0A%09%09%09return this.id;%0A%09%09%7D%0A%09%09%0A%09%7D%0A%0A%09// Rotate to face%0A%09public void face(Direction target) %7B%0A%09%09int turns = target.getID() - currentDirection.getID();%0A%09%09if(turns %3E 0) %7B%0A%09%09%09for(int i=0; i%3Cturns; i++) %7B%0A%09%09%09%09turnRight();%0A%09%09%09%7D%0A%09%09%7D%0A%09%09if(turns %3C 0) %7B%0A%09%09%09for(int i=0; i%3Eturns; i--) %7B%0A%09%09%09%09turnLeft();%0A%09%09%09%7D%0A%09%09%7D%0A%09%09currentDirection = target;%0A%09%7D%0A%09%0A%09// Reset to East%0A%09public void reset() %7B%0A%09%09currentDirection = Direction.EAST;%0A%09%7D%0A%09%0A%09// Better version of move%0A%09public void move(Direction target) %7B%0A%09%09face(target);%0A%09%09move();%0A%09%7D%0A%09%0A%09// Move X number of times%0A%09public void move(Direction target, int times) %7B%0A%09%09for(int i=0; i%3Ctimes; i++) %7B%0A%09%09%09move(target);%0A%09%09%7D%0A%09%7D%0A%09%0A%09// Move until you hit a wall%0A%09public void go(Direction target) %7B%0A%09%09move(target);%0A%09%09while(frontIsClear())%0A%09%09%09move(target);%0A%09%7D%0A%09%0A%09// Attempt to put a beeper%0A%09public boolean tryPutBeeper() %7B%0A%09%09if(!beepersPresent()) %7B%0A%09%09%09putBeeper();%0A%09%09%09return true;%0A%09%09%7D%0A%09%09return false;%0A%09%7D%0A %0A%7D%0A

Create KarelPlusPlus.java