Ejemplo n.º 1
0
        private static bool ShouldGainCopper(GameState gameState, ICardPicker gainOrder)
        {
            PlayerState self = gameState.Self;

            int minValue = self.ExpectedCoinValueAtEndOfTurn;
            int maxValue = minValue + Strategy.CountInHand(Dominion.Cards.IllGottenGains, gameState);

            if (maxValue == minValue)
            {
                return(false);
            }

            CardPredicate shouldGainCard = delegate(Card card)
            {
                int currentCardCost = card.CurrentCoinCost(self);

                return(currentCardCost >= minValue &&
                       currentCardCost <= maxValue);
            };

            Card cardType = gainOrder.GetPreferredCard(gameState, shouldGainCard);

            if (cardType == null)
            {
                return(false);
            }

            int coppersToGain = PlayerAction.CostOfCard(cardType, gameState) - minValue;

            return(coppersToGain > 0);
        }
Ejemplo n.º 2
0
            // TODO:  implement a better default choice of which Ruins to player.
            private static int CompareRuins(Card first, Card second, GameState gameState, ICardPicker purchaseOrder)
            {
                PlayerState self = gameState.Self;

                int coinsToSpend = self.ExpectedCoinValueAtEndOfTurn;

                if (first == Cards.AbandonedMine || second == Cards.AbandonedMine)
                {
                    CardPredicate shouldGainCard = delegate(Card card)
                    {
                        int currentCardCost = card.CurrentCoinCost(self);

                        return(currentCardCost == coinsToSpend + 1);
                    };

                    Card cardType = purchaseOrder.GetPreferredCard(gameState, shouldGainCard);
                    if (cardType != null)
                    {
                        return(first == Cards.AbandonedMine ? 0 : 1);
                    }

                    //Card Card1 = purchaseOrder.GetPreferredCard(
                    //        gameState,
                    //        card => coinsToSpend >= card.CurrentCoinCost(currentPlayer) &&
                    //        gameState.GetPile(card).Any());
                    //Card Card2 = purchaseOrder.GetPreferredCard(
                    //        gameState,
                    //        card => coinsToSpend + 1 >= card.CurrentCoinCost(currentPlayer) &&
                    //        gameState.GetPile(card).Any());

                    //if (Card1 != Card2)
                    //    return first.name == "Abandoned Mine" ? 0 : 1;
                }
                return(0);
            }
Ejemplo n.º 3
0
        private static bool ShouldGainCopper(GameState gameState, ICardPicker gainOrder)
        {
            PlayerState self = gameState.Self;

            int minValue = self.ExpectedCoinValueAtEndOfTurn;
            int maxValue = minValue + Strategy.CountInHand(Dominion.Cards.IllGottenGains, gameState);

            if (maxValue == minValue)
                return false;

            CardPredicate shouldGainCard = delegate(Card card)
            {
                int currentCardCost = card.CurrentCoinCost(self);

                return currentCardCost >= minValue &&
                        currentCardCost <= maxValue;
            };

            Card cardType = gainOrder.GetPreferredCard(gameState, shouldGainCard);
            if (cardType == null)
                return false;

            int coppersToGain = DefaultPlayerAction.CostOfCard(cardType, gameState) - minValue;

            return (coppersToGain > 0);
        }
        private static bool CanTrashForGold(GameState gameState, ICardPicker trashOrder)
        {
            PlayerState self = gameState.Self;

            return trashOrder.GetPreferredCard(gameState, c => (self.Hand.HasCard(c) || self.Discard.HasCard(c)) && CardTypes.Hermit.CanTrashCard(c)) != null &&
                    self.Hand.HasCard(Cards.Hermit) &&
                    self.Hand.HasCard(Cards.MarketSquare);
        }
Ejemplo n.º 5
0
        private static bool CanTrashForGold(GameState gameState, ICardPicker trashOrder)
        {
            PlayerState self = gameState.Self;

            return(trashOrder.GetPreferredCard(gameState, c => (self.Hand.HasCard(c) || self.Discard.HasCard(c)) && CardTypes.Hermit.CanTrashCard(c)) != null &&
                   self.Hand.HasCard(Cards.Hermit) &&
                   self.Hand.HasCard(Cards.MarketSquare));
        }
        public Card GetPreferredCardReverse(GameState gameState, CardPredicate cardPredicate)
        {
            for (int i = this.matchers.Length - 1; i > 0; --i)
            {
                ICardPicker matcher = this.matchers[i];
                Card        result  = matcher.GetPreferredCard(gameState, cardPredicate);
                if (result != null)
                {
                    return(result);
                }
            }

            return(null);
        }
Ejemplo n.º 7
0
 public static int CountAllOwned(ICardPicker matchingCards, GameState gameState)
 {
     return(gameState.Self.AllOwnedCards.CountWhere(
                card => matchingCards.GetPreferredCard(gameState, testCard => testCard == card) != null));
 }
Ejemplo n.º 8
0
 public static bool HasCardIn(Card card, ICardPicker matchingCards, GameState gameState)
 {
     return(matchingCards.GetPreferredCard(gameState, c => c == card) != null);
 }
Ejemplo n.º 9
0
 public static int CountInHandFrom(ICardPicker matchingCards, GameState gameState)
 {
     return(gameState.Self.Hand.CountWhere(card => matchingCards.GetPreferredCard(gameState, current => current == card) != null));
 }
Ejemplo n.º 10
0
 public static Card WhichCardFromInHand(ICardPicker matchingCards, GameState gameState)
 {
     return(matchingCards.GetPreferredCard(gameState, card => gameState.Self.Hand.HasCard(card)));
 }
Ejemplo n.º 11
0
 public static bool DoesCardPickerMatch(this ICardPicker pickOrder, GameState gameState, Card card)
 {
     return(pickOrder.GetPreferredCard(gameState, c => c == card) != null);
 }
Ejemplo n.º 12
0
 public static int CountInHandFrom(ICardPicker matchingCards, GameState gameState)
 {
     return gameState.Self.Hand.CountWhere(card => matchingCards.GetPreferredCard(gameState, current => current == card) != null);
 }
Ejemplo n.º 13
0
 public static int CountAllOwned(ICardPicker matchingCards, GameState gameState)
 {
     return gameState.Self.AllOwnedCards.CountWhere(
         card => matchingCards.GetPreferredCard(gameState, testCard => testCard == card) != null);
 }
Ejemplo n.º 14
0
 public static Card WhichCardFromInHand(ICardPicker matchingCards, GameState gameState)
 {
     return matchingCards.GetPreferredCard(gameState, card => gameState.Self.Hand.HasCard(card));
 }
Ejemplo n.º 15
0
 public static bool HasCardIn(Card card, ICardPicker matchingCards, GameState gameState)
 {
     return matchingCards.GetPreferredCard(gameState, c => c == card) != null;
 }