public void keyPressed(KeyEvent e) {
		int keyCode = e.getKeyCode();
		Direction direction = Direction.DOWN;
		Direction scrollDirection = Direction.LEFT;
		boolean allowedToMove = true;
		// Handle the robot moving key events
		if((keyCode == KeyEvent.VK_UP) && model.isSpaceAboveRobot()) {
			direction = Direction.UP;
			scrollDirection = Direction.DOWN;
		} else if(keyCode == KeyEvent.VK_DOWN) {
			direction = Direction.DOWN;
			scrollDirection = Direction.UP;
		} else if(keyCode == KeyEvent.VK_LEFT) {
			direction = Direction.LEFT;
		} else if(keyCode == KeyEvent.VK_RIGHT) {
			direction = Direction.RIGHT;
		} else {
			allowedToMove = false;
		}
		// Handle all the other key events here
		handleOtherKeyEvents(keyCode);
		allowedToMove &= model.canRobotMove(direction);
		allowedToMove &= !model.isLocked();
		if(allowedToMove) {
			model.getRobot().move(GameModel.getUnit(), direction);
			if(view.getAutoscroll() && view.canScroll(scrollDirection))
				view.getPanel().scroll(scrollDirection, GameModel.getUnit());
			Element el = model.removeElement(model.getRobotRect());
			if(el != null) {
				view.addFlyUp("+ $" + el.getType().getPrice());
				model.doRefresh();
			}
			model.FIRST_STEP = true;
		}
		if(model.getRobotLocation().y >= GameModel.GROUND_LEVEL) {	// We should add a hole.
			model.addHole(model.getRobotLocation());
		}
		if(model.getShop().getBounds().intersects(model.getRobotRect())) {
			view.getFlyups().setPermanentFlyUp("Press S to open Shop");
		} else if(model.getPortal().getBounds().intersects(model.getRobotRect())) {
			view.getFlyups().setPermanentFlyUp("Press S to open Real Estate");
		} else view.getFlyups().setPermanentFlyUp("");
		model.doRefresh();
	}