기본 Karel 프로그램 예제

From DISLab
Jump to navigation Jump to search

Karel 라이브러리

이 라이브러리는 Java 6 이하의 버전에서만 실행된다. 그 이유는 Java Applet을 이용하기 때문인데, Java 7부터 Applet이 제거되어 Applet은 이후 버전에서는 더 이상 동작하지 않는다. Java 7 이후 버전으로 Karel을 실행하면 빈 화면만 등장한다.

pom.xml 수정

pom.xml을 다음과 같이 수정한다.

...
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
  </properties>

  <dependencies>
    ...
    <dependency>
      <groupId>hufs.karel</groupId>
      <artifactId>oopkarel3</artifactId>
      <version>3.0</version>
    </dependency>
  </dependencies>
...

첫 번째 HUFS Karel 프로그램

첫 번째 HUFS Karel 실행 화면
import hufs.karel.HKarel;
import hufs.karel.HufsProgram;

public class FirstHKarelProgram extends HufsProgram {

    @Override
    protected void onStart() {
        HKarel karel = (HKarel)getHObject("철수");

        karel.move();
        karel.move();
    }

    public static void main(String[] args) {
        HufsProgram.main(args, new HKarel("철수"));
    }
    
}
  • Start 버튼을 누르면 onStart가 실행된다.

두 번째 HUFS Karel 프로그램

SecondHKarelProgram 실행 화면
SecondHKarelProgram 실행할 경우 발생하는 오류
import hufs.karel.HKarel;
import hufs.karel.HufsProgram;

public class SecondHKarelProgram extends HufsProgram {

    HKarel karel;

    @Override
    protected void onInit() {
        karel = new HKarel("철수", 5, 5);
    }

    @Override
    protected void onStart() {
        while (true) {
            if (karel.frontIsBlocked())
                karel.turnLeft();
            karel.move();
        }        
    }
    
    public static void main(String[] args) {
        HufsProgram.main(args, null);
    }

}
  • Start 버튼을 누르기 전에 onInit()가 실행된다. 그러므로 Start 버튼을 누르기 전에 초기화 해야 할 코드는 이곳에 작성한다.
  • Start 버튼을 누르면 onStart()가 실행된다.
  • add() 메소드를 이용하여 생성한 Karel을 월드에 추가하지 않으면 오류가 난다.

두 번째 HUFS Karel 프로그램 수정 버전

생성한 객체를 월드에 추가해야 나타남

수정한 SecondHKarelProgram 실행 화면
import hufs.karel.HKarel;
import hufs.karel.HufsProgram;

public class SecondHKarelProgram extends HufsProgram {

    HKarel karel;

    @Override
    protected void onInit() {
        karel = new HKarel("철수", 5, 5);
        karel.setColor(BLUE);
        karel.setColorOfBody(YELLOW);
        karel.setColorOfFoot(GREEN);
        karel.setColorOfMouth(RED);
        add(karel);     // 생성한 HKarel을 월드에 추가
    }

    @Override
    protected void onStart() {
        while (true) {
            if (karel.frontIsBlocked())
                karel.turnLeft();
            karel.move();
        }        
    }
    
    public static void main(String[] args) {
        HufsProgram.main(args, null);
    }

}