001 /**
002 *
003 */
004 package jagafa.ai;
005
006 import jagafa.JassRound;
007 import jagafa.object.Card;
008 import jagafa.object.Player;
009 import jagafa.rule.RuleSet;
010
011 /**
012 * General interface defining the functions available to the game for computing
013 * cards by AI
014 */
015 public interface JassAI {
016 /**
017 * Compute a card to be played by the player
018 * @return The card computed by the AI
019 */
020 public abstract Card computeCard();
021
022 /**
023 * Initializes the AI with the Player and the Game object
024 * @param p The player which holds this AI
025 * @param game The game object
026 */
027 public abstract void init(Player p,JassRound game);
028
029 /**
030 * Choose a RuleSet out of the available Sets of a given scoreTable
031 *
032 */
033 public abstract RuleSet chooseRuleSet();
034
035 }