Difference between revisions of "기본 Karel 프로그램 예제"

From DISLab
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
=== Karel 라이브러리 ===
=== Karel 라이브러리 ===
* [[media:karel.jar | Stanford Karel Library (karel.jar)]]
* [[media:karel.jar | Stanford Karel Library (karel.jar)]]
* [[media:hufs-karel.jar | HUFS Karel Library (hufs-karel.jar)]]
* <del>[[media:hufs-karel.jar | HUFS Karel Library (hufs-karel.jar)]]</del>
* [[media:hufs-karel-220915.jar | HUFS Karel Library 2022.09.15 Version (hufs-karel-220915.jar)]]


이 라이브러리는 Java 6 이하의 버전에서만 실행된다. 그 이유는 Java Applet을 이용하기 때문인데, Java 7부터 Applet이 제거되어 Applet은 이후 버전에서는 더 이상 동작하지 않는다. Java 7 이후 버전으로 Karel을 실행하면 빈 화면만 등장한다.
이 라이브러리는 Java 6 이하의 버전에서만 실행된다. 그 이유는 Java Applet을 이용하기 때문인데, Java 7부터 Applet이 제거되어 Applet은 이후 버전에서는 더 이상 동작하지 않는다. Java 7 이후 버전으로 Karel을 실행하면 빈 화면만 등장한다.
Line 70: Line 71:
* <code>add()</code> 메소드를 이용하여 생성한 Karel을 월드에 추가하지 않았기 때문에 오류가 난다.
* <code>add()</code> 메소드를 이용하여 생성한 Karel을 월드에 추가하지 않았기 때문에 오류가 난다.


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


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

Latest revision as of 13:22, 22 September 2022

Karel 라이브러리

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

첫 번째 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가 실행된다.
  • HufsProgram.main에서 인자로 전달한 HKarel("철수")getHObject("철수")를 통하여 구할 수 있다.

두 번째 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);
    }

}
  • HufsProgram.main 메소드에서 두 번째 인자로 null을 두었다. 이것은 Karel 객체를 전달하지 않는다는 뜻이다.
  • Start 버튼을 누르기 전에 onInit()가 실행된다. 그러므로 Start 버튼을 누르기 전에 초기화 해야 할 코드는 이곳에 작성한다. 여기에서 HKarel 객체를 생성하였다. 하지만 이 객체를 월드에 추가하지는 않았다.
  • 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);
    }

}
  • 위 예제와 동일한 코드이나, add(karel)을 실행하여 생성한 객체를 월드에 추가하도록 하였다. 그러므로 이 객체가 월드에 있어야만 사용할 수 있는 move() 메소드를 사용할 수 있게 되었다.