IKarel (KarelOOP2)

Retired DISLab
이동: 둘러보기, 찾기
/*
 * 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();
}
개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기