KeyEventKarelProgram1 (KarelOOP2)
Retired DISLab
/* * 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()); } }