Karel 개요, 분석 및 확장
Retired DISLab
목차 |
Karel the Robot
대학에 처음 입학하여 프로그래밍을 배우면 기존의 방법들과 다른 접근법을 사용하므로 많은 학생들이 어려움을 느낀다. 대입문, 반복문, 조건문과 같은 기본 문법들을 배우지만 이것이 어떤 의미인지를 처음 배울때 정확하게 이해하는 것이 어려운 학생들이 많다. 이러한 어려움을 극복하기 위하여 Karel이라 불리는 로보트를 조종하는 프로그램을 작성한다. 반복문을 통해서 로보트를 이동하고, 조건문을 이용하여 상태에 적합한 동작을 하도록 한다.
아래 글을 읽고 Karel을 조작해보자.
- Karel Java Library 다운로드
- Karel 설치법
- Karel Source Codes
- Object로 작성하는 Karel Program (old version)
- Karel/OOP 스타일 중요
- Java disassembler (JAD)
- C:> FOR %i IN (*.class) DO jad %i
- C:> ren *.jad *.java
- JAD로 디스어셈블하면 JVM INSTR monitorenter 라는 부분이 나오는데 이는 아래와 같이 해석함
public void paint(Graphics g) { if (offScrImage == null) break MISSING_BLOCK_LABEL_36; Image image = offScrImage; image; JVM INSTR monitorenter ; g.drawImage(offScrImage, 0, 0, this); image; JVM INSTR monitorexit ; break MISSING_BLOCK_LABEL_36; Exception exception; exception; image; JVM INSTR monitorexit ; throw exception; }
public void paint(Graphics g) { if (offScrImage == null) return; synchronized (offScrImage) { g.drawImage(offScrImage, 0, 0, this); } }
Examples
Karel 설치
Karel의 main 메소드 작성법
import stanford.karel.Karel; public class BeeperPickingKarel extends Karel { public void run() { move(); } public static void main(String[] args) { String[] newArgs = new String[args.length + 1]; System.arraycopy(args, 0, newArgs, 0, args.length); newArgs[args.length] = "code=" + new SecurityManager() { public String className() { return this.getClassContext()[1].getCanonicalName(); } }.className(); Karel.main(newArgs); } }
Karel's World
- Karel's Worlds