Exemplo n.º 1
0
        public void FindCandidates(int maxVariations, int depth, int vaultPos, string output = null)
        {
            Random random     = new Random();
            int    variations = 0;

            this.candidates = new List <Player>();
            List <Card> varDeck;

            if (vaults != null && vaults.Count > vaultPos)
            {
                this.cardVault = vaults[vaultPos].Select(x => x.Clone()).ToList();
            }

            vaults = new List <List <Card> >();

            attacker.Init();
            varDeck = attacker.Deck.Select(x => x.Clone()).OrderBy(x => x.Id).ToList();

            candidates.Add(attacker);
            vaults.Add(this.cardVault.Select(x => x.Clone()).OrderBy(x => x.Id).ToList());

            while (candidates.Count < depth)
            {
                variations = random.Next(1, maxVariations + 1);
                int posIn, posOut;

                for (int i = 0; i < variations; i++)
                {
                    posIn  = random.Next(cardVault.Count);
                    posOut = random.Next(attacker.Deck.Count);

                    varDeck.Add(cardVault[posIn].Clone());
                    cardVault.Add(varDeck[posOut].Clone());

                    cardVault.RemoveAt(posIn);
                    varDeck.RemoveAt(posOut);

                    cardVault = cardVault.OrderBy(X => X.Id).ToList();
                    varDeck   = varDeck.OrderBy(X => X.Id).ToList();
                }

                candidates.Add(new Player(--idCounter, "Samael", varDeck));
                candidates.Add(new Player(--idCounter, "Groc", varDeck));
                candidates.Add(new Player(--idCounter, "Lich", varDeck));

                vaults.Add(cardVault.Select(x => x.Clone()).ToList());
                vaults.Add(cardVault.Select(x => x.Clone()).ToList());
                vaults.Add(cardVault.Select(x => x.Clone()).ToList());
            }
        }
Exemplo n.º 2
0
        public DeckFinder(Game game, Player originalPlayer, List<Player> testOponents, List<Card> inventory, int repeticiones = 0)
        {
            this.simulator = game;

            this.attacker = originalPlayer;
            this.oponents = testOponents;
            this.cardVault = inventory;

            if (repeticiones > 0) repeatCombat = repeticiones;

            attacker.Init();
            this.baseDeck = attacker.Deck.OrderBy(x=>x.Id).ToList();

            if (inventory != null) this.cardVault = inventory.OrderBy(X => X.Id).ToList();
        }
Exemplo n.º 3
0
        public DeckFinder(Game game, Player originalPlayer, List <Player> testOponents, List <Card> inventory, int repeticiones = 0)
        {
            this.simulator = game;

            this.attacker  = originalPlayer;
            this.oponents  = testOponents;
            this.cardVault = inventory;

            if (repeticiones > 0)
            {
                repeatCombat = repeticiones;
            }

            attacker.Init();
            this.baseDeck = attacker.Deck.OrderBy(x => x.Id).ToList();

            if (inventory != null)
            {
                this.cardVault = inventory.OrderBy(X => X.Id).ToList();
            }
        }