기본 Karel 프로그램 예제
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 프로그램
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 프로그램
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 프로그램 수정 버전
생성한 객체를 월드에 추가해야 나타남
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);
}
}