Difference between revisions of "기본 Karel 프로그램 예제"
Jump to navigation
Jump to search
Line 4: | Line 4: | ||
이 라이브러리는 Java 6 이하의 버전에서만 실행된다. 그 이유는 Java Applet을 이용하기 때문인데, Java 7부터 Applet이 제거되어 Applet은 이후 버전에서는 더 이상 동작하지 않는다. Java 7 이후 버전으로 Karel을 실행하면 빈 화면만 등장한다. | 이 라이브러리는 Java 6 이하의 버전에서만 실행된다. 그 이유는 Java Applet을 이용하기 때문인데, Java 7부터 Applet이 제거되어 Applet은 이후 버전에서는 더 이상 동작하지 않는다. Java 7 이후 버전으로 Karel을 실행하면 빈 화면만 등장한다. | ||
=== 첫 번째 HUFS Karel 프로그램 === | === 첫 번째 HUFS Karel 프로그램 === | ||
Line 51: | Line 30: | ||
* Start 버튼을 누르면 <code>onStart</code>가 실행된다. | * Start 버튼을 누르면 <code>onStart</code>가 실행된다. | ||
* <code>HufsProgram.main</code>에서 인자로 전달한 <code>HKarel("철수")</code>는 <code>getHObject("철수")</code>를 통하여 구할 수 있다. | |||
=== 두 번째 HUFS Karel 프로그램 === | === 두 번째 HUFS Karel 프로그램 === | ||
Line 85: | Line 65: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Start 버튼을 누르기 전에 <code>onInit()</code>가 실행된다. 그러므로 Start 버튼을 누르기 전에 초기화 해야 할 코드는 이곳에 작성한다. | * <code>HufsProgram.main</code> 메소드에서 두 번째 인자로 <code>null</code>을 두었다. 이것은 Karel 객체를 전달하지 않는다는 뜻이다. | ||
* Start 버튼을 누르기 전에 <code>onInit()</code>가 실행된다. 그러므로 Start 버튼을 누르기 전에 초기화 해야 할 코드는 이곳에 작성한다. 여기에서 <code>HKarel</code> 객체를 생성하였다. 하지만 이 객체를 월드에 추가하지는 않았다. | |||
* Start 버튼을 누르면 <code>onStart()</code>가 실행된다. | * Start 버튼을 누르면 <code>onStart()</code>가 실행된다. | ||
* <code>add()</code> 메소드를 이용하여 생성한 Karel을 월드에 추가하지 | * <code>add()</code> 메소드를 이용하여 생성한 Karel을 월드에 추가하지 않았기 때문에 오류가 난다. | ||
=== 두 번째 HUFS Karel 프로그램 수정 버전 === | === 두 번째 HUFS Karel 프로그램 수정 버전 === | ||
Line 127: | Line 108: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* 위 예제와 동일한 코드이나, <code>add(karel)</code>을 실행하여 생성한 객체를 월드에 추가하도록 하였다. 그러므로 이 객체가 월드에 있어야만 사용할 수 있는 <code>move()</code> 메소드를 사용할 수 있게 되었다. |
Revision as of 19:24, 19 July 2022
Karel 라이브러리
이 라이브러리는 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()
메소드를 사용할 수 있게 되었다.