Karel

DISLab
Swpark (토론 | 기여) 사용자의 2020년 10월 20일 (화) 16:20 버전
이동: 둘러보기, 찾기

목차

설치

  1. 다음을 다운로드한다.
  2. 프로젝트에서 오른쪽 마우스 버튼을 눌러 Properties를 선택한다. 그리고 Java Build Path/Libraries 탭을 선택한다.
  3. Add External JARs 버튼을 눌러 다운로드 받은 두 개의 JAR 파일을 추가한다.

Karel 프로그램 작성법

KarelOOP Version 2

KarelOOP2.jar 라이브러리를 이용할 경우 main() 메소드를 아래와 같이 작성한다.

import hufs.dislab.karel.IKarel;
import hufs.dislab.karel.IKarelProgram;
 
public class SimpleProgram extends IKarelProgram {
    IKarel karel;
 
    // 화면이 처음 등장할 때 호출되는 메소드이다.
    // 즉, start 버튼을 누르기 직전 호출되는 메소드이다.
    @Override
    public void onInit() {
        karel = getIKarel();
    }
 
    // start 버튼을 누르면 실행되는 코드이다.
    // 이 메소드는 main 스레드에서 실행된다.
    @Override
    public void onStart() {
        karel.move();
    }
}

KarelOOP Version 1

KarelOOP.jar 라이브러리를 이용할 경우 main() 메소드를 아래와 같이 작성한다.

import stanford.karel.OopKarelProgram;
 
public class SampleProgram extends OopKarelProgram {
    @Override
    public void run() {
        Karel karel = getKarel();
 
        karel.move();
        karel.turnLeft();
    }
 
    public static void main(String[] args) {
        OopKarelProgram.main(args, new Karel());
    }
}

이 프로그램을 실행하면 아래와 같은 World가 등장한다.

Karel-World.png

여기서 Start Program 버튼을 클릭하면 프로그램의 run() 메소드가 실행된다.

OopKarelProgram.main() 메소드의 두 번째 인자에는 동작할 Karel 객체를 설정한다. 이 객체가 위 그림에 있는 Karel 객체이다.

이 Karel 객체를 프로그램에서 구하는 방법은 SampleProgram의 인스턴스 메소드(instance method)에서 getKarel() 메소드를 호출하면 된다.

World 만들 때의 유의점

World는 원하는 형태대로 만들 수 있다. 이것은 Edit World 버튼을 눌러 World를 수정한다. 이때 World의 이름을 시작하는 클래스와 동일하게 하면, 프로그램의 시작과 동시에 해당 World가 등장한다. 예를 들어 어떤 World의 이름을 SampleProgram.w 로 저장하였다면 위 프로그램을 실행하자마자 SampleProgram.w가 뜨게 된다.


Karel의 확장

제시된 Karel이 마음에 안들면 새로운 Karel 클래스를 작성하면 된다. 예를 들어 벽까지 전진하는 Karel을 만들어보자. 이것은 SuperKarel를 계승하여 만들도록 한다.

public class MyKarel extends SuperKarel {
    public void moveToWall() {
        while(frontIsClear())
            move();
    }
}

그런 다음 이 MyKarel을 이용하는 프로그램을 작성하면 다음과 같다.

import stanford.karel.OopKarelProgram;
 
public class AnotherProgram extends OopKarelProgram {
 
	@Override
	public void run() {
		MyKarel karel = (MyKarel)getKarel();
 
		karel.moveToWall();
	}
 
	public static void main(String[] args) {
		OopKarelProgram.main(args, new MyKarel());
	}
 
}


Karel's World

다음은 미리 만들어놓은 World이다. 다운로드 받아서 사용하면 된다.


참고 자료

개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
도구모음
인쇄/내보내기