Difference between revisions of "기본 Karel 프로그램 예제"
Jump to navigation
Jump to search
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을 실행하면 빈 화면만 등장한다. |
Revision as of 13:42, 15 September 2022
Karel 라이브러리
- Stanford Karel Library (karel.jar)
HUFS Karel Library (hufs-karel.jar)- HUFS Karel Library 2022.09.15 Version (hufs-karel-220915.jar)
이 라이브러리는 Java 6 이하의 버전에서만 실행된다. 그 이유는 Java Applet을 이용하기 때문인데, Java 7부터 Applet이 제거되어 Applet은 이후 버전에서는 더 이상 동작하지 않는다. Java 7 이후 버전으로 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 프로그램
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 프로그램 수정 버전
생성한 객체를 월드에 추가해야 나타남
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()
메소드를 사용할 수 있게 되었다.