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    }