content: package aima.core.environment.nqueens;
  
  import aima.core.agent.impl.DynamicAction;
  import aima.core.util.datastructure.XYLocation;
  
  /**
   * Queens can be placed, removed, and moved. For movements, a vertical direction
   * is assumed. Therefore, only the end point needs to be specified.
   * 
   * @author Ravi Mohan
   * @author Ruediger Lunde
   */
  public class QueenAction extends DynamicAction {
  	public static final String PLACE_QUEEN = "placeQueenAt";
  	public static final String REMOVE_QUEEN = "removeQueenAt";
  	public static final String MOVE_QUEEN = "moveQueenTo";
  
  	public static final String ATTRIBUTE_QUEEN_LOC = "location";
  
  	/**
  	 * Creates a queen action. Supported values of type are {@link #PLACE_QUEEN}
  	 * , {@link #REMOVE_QUEEN}, or {@link #MOVE_QUEEN}.
  	 */
  	public QueenAction(String type, XYLocation loc) {
  		super(type);
  		setAttribute(ATTRIBUTE_QUEEN_LOC, loc);
  	}
  
  	public XYLocation getLocation() {
  		return (XYLocation) getAttribute(ATTRIBUTE_QUEEN_LOC);
  	}
  
  	public int getX() {
  		return getLocation().getX();
  	}
  
  	public int getY() {
  		return getLocation().getY();
  	}
  }
  