61 lines
1.7 KiB
Java
61 lines
1.7 KiB
Java
package org.artisanlogiciel.games;
|
|
|
|
/**
|
|
* DirectionPosition
|
|
* <p>
|
|
* record direction and position ( direction as defined in LabyModel ).
|
|
**/
|
|
public class DirectionPosition {
|
|
private short direction;
|
|
private Position position;
|
|
|
|
// (direction,position)
|
|
public DirectionPosition(short d, Position p) {
|
|
direction = d;
|
|
position = p;
|
|
}
|
|
|
|
public short getDirection() {
|
|
return direction;
|
|
}
|
|
|
|
public void setDirection(short d) {
|
|
direction = d;
|
|
}
|
|
|
|
public Position getPosition() {
|
|
return position;
|
|
}
|
|
|
|
public String toString() {
|
|
if (position != null) {
|
|
return position.toString();
|
|
}
|
|
return "?";
|
|
}
|
|
|
|
// create a new DirectionPosition from this using one possible direction.
|
|
public 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);
|
|
}
|
|
|
|
}
|