//Move.java

/** 
 *
 * @author  Sean Bridges
 * @version 1.0
 * 
 * The move represents a single move in a game.
 * A move can represent itself as an integer, and 
 * knows the player number of the player made it.
 */
public interface Move {

    /**
     * The default method of accessing the moves value.
     * This method is to avoid casting.  Rather than having 
     * a board cast the Move to its real class, it can access 
     * the move as an int.  At times though it may be neccassary
     * to cast the Move to its true class.
     *
     * Casting can be an expensive process.  When time is an issue, eg for
     * games that try thousands of moves in order to determine the best one, 
     * it is better to avoid casting.
     *
     * The clever programmer may also use the toString() method to 
     * represent the move as a String.
     */

    public int toInt();
  
    /**
     * The player who made the move.
     */
    public Player maker();
  
}