package com.hearthsim.player.playercontroller; import com.hearthsim.exception.HSException; import com.hearthsim.model.BoardModel; import com.hearthsim.util.DeepCopyable; import com.hearthsim.util.HearthActionBoardPair; import com.hearthsim.util.factory.BoardStateFactoryBase; import java.util.List; public interface ArtificialPlayer extends DeepCopyable<ArtificialPlayer> { /** * Play a turn * * This function is called by GameMaster, and it should return a BoardState resulting from the AI playing its turn. * * @param turn Turn number, 1-based * @param board The board state at the beginning of the turn (after all card draws and minion deaths) * * @return A list of HearthActionBoardPair that the AI has performed, starting from the earliest play to the last. * @throws HSException */ public List<HearthActionBoardPair> playTurn(int turn, BoardModel board) throws HSException; /** * Play a turn * * This function is called by GameMaster, and it should return a BoardState resulting from the AI playing its turn. * * @param turn Turn number, 1-based * @param board The board state at the beginning of the turn (after all card draws and minion deaths) * @param factory The factory to use for node generation * * @return A list of HearthActionBoardPair that the AI has performed, starting from the earliest play to the last. * @throws HSException */ public List<HearthActionBoardPair> playTurn(int turn, BoardModel board, BoardStateFactoryBase factory) throws HSException; public int getMaxThinkTime(); }