package com.hearthsim.player.playercontroller; import com.hearthsim.card.Card; import com.hearthsim.card.minion.Minion; import com.hearthsim.model.BoardModel; import com.hearthsim.model.PlayerSide; public interface BoardScorer { /** * Board score function * The all important board score function. It is a function that measures how 'good' the given board is. * As a convention, this function should be an increasing function of the board's goodness. * * @param board The current board state * @return */ public double boardScore(BoardModel board); /** * Returns the card score for a particular card assuming that it is in the hand * * @param card * @return */ public double cardInHandScore(Card card, BoardModel board); /** * Returns the score of a minion assuming that it is on the board (in the field) * @param minion The minion to be scored * @param board The current board * @return */ public double minionOnBoardScore(Minion minion, PlayerSide side, BoardModel board); public double heroHealthScore_p0(double heroHealth, double heroArmor); public double heroHealthScore_p1(double heroHealth, double heroArmor); }