CollectTowerProgram (KarelOOP2)
Retired DISLab
package cp.java.week4; import hufs.dislab.karel.IKarel; import hufs.dislab.karel.IKarelProgram; import hufs.dislab.karel.SimpleKarel; @SuppressWarnings("serial") public class CollectTowerProgram extends IKarelProgram { public void onStart() { IKarel karel = getIKarel(); collectAllBeepers(karel); dropAllBeepers(karel); returnHome(karel); } void collectAllBeepers(IKarel karel) { while (karel.frontIsClear()) { collectOneTower(karel); karel.move(); } collectOneTower(karel); // 이 줄이 누락되면? } void collectOneTower(IKarel karel) { karel.turnLeft(); collectLineOfBeepers(karel); karel.turnAround(); moveToWall(karel); karel.turnLeft(); } public void collectLineOfBeepers(IKarel karel) { while (karel.beepersPresent()) { karel.pickBeeper(); if (!karel.frontIsClear()) break; karel.move(); } } void dropAllBeepers(IKarel karel) { while(karel.beepersInBag()) { karel.putBeeper(); } } void returnHome(IKarel karel) { karel.turnAround(); moveToWall(karel); karel.turnAround(); } void moveToWall(IKarel karel) { while(karel.frontIsClear()) karel.move(); } public static void main(String[] args) { IKarelProgram.main(args, new SimpleKarel()); } }