Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
        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();
        }