IKarel (KarelOOP2)
Retired DISLab
(버전 사이의 차이)
(IKarel (JavaOOP2) 문서를 IKarel (KarelOOP2)(으)로 옮김) |
|||
(한 사용자의 중간의 편집 1개 숨겨짐) | |||
1번째 줄: | 1번째 줄: | ||
− | # | + | <source lang="java"> |
+ | /* | ||
+ | * Copyright 2020 Sangwon Park @ DISLab, HUFS | ||
+ | */ | ||
+ | package hufs.dislab.karel; | ||
+ | |||
+ | import java.awt.Color; | ||
+ | import java.awt.Point; | ||
+ | |||
+ | import stanford.karel.AbstractIKarelProgram; | ||
+ | |||
+ | /** | ||
+ | * 기존의 stanford.karel.Karel이나 stanford.karel.SuperKarel을 이용하여 코드를 작성했었다. | ||
+ | * KarelOOP2에서는 stanford.karel 패키지를 사용하지 않고도 프로그래밍을 할 수 있도록 하였다. | ||
+ | * <p/> | ||
+ | * 또한 기존 프로그램은 | ||
+ | * KarelOOP2 | ||
+ | * @author Sangwon Park | ||
+ | * @see stanford.karel.Karel | ||
+ | * @see stanford.karel.SuperKarel | ||
+ | * @see stanford.karel.AbstractIKarelProgram | ||
+ | * @see hufs.dislab.karel.IKarelProgram | ||
+ | * @see hufs.dislab.karel.SimpleKarel | ||
+ | * @since KarelOOP2 | ||
+ | */ | ||
+ | public interface IKarel extends Runnable { | ||
+ | /** | ||
+ | * IKarel에 월드에 나타나면 불리는 메소드이다. | ||
+ | * @see AbstractIKarelProgram#add(IKarel karel) | ||
+ | */ | ||
+ | public void onCreate(); | ||
+ | |||
+ | /** | ||
+ | * 캐럴의 이름을 구한다. 스레드 프로그래밍할 때 유용하다. | ||
+ | * @return 캐럴의 이름 | ||
+ | */ | ||
+ | public String getName(); | ||
+ | |||
+ | /** | ||
+ | * 현재 위치에 색을 칠한다. | ||
+ | * @param color 색깔 | ||
+ | * | ||
+ | */ | ||
+ | public void paintCorner(Color color); | ||
+ | |||
+ | /** | ||
+ | * 현재 위치의 색깔을 반환한다. | ||
+ | * @since KarelOOP2 | ||
+ | * @return 현재 위치의 색깔 | ||
+ | */ | ||
+ | public Color getCornerColor(); | ||
+ | |||
+ | /** | ||
+ | * 현재 IKarel이 있는 좌표 | ||
+ | * @since KarelOOP2 | ||
+ | * @return 좌표 | ||
+ | */ | ||
+ | public Point getLocation(); | ||
+ | |||
+ | /** | ||
+ | * Karel을 한 칸 전진한다. | ||
+ | */ | ||
+ | public void move(); | ||
+ | |||
+ | /** | ||
+ | * steps 회수 만큼 이동한다. | ||
+ | * @param steps 이동할 걸음 수 | ||
+ | * @return 실제 걸음 수. 벽이 있으면 더 이상 전진할 수 없으므로 | ||
+ | * 요청한 걸음 수와 실제 걸음 수는 다를 수 있다. | ||
+ | */ | ||
+ | public int move(int steps); | ||
+ | |||
+ | /** | ||
+ | * 반시계 방향으로 90도 회전한다. | ||
+ | */ | ||
+ | public void turnLeft(); | ||
+ | |||
+ | /** | ||
+ | * 반시계 방향으로 90도 회전한다. | ||
+ | */ | ||
+ | public void turnRight(); | ||
+ | |||
+ | /** | ||
+ | * 180도 회전한다. | ||
+ | */ | ||
+ | public void turnAround(); | ||
+ | |||
+ | /** | ||
+ | * 현재 위치에 Beeper이 있으면 주워서 가방에 담는다. | ||
+ | * 현재 위치에 Beeper가 없으면 에러 메시지를 출력하고 프로그램이 종료된다. | ||
+ | */ | ||
+ | public void pickBeeper(); | ||
+ | |||
+ | /** | ||
+ | * 현재 위치에 Beeper를 하나 놓는다. | ||
+ | * Karel이 가지고 있는 Beeper가 하나도 없으면 에러 메시지를 출력하고 프로그램이 종료된다. | ||
+ | */ | ||
+ | public void putBeeper(); | ||
+ | |||
+ | /** | ||
+ | * 현재 위치에 비퍼가 있는지 확인한다. | ||
+ | * @return 현재 위치에 비퍼가 있으면 true, 없으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean beepersPresent(); | ||
+ | |||
+ | /** | ||
+ | * Bag에 비퍼가 있는지 확인한다. | ||
+ | * @return 비퍼가 있으면 true, 없으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean beepersInBag(); | ||
+ | |||
+ | /** | ||
+ | * 앞쪽에 벽이 없는지 확인한다. | ||
+ | * @return 앞쪽에 벽이 없으면 true, 있으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean frontIsClear(); | ||
+ | |||
+ | /** | ||
+ | * 왼쪽에 벽이 없는지 확인한다. | ||
+ | * @return 왼쪽에 벽이 없으면 true, 있으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean leftIsClear(); | ||
+ | |||
+ | /** | ||
+ | * 오른쪽에 벽이 없는지 확인한다. | ||
+ | * @return 오른쪽에 벽이 없으면 true, 있으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean rightIsClear(); | ||
+ | |||
+ | /** | ||
+ | * Karel이 북쪽을 바라보고 있는지 확인다. | ||
+ | * @return Karel이 북쪽을 바라보고 있으면 true, 그렇지 않으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean facingNorth(); | ||
+ | |||
+ | /** | ||
+ | * Karel이 동쪽을 바라보고 있는지 확인다. | ||
+ | * @return Karel이 동쪽을 바라보고 있으면 true, 그렇지 않으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean facingEast(); | ||
+ | |||
+ | /** | ||
+ | * Karel이 남쪽을 바라보고 있는지 확인다. | ||
+ | * @return Karel이 남쪽을 바라보고 있으면 true, 그렇지 않으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean facingSouth() ; | ||
+ | |||
+ | /** | ||
+ | * Karel이 서쪽을 바라보고 있는지 확인다. | ||
+ | * @return Karel이 서쪽을 바라보고 있으면 true, 그렇지 않으면 false를 반환한다. | ||
+ | */ | ||
+ | public boolean facingWest(); | ||
+ | } | ||
+ | </source> |
2020년 10월 20일 (화) 17:24 현재 판
/* * Copyright 2020 Sangwon Park @ DISLab, HUFS */ package hufs.dislab.karel; import java.awt.Color; import java.awt.Point; import stanford.karel.AbstractIKarelProgram; /** * 기존의 stanford.karel.Karel이나 stanford.karel.SuperKarel을 이용하여 코드를 작성했었다. * KarelOOP2에서는 stanford.karel 패키지를 사용하지 않고도 프로그래밍을 할 수 있도록 하였다. * <p/> * 또한 기존 프로그램은 * KarelOOP2 * @author Sangwon Park * @see stanford.karel.Karel * @see stanford.karel.SuperKarel * @see stanford.karel.AbstractIKarelProgram * @see hufs.dislab.karel.IKarelProgram * @see hufs.dislab.karel.SimpleKarel * @since KarelOOP2 */ public interface IKarel extends Runnable { /** * IKarel에 월드에 나타나면 불리는 메소드이다. * @see AbstractIKarelProgram#add(IKarel karel) */ public void onCreate(); /** * 캐럴의 이름을 구한다. 스레드 프로그래밍할 때 유용하다. * @return 캐럴의 이름 */ public String getName(); /** * 현재 위치에 색을 칠한다. * @param color 색깔 * */ public void paintCorner(Color color); /** * 현재 위치의 색깔을 반환한다. * @since KarelOOP2 * @return 현재 위치의 색깔 */ public Color getCornerColor(); /** * 현재 IKarel이 있는 좌표 * @since KarelOOP2 * @return 좌표 */ public Point getLocation(); /** * Karel을 한 칸 전진한다. */ public void move(); /** * steps 회수 만큼 이동한다. * @param steps 이동할 걸음 수 * @return 실제 걸음 수. 벽이 있으면 더 이상 전진할 수 없으므로 * 요청한 걸음 수와 실제 걸음 수는 다를 수 있다. */ public int move(int steps); /** * 반시계 방향으로 90도 회전한다. */ public void turnLeft(); /** * 반시계 방향으로 90도 회전한다. */ public void turnRight(); /** * 180도 회전한다. */ public void turnAround(); /** * 현재 위치에 Beeper이 있으면 주워서 가방에 담는다. * 현재 위치에 Beeper가 없으면 에러 메시지를 출력하고 프로그램이 종료된다. */ public void pickBeeper(); /** * 현재 위치에 Beeper를 하나 놓는다. * Karel이 가지고 있는 Beeper가 하나도 없으면 에러 메시지를 출력하고 프로그램이 종료된다. */ public void putBeeper(); /** * 현재 위치에 비퍼가 있는지 확인한다. * @return 현재 위치에 비퍼가 있으면 true, 없으면 false를 반환한다. */ public boolean beepersPresent(); /** * Bag에 비퍼가 있는지 확인한다. * @return 비퍼가 있으면 true, 없으면 false를 반환한다. */ public boolean beepersInBag(); /** * 앞쪽에 벽이 없는지 확인한다. * @return 앞쪽에 벽이 없으면 true, 있으면 false를 반환한다. */ public boolean frontIsClear(); /** * 왼쪽에 벽이 없는지 확인한다. * @return 왼쪽에 벽이 없으면 true, 있으면 false를 반환한다. */ public boolean leftIsClear(); /** * 오른쪽에 벽이 없는지 확인한다. * @return 오른쪽에 벽이 없으면 true, 있으면 false를 반환한다. */ public boolean rightIsClear(); /** * Karel이 북쪽을 바라보고 있는지 확인다. * @return Karel이 북쪽을 바라보고 있으면 true, 그렇지 않으면 false를 반환한다. */ public boolean facingNorth(); /** * Karel이 동쪽을 바라보고 있는지 확인다. * @return Karel이 동쪽을 바라보고 있으면 true, 그렇지 않으면 false를 반환한다. */ public boolean facingEast(); /** * Karel이 남쪽을 바라보고 있는지 확인다. * @return Karel이 남쪽을 바라보고 있으면 true, 그렇지 않으면 false를 반환한다. */ public boolean facingSouth() ; /** * Karel이 서쪽을 바라보고 있는지 확인다. * @return Karel이 서쪽을 바라보고 있으면 true, 그렇지 않으면 false를 반환한다. */ public boolean facingWest(); }