// BoardStats.java

/** 
 *  
 * @author  Sean Bridges
 * @version 1.0
 *
 * A BoardStats is meant to be interrogated to discover the score of the 
 * game and a heuristic for determining how each player is doing.
 * 
 * The getScore(playerNumber) method is intended to return the concrete score
 * which is how well the player is doing.
 * The getHeuristic(playerNumber) method detemines how well a player is doing.
 * 
 * getScore is meant for methods that display the score of the game, while
 * getStrength is meant for algorithims to determine the next best move.
 *
 */
public interface BoardStats {

    /**
     * Get the score for the given player.
     * A score is an indisputable thing, such as the number of hits in battleship.
     */
    public int getScore(Player aPlayer);
  
    /** 
     * Get an evaluation of how well a player is doing.
     * The number returned could be debabtable, such as a measure
     * of how strong a chess players position is.
     */
    public int getStrength(Player aPlayer);
  
    /**
     * Returns the maximum possible hueristic.
     */
    public int getMaxStrength();
  
    /**
     * Returns the minimum possible hueristic.
     */
    public int getMinStrength();
  
}//end interface BoardStats