public WizardSim(WizardSim w) { this.pMana = w.pMana; this.pHit = w.pHit; this.bDamage = w.bDamage; this.bHit = w.bHit; this.pArmor = w.pArmor; this.shieldTimer = w.shieldTimer; this.poisonTimer = w.poisonTimer; this.rechargeTimer = w.rechargeTimer; this.manaSpent = w.manaSpent; }
static void Main(string[] args) { Queue <WizardSim> q = new Queue <WizardSim>(); q.Enqueue(new WizardSim(500, 50, 10, 71, 0, 0, 0, 0, 0)); int minToWin = int.MaxValue; while (q.Count() > 0) { WizardSim state = q.Dequeue(); if (state.pMana >= 53) { WizardSim copy = new WizardSim(state); copy.playerTurn(1); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else { copy.bossTurn(); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else if (!copy.bossWon()) { q.Enqueue(copy); } } } if (state.pMana >= 73) { WizardSim copy = new WizardSim(state); copy.playerTurn(2); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else { copy.bossTurn(); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else if (!copy.bossWon()) { q.Enqueue(copy); } } } if (state.pMana >= 113 && state.shieldTimer <= 1) { WizardSim copy = new WizardSim(state); copy.playerTurn(3); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else { copy.bossTurn(); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else if (!copy.bossWon()) { q.Enqueue(copy); } } } if (state.pMana >= 173 && state.poisonTimer <= 1) { WizardSim copy = new WizardSim(state); copy.playerTurn(4); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else { copy.bossTurn(); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else if (!copy.bossWon()) { q.Enqueue(copy); } } } if (state.pMana >= 229 && state.rechargeTimer <= 1) { WizardSim copy = new WizardSim(state); copy.playerTurn(5); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else { copy.bossTurn(); if (copy.playerWon()) { if (copy.manaSpent < minToWin) { minToWin = copy.manaSpent; } } else if (!copy.bossWon()) { q.Enqueue(copy); } } } } Console.WriteLine(minToWin); Console.Read(); }