78 lines
1.6 KiB
Java
78 lines
1.6 KiB
Java
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);
|
|
}
|
|
|
|
}
|