private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Cartographer),
                CardAcceptance.For(Cards.Caravan),
                CardAcceptance.For(Cards.Bridge)));
 }
        private static ICardPicker PurchaseOrder()
        {
            var highPriority = new CardPickByPriority(
                CardAcceptance.For(Cards.Province, ShouldBuyProvinceOverDuchyDuke),
                CardAcceptance.For(Cards.Duke, gameState => ShouldBuyDukeOverDuchy(gameState) && ShouldBuyDuchyDukeOverPowerUp(gameState)),
                CardAcceptance.For(Cards.Duchy, ShouldBuyDuchyDukeOverPowerUp),
                CardAcceptance.For(Cards.Duke, ShouldBuyDuchyDukeOverPowerUp),
                CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) < 2),
                CardAcceptance.For(Cards.Duke, gameState => ShouldBuyDukeOverDuchy(gameState) && AtEndGame(gameState)),
                CardAcceptance.For(Cards.Duchy, AtEndGame),
                CardAcceptance.For(Cards.Duke, AtEndGame),
                CardAcceptance.For(Cards.Caravan, CanDoubleCaravan),
                CardAcceptance.For(Cards.Cartographer, gameState => CountAllOwned(Cards.Cartographer, gameState) < 2),
                CardAcceptance.For(Cards.Gold, gameState => gameState.Self.AvailableBuys <= 1));

            var buildOrder = new CardPickByBuildOrder(
                CardAcceptance.For(Cards.Bridge),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Bridge));

            var lowPriority = new CardPickByPriority(
                CardAcceptance.For(Cards.Caravan),
                CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) < 4),
                CardAcceptance.For(Cards.Silver));

            return(new CardPickConcatenator(highPriority, buildOrder, lowPriority));
        }
Exemplo n.º 3
0
 private static CardPickByPriority PurchaseOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Province),
                CardAcceptance.For(Cards.Gold),
                CardAcceptance.For(Cards.Silver)));
 }
Exemplo n.º 4
0
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.FishingVillage),
                CardAcceptance.For(Cards.Chapel, ShouldPlayChapel),
                CardAcceptance.For(Cards.PoorHouse)));
 }
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.FishingVillage),
                CardAcceptance.For(Cards.Lookout),
                CardAcceptance.For(Cards.JackOfAllTrades)));
 }
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Plaza),
                CardAcceptance.For(Cards.SpiceMerchant),
                CardAcceptance.For(Cards.Embassy)));
 }
        private static ICardPicker PurchaseOrder()
        {
            var highPriority = new CardPickByPriority(
                CardAcceptance.For(Cards.Province, gameState => gameState.Self.AvailableBuys >= 4 || CountAllOwned(Cards.Province, gameState) > 0),
                CardAcceptance.For(Cards.Duchy, gameState => CountAllOwned(Cards.Province, gameState) >= 3),
                CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 1));
            //CardAcceptance.For(Cards.Jester, gameState => CountAllOwned(Cards.Jester, gameState) == 0));  // jester actually hurts in a non mirror match

            /*//  Intuitive guess as to the right build order, not correct it seeems.
             * var buildOrder = new CardPickByBuildOrder(
             *  Cards.Armory,
             *  Cards.Silver,
             *  Cards.WanderingMinstrel,
             *  Cards.Watchtower,
             *  Cards.Rats,
             *  Cards.Watchtower);*/


            var buildOrder = new CardPickByBuildOrder(
                CardAcceptance.For(Cards.Armory),
                CardAcceptance.For(Cards.Watchtower),
                CardAcceptance.For(Cards.Rats),
                CardAcceptance.For(Cards.Watchtower));

            var lowPriority = new CardPickByPriority(
                CardAcceptance.For(Cards.Bridge, ShouldBuyBridge),
                CardAcceptance.For(Cards.WanderingMinstrel),
                CardAcceptance.For(Cards.Watchtower, gameState => CountAllOwned(Cards.Watchtower, gameState) < 3));

            return(new CardPickConcatenator(highPriority, buildOrder, lowPriority));
        }
 public static ICardPicker TrashOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Curse),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Copper)));
 }
 private static ICardPicker ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Caravan),
                CardAcceptance.For(Cards.Laboratory),
                CardAcceptance.For(Cards.Ambassador)));
 }
Exemplo n.º 10
0
        private static void BuildPurchaseOrder(ParameterBuilderAndRetreiver builder, Card[] cards)
        {
            var purchaseAcceptances = new List <CardAcceptance>();

            // do the end game
            purchaseAcceptances.Add(CardAcceptance.For(Cards.Province, gameState => Strategy.CountAllOwned(Cards.Gold, gameState) >= builder.Next(defaultValue: 2, defaultLowerBound: 0)));
            purchaseAcceptances.Add(CardAcceptance.For(Cards.Duchy, gameState => Strategy.CountOfPile(Cards.Province, gameState) <= builder.Next(defaultValue: 3, defaultLowerBound: 0)));
            purchaseAcceptances.Add(CardAcceptance.For(Cards.Estate, gameState => Strategy.CountOfPile(Cards.Province, gameState) <= builder.Next(defaultValue: 1, defaultLowerBound: 0)));
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Gold.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(CardAcceptance.For(card, builder.Next(defaultValue: 0)));
            }
            purchaseAcceptances.Add(CardAcceptance.For(Cards.Gold));
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Potion.DefaultCoinCost && c.DefaultCoinCost < Cards.Gold.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(CardAcceptance.For(card, builder.Next(defaultValue: 0)));
            }
            purchaseAcceptances.Add(CardAcceptance.For(Cards.Estate, gameState => Strategy.CountOfPile(Cards.Province, gameState) <= builder.Next(defaultValue: 2, defaultLowerBound: 0)));
            if (cards.Where(card => card.potionCost != 0).Any())
            {
                purchaseAcceptances.Add(CardAcceptance.For(Cards.Potion, builder.Next()));
            }
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Silver.DefaultCoinCost && c.DefaultCoinCost < Cards.Potion.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(CardAcceptance.For(card, builder.Next(defaultValue: 0)));
            }
            purchaseAcceptances.Add(CardAcceptance.For(Cards.Silver));
            foreach (Card card in cards.Where(c => c.DefaultCoinCost < Cards.Silver.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(CardAcceptance.For(card, builder.Next(defaultValue: 0)));
            }
            builder.purchaseOrder = new CardPickByPriority(purchaseAcceptances.ToArray());
        }
        private static ICardPicker PurchaseOrder()
        {
            var highPriority = new CardPickByPriority(
                CardAcceptance.For(Cards.Province, ShouldBuyProvinces),
                CardAcceptance.For(Cards.Duchy, gameState => CountAllOwned(Cards.Province, gameState) >= 3),
                CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 1),
                CardAcceptance.For(Cards.Salvager, gameState => CountAllOwned(Cards.Copper, gameState) >= 6 && CountAllOwned(Cards.Salvager, gameState) == 0),
                CardAcceptance.For(Cards.Lookout, gameState => CountAllOwned(Cards.Copper, gameState) >= 6 && CountAllOwned(Cards.Lookout, gameState) == 0),
                CardAcceptance.For(Cards.Silver, gameState => CountAllOwned(Cards.Silver, gameState) + CountAllOwned(Cards.Festival, gameState) < 2)
                );

            var buildOrder = new CardPickByBuildOrder(
                CardAcceptance.For(Cards.Festival),
                CardAcceptance.For(Cards.Library),
                CardAcceptance.For(Cards.Festival),
                CardAcceptance.For(Cards.Highway),
                CardAcceptance.For(Cards.Highway),
                CardAcceptance.For(Cards.Festival),
                CardAcceptance.For(Cards.Festival),
                CardAcceptance.For(Cards.Library),
                CardAcceptance.For(Cards.Festival)
                );

            var lowPriority = new CardPickByPriority(
                CardAcceptance.For(Cards.Highway));

            return(new CardPickConcatenator(highPriority, buildOrder, lowPriority));
        }
        private static ICardPicker PurchaseOrder(bool shouldApprentice)
        {
            var openning = new CardPickByPriority(
                CardAcceptance.For(Cards.IronWorks, 1),
                CardAcceptance.For(Cards.Chapel, 1));


            var ironworksGains = new CardPickForCondition(
                gameState => CardBeingPlayedIs(Cards.IronWorks, gameState),
                new CardPickByPriority(
                    CardAcceptance.For(Cards.GreatHall, gameState => !HasChainingDeck(gameState)),
                    CardAcceptance.For(Cards.WorkersVillage)
                    ));

            return(new CardPickConcatenator(
                       openning,
                       ironworksGains));

            /*
             * return new CardPickByPriority(
             *            CardAcceptance.For(Cards.IronWorks, 1),
             *            CardAcceptance.For(Cards.Chapel, 1),
             *            CardAcceptance.For(Cards.GreatHall, gameState => CardBeingPlayedIs(Cards.IronWorks, gameState) && !HasChainingDeck(gameState)),
             *            CardAcceptance.For(Cards.Peddler, 3),
             *            CardAcceptance.For(Cards.Militia, gameState => HasChainingDeck(gameState)),
             *            CardAcceptance.For(Cards.KingsCourt, gameState => HasChainingDeck(gameState) && CountAllOwned(Cards.KingsCourt, gameState) == 0),
             *            CardAcceptance.For(Cards.KingsCourt, gameState => HasChainingDeck(gameState) && CountAllOwned(Cards.KingsCourt, gameState) == 0),
             *            CardAcceptance.For(Cards.Peddler),
             *            CardAcceptance.For(Cards.WorkersVillage),
             *            CardAcceptance.For(Cards.Pawn),
             *            );*/
        }
Exemplo n.º 13
0
 private static CardPickByPriority ActionOrder(Card withCard)
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Rebuild, ShouldPlayRebuild),
                new CardAcceptance(withCard)
                ));
 }
 private static CardPickByPriority TrashOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Estate),
                CardAcceptance.For(Cards.Copper),
                CardAcceptance.For(Cards.Silver)));
 }
Exemplo n.º 15
0
 private static CardPickByPriority TrashOrderWithoutRemake()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Curse),
                CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) > 2),
                CardAcceptance.For(Cards.Copper)));
 }
Exemplo n.º 16
0
 private static ICardPicker GainOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Hermit, gameState => gameState.Self.ExpectedCoinValueAtEndOfTurn < 3),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Estate)));
 }
Exemplo n.º 17
0
        private static ICardPicker PurchaseOrder()
        {
            var highPriority = new CardPickByPriority(
                CardAcceptance.For(Cards.Embassy, gameState => CountAllOwned(Cards.Embassy, gameState) < 1),
                CardAcceptance.For(Cards.Duchy),
                CardAcceptance.For(Cards.Duke));

            var buildOrder = new CardPickByBuildOrder(
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Warehouse),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Warehouse),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Silver),
                CardAcceptance.For(Cards.Warehouse));

            var lowPriority = new CardPickByPriority(
                CardAcceptance.For(Cards.Silver));

            return(new CardPickConcatenator(highPriority, buildOrder, lowPriority));
        }
Exemplo n.º 18
0
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.GreatHall),
                CardAcceptance.For(Cards.Soothsayer),
                CardAcceptance.For(Cards.Remake, ShouldPlayRemake)));
 }
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Laboratory),
                CardAcceptance.For(Cards.SpiceMerchant, gameState => CountInHand(Cards.Copper, gameState) > 0),
                CardAcceptance.For(Cards.Warehouse)));
 }
 static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Mystic),
                CardAcceptance.For(Cards.Develop, gameState => CountOfPile(Cards.Province, gameState) > 6 && ShouldPlayDevelop(gameState)),
                CardAcceptance.For(Cards.Feast)));
 }
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Journeyman),
                CardAcceptance.For(Cards.Pillage)
                ));
 }
 private static CardPickByPriority TrashOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Graverobber),
                CardAcceptance.For(Cards.Journeyman)
                ));
 }
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Treasury),
                CardAcceptance.For(Cards.MerchantShip),
                CardAcceptance.For(Cards.Smithy)));
 }
Exemplo n.º 24
0
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.University),
                CardAcceptance.For(Cards.MarketSquare, gameState => CountInHand(Cards.Governor, gameState) == 0),
                CardAcceptance.For(Cards.Governor),
                CardAcceptance.For(Cards.Mountebank)));
 }
Exemplo n.º 25
0
 private static CardPickByPriority TrashOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Curse),
                CardAcceptance.For(Cards.Gold, gameState => CountOfPile(Cards.Province, gameState) <= 3),
                CardAcceptance.For(Cards.Estate),
                CardAcceptance.For(Cards.Copper)));
 }
 static CardPickByPriority TrashOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Estate, gameState => CountAllOwned(Cards.Province, gameState) == 0),
                CardAcceptance.For(Cards.Feast),
                CardAcceptance.For(Cards.Mystic),
                CardAcceptance.For(Cards.Copper)));
 }
 private static ICardPicker TrashOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Curse),
                CardAcceptance.For(Cards.Estate),
                CardAcceptance.For(Cards.Copper),
                CardAcceptance.For(Cards.Spoils)));
 }
Exemplo n.º 28
0
 private static ICardPicker ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Caravan),
                CardAcceptance.For(Cards.Apprentice),
                CardAcceptance.For(Cards.MerchantGuild),
                CardAcceptance.For(Cards.Ambassador)));
 }
Exemplo n.º 29
0
 private static CardPickByPriority PurchaseOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.Estate),
                // place remake in the buy order, even though it isn't bought during this part of the game.
                // It needs to be in the set of cards available for play.
                CardAcceptance.For(Cards.Remake)));
 }
Exemplo n.º 30
0
 private static CardPickByPriority ActionOrder()
 {
     return(new CardPickByPriority(
                CardAcceptance.For(Cards.WanderingMinstrel),
                CardAcceptance.For(Cards.ScryingPool),
                CardAcceptance.For(Cards.Festival),
                CardAcceptance.For(Cards.CrossRoads)));
 }