KeyEventKarelProgram1 (KarelOOP2)

Retired DISLab
Swpark (토론 | 기여) 사용자의 2020년 10월 20일 (화) 23:28 버전
(비교) ← 이전 판 | 현재 판 (비교) | 다음 판 → (비교)
이동: 둘러보기, 찾기
/*
 * Copyright 2020 Sangwon Park @ DISLab, HUFS
 */
package cp.java.week11.thread;
 
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
import hufs.dislab.karel.IKarel;
import hufs.dislab.karel.IKarelProgram;
import hufs.dislab.karel.SimpleKarel;
 
@SuppressWarnings("serial")
public class KeyEventKarelProgram1 extends IKarelProgram {
	IKarel karel;
 
	@Override
	protected void onInit() {
		karel = getIKarel();
		addIKarel(karel, getWorldWidth() / 2, getWorldHeight() / 2, EAST, 0);
 
		this.addWorldKeyListener(new KeyListener() {
 
			void print(KeyEvent e) {
				String threadstr = Thread.currentThread().toString();
				threadstr = threadstr.substring(0, threadstr.indexOf(",")) + "]";
				String k2str = karel.toString();
				k2str = k2str.substring(k2str.lastIndexOf('.') + 1);
				String estr = e.toString();
				estr = estr.substring(estr.indexOf("["));
				estr = estr.substring(0, estr.indexOf(",keyLocation")) + "]";
 
				System.out.println(threadstr + ":" + k2str + ":" + estr);
			}
 
			@Override
			public void keyTyped(KeyEvent e) {
			}
 
			@Override
			public void keyPressed(KeyEvent e) {
				print(e);
 
				switch (e.getKeyCode()) {
				case KeyEvent.VK_UP :
					if (karel.frontIsClear())
						karel.move();
					break;
				case KeyEvent.VK_LEFT :
					karel.turnLeft();
					break;
				case KeyEvent.VK_RIGHT :
					karel.turnRight();
					break;
				case KeyEvent.VK_DOWN :
					karel.turnAround();
					break;
				}
			}
 
			@Override
			public void keyReleased(KeyEvent e) {
			}
 
		});
	}
 
	@Override
	protected void onStart() {
		System.out.println(Thread.currentThread());
	}
 
	public void moveToWall(IKarel karel) {
		while (karel.frontIsClear())
			karel.move();
	}
 
	public static void main(String[] args) {
		IKarelProgram.main(args, new SimpleKarel());
	}
}
개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기