
/**
 * AmazonsPlayer - a simple interface for server-client Amazons player interaction.
 * 
 * @author Todd W Neller
 *
 */
public interface AmazonsPlayer {

	/**
	 * init - initializes the game state to the standard start configuration (see Wikipedia "Game of the Amazons")
	 */
	void init();
	
	/**
	 * getName - get the name of the player
	 * @return the name of the player
	 */
	String getName();
	
	/**
	 * getPlay - get the chosen play
	 * @param millisRemaining - player decision-making milliseconds remaining in the game. 
	 * @return an int array of length 3 containing the Amazon source position, Amazon destination position, and Amazon shot position.
	 * Each position is encoded in zero-based row-major form, i.e. for row r and column c on a SIZE-by-SIZE board, the position p is
	 * (r * SIZE + c).  For position p, r = p / SIZE; c = p % SIZE;
	 */
	int[] getPlay(long millisRemaining);
	
	
	/**
	 * takeTurn - make the given play. 
	 * @param srcPos - Amazon source position
	 * @param destPos - Amazon destination position
	 * @param shotPos - Amazon shot position
	 * Each position is encoded in zero-based row-major form, i.e. for row r and column c on a SIZE-by-SIZE board, the position p is
	 * (r * SIZE + c).  For position p, r = p / SIZE; c = p % SIZE;
	 */
	void takeTurn(int srcPos, int destPos, int shotPos);

}
