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()); } }
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(); }
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(); } }