package org.artisanlogiciel.games; /** DirectionPosition record direction and position ( direction as defined in LabyModel ). **/ public class DirectionPosition { private short direction; private Position position; // (direction,position) DirectionPosition(short d, Position p) { direction=d; position=p; } short getDirection() { return direction; } void setDirection(short d) { direction = d; } Position getPosition() { return position; } public String toString() { if (position != null) { return position.toString(); } return "?"; } // create a new DirectionPosition from this using one possible direction. DirectionPosition moveToAdjacentDirection() { short pointingdirection = 0; Position p = null; if (LabyModel.isFlagSet(direction,LabyModel.RIGHT)) { p = new Position(position.getX() + 1, position.getY()); pointingdirection |= LabyModel.LEFT; } else if (LabyModel.isFlagSet(direction,LabyModel.LEFT)) { p = new Position(position.getX() -1 ,position.getY()); pointingdirection |= LabyModel.RIGHT; } else if (LabyModel.isFlagSet(direction,LabyModel.UP)) { p = new Position(position.getX(),position.getY() -1); pointingdirection |= LabyModel.DOWN; } else if (LabyModel.isFlagSet(direction,LabyModel.DOWN)) { p = new Position(position.getX(),position.getY() + 1); pointingdirection |= LabyModel.UP; } else { p = position; } return new DirectionPosition((short) pointingdirection, p); } }