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());
    }
}
개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기