Next() public method

public Next ( int defaultValue = 1, int defaultLowerBound = 1, int defaultUpperBound = int.MaxValue ) : int
defaultValue int
defaultLowerBound int
defaultUpperBound int
return int
Exemplo n.º 1
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());
        }
Exemplo n.º 2
0
        private static void BuildPurchaseOrder(ParameterBuilderAndRetreiver builder, Card[] cards)
        {
            var purchaseAcceptances = new List <CardAcceptanceDescription>();

            // do the end game
            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Province, CountSource.CountAllOwned, Cards.Gold, Comparison.GreaterThan, builder.Next(defaultValue: 2, defaultLowerBound: 0)));
            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Duchy, CountSource.CountOfPile, Cards.Province, Comparison.LessThanEqual, builder.Next(defaultValue: 3, defaultLowerBound: 0)));
            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Estate, CountSource.CountOfPile, Cards.Province, Comparison.LessThanEqual, builder.Next(defaultValue: 1, defaultLowerBound: 0)));

            // add cards costing more than gold
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Gold.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(card, CountSource.CountAllOwned, card, Comparison.LessThanEqual, builder.Next(defaultValue: 0, defaultLowerBound: 0)));
            }

            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Gold));

            // add cards costing more than potion and less than gold
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Potion.DefaultCoinCost && c.DefaultCoinCost < Cards.Gold.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(card, CountSource.CountAllOwned, card, Comparison.LessThanEqual, builder.Next(defaultValue: 0, defaultLowerBound: 0)));
            }

            if (cards.Where(card => card.potionCost != 0).Any())
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Potion, CountSource.CountAllOwned, Cards.Potion, Comparison.LessThanEqual, builder.Next(defaultValue: 1, defaultLowerBound: 0)));
            }

            // add cards costing mor than silver
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Silver.DefaultCoinCost && c.DefaultCoinCost < Cards.Potion.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(card, CountSource.CountAllOwned, card, Comparison.LessThanEqual, builder.Next(defaultValue: 0, defaultLowerBound: 0)));
            }

            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Silver));

            // cards costing less than silver
            foreach (Card card in cards.Where(c => c.DefaultCoinCost < Cards.Silver.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(card, CountSource.CountAllOwned, card, Comparison.LessThanEqual, builder.Next(defaultValue: 0, defaultLowerBound: 0)));
            }

            builder.description = new PickByPriorityDescription(purchaseAcceptances.ToArray());
        }
        private static void BuildPurchaseOrder(ParameterBuilderAndRetreiver builder, Card[] cards)
        {
            var purchaseAcceptances = new List<CardAcceptanceDescription>();

            // do the end game
            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Province, CountSource.CountAllOwned, Cards.Gold, Comparison.GreaterThan, builder.Next(defaultValue:2, defaultLowerBound:0)));
            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Duchy, CountSource.CountOfPile, Cards.Province, Comparison.LessThanEqual, builder.Next(defaultValue: 3, defaultLowerBound: 0)));
            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Estate, CountSource.CountOfPile, Cards.Province, Comparison.LessThanEqual, builder.Next(defaultValue: 1, defaultLowerBound: 0)));

            // add cards costing more than gold
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Gold.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(card, CountSource.CountAllOwned, card, Comparison.LessThanEqual, builder.Next(defaultValue: 0, defaultLowerBound: 0)));
            }

            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Gold));

            // add cards costing more than potion and less than gold
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Potion.DefaultCoinCost && c.DefaultCoinCost < Cards.Gold.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(card, CountSource.CountAllOwned, card, Comparison.LessThanEqual, builder.Next(defaultValue: 0, defaultLowerBound: 0)));
            }

            if (cards.Where(card => card.potionCost != 0).Any())
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Potion, CountSource.CountAllOwned, Cards.Potion, Comparison.LessThanEqual, builder.Next(defaultValue: 1, defaultLowerBound: 0)));
            }

            // add cards costing mor than silver
            foreach (Card card in cards.Where(c => c.DefaultCoinCost >= Cards.Silver.DefaultCoinCost && c.DefaultCoinCost < Cards.Potion.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(card, CountSource.CountAllOwned, card, Comparison.LessThanEqual, builder.Next(defaultValue: 0, defaultLowerBound: 0)));
            }

            purchaseAcceptances.Add(new CardAcceptanceDescription(Cards.Silver));

            // cards costing less than silver
            foreach (Card card in cards.Where(c => c.DefaultCoinCost < Cards.Silver.DefaultCoinCost).OrderBy(c => c.DefaultCoinCost))
            {
                purchaseAcceptances.Add(new CardAcceptanceDescription(card, CountSource.CountAllOwned, card, Comparison.LessThanEqual, builder.Next(defaultValue: 0, defaultLowerBound: 0)));
            }

            builder.description = new PickByPriorityDescription(purchaseAcceptances.ToArray());
        }