import java.awt.event.*; import com.genuts.gameui.*; /** * Control the robot with keyboard keys. */ public class RobotControler extends SpriteWrapper implements KeyListener { private static int GOLEFT = 1<<0; private static int GORIGHT = 1<<1; private static int GOUP = 1<<2; private int keyAction = 0; public RobotControler(DummyRobot robot) { super(robot); } /** * Adds this KeyListener to the playfield */ protected void setParent(PlayField parent) { if (getParent() != null) { getParent().removeKeyListener(this); } super.setParent(parent); if (parent != null) { parent.addKeyListener(this); } } /** * Transmit vertical speed of the robot */ public int getVerticalSpeed() { return ((DummyRobot) getActionSprite()).getVerticalSpeed(); } /** * Transmit horizontal speed of the robot */ public int getHorizontalSpeed() { return ((DummyRobot) getActionSprite()).getHorizontalSpeed(); } /** * Transmit if the robot is flying */ public boolean isFlying() { return ((DummyRobot) getActionSprite()).isFlying(); } //////////////////////////////////////// ///// KeyListener //////////////////// //////////////////////////////////////// public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_LEFT: keyAction &= ~GORIGHT; keyAction |= GOLEFT; ((DummyRobot) getActionSprite()).goLeft(); break; case KeyEvent.VK_RIGHT: keyAction &= ~GOLEFT; keyAction |= GORIGHT; ((DummyRobot) getActionSprite()).goRight(); break; case KeyEvent.VK_UP: keyAction |= GOUP; ((DummyRobot) getActionSprite()).flyUp(); break; } } public void keyReleased(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_LEFT: keyAction &= ~GOLEFT; if ((keyAction & GORIGHT) == 0) { ((DummyRobot) getActionSprite()).stopWalking(); } break; case KeyEvent.VK_RIGHT: keyAction &= ~GORIGHT; if ((keyAction & GOLEFT) == 0) { ((DummyRobot) getActionSprite()).stopWalking(); } break; case KeyEvent.VK_UP: keyAction &= ~GOUP; ((DummyRobot) getActionSprite()).stopFlying(); break; } } }