private static BaseHero GetHero(string heroName, string heroType, HeroFactory factory)
        {
            switch (heroType.ToLower())
            {
            case "druid":
                factory = new DruidFactory(heroName);
                break;

            case "paladin":
                factory = new PaladinFactory(heroName);
                break;

            case "rogue":
                factory = new RogueFactory(heroName);
                break;

            case "warrior":
                factory = new WarriorFactory(heroName);
                break;

            default:
                throw new InvalidOperationException("Invalid hero!");
            }

            return(factory.CreateHero());
        }
Пример #2
0
        public void Run()
        {
            List <BaseHero> raidGroup = new List <BaseHero>();
            HeroFactory     factory   = null;

            int n = int.Parse(Console.ReadLine());

            while (raidGroup.Count < n)
            {
                string name      = Console.ReadLine();
                string type      = Console.ReadLine();
                bool   validHero = true;
                switch (type)
                {
                case "Paladin":
                    factory = new PaladinFactory(name, 100);
                    break;

                case "Druid":
                    factory = new DruidFactory(name, 80);
                    break;

                case "Warrior":
                    factory = new WarriorFactory(name, 100);
                    break;

                case "Rogue":
                    factory = new RogueFactory(name, 80);
                    break;

                default:
                    Console.WriteLine("Invalid hero!");
                    validHero = false;
                    break;
                }
                if (validHero)
                {
                    raidGroup.Add(factory.GetHero());
                }
            }
            int sumPower = 0;

            foreach (var hero in raidGroup)
            {
                Console.WriteLine(hero.CastAbility());
                sumPower += hero.Power;
            }
            int boss = int.Parse(Console.ReadLine());

            if (boss > sumPower)
            {
                Console.WriteLine("Defeat...");
            }
            else
            {
                Console.WriteLine("Victory!");
            }
        }
Пример #3
0
        public static void Main(string[] args)
        {
            IReader      reader      = new Reader();
            IWriter      writer      = new Writer();
            IHeroFactory heroFactory = new HeroFactory();

            Engine engine = new Engine(reader, writer, heroFactory);

            engine.Proceed();
        }
Пример #4
0
        static void Main(string[] args)
        {
            var heroes = new List <BaseHero>();
            var n      = int.Parse(Console.ReadLine());

            for (var i = 0; i < n; i++)
            {
                var name = Console.ReadLine();
                var type = Console.ReadLine();

                HeroFactory factory = null;
                switch (type)
                {
                case "Druid":
                    factory = new DruidFactory(name);
                    break;

                case "Paladin":
                    factory = new PaladinFactory(name);
                    break;

                case "Rogue":
                    factory = new RogueFactory(name);
                    break;

                case "Warrior":
                    factory = new WarriorFactory(name);
                    break;

                default:
                    Console.WriteLine("Invalid hero!");
                    i--;
                    continue;
                }

                var hero = factory.MakeHero();
                heroes.Add(hero);
            }

            var bossPower = int.Parse(Console.ReadLine());

            foreach (var hero in heroes)
            {
                Console.WriteLine(hero.CastAbility());
            }
            var totalPower = heroes.Sum(hero => hero.Power);

            Console.WriteLine(totalPower >= bossPower ? "Victory!" : "Defeat...");
        }
Пример #5
0
        public static void Main(string[] args)
        {
            List <BaseHero> heroes = new List <BaseHero>();

            int numberOfHeroes = int.Parse(Console.ReadLine());

            while (heroes.Count < numberOfHeroes)
            {
                string heroName = Console.ReadLine();
                string heroType = Console.ReadLine();

                try
                {
                    BaseHero newHero = HeroFactory.Build(heroType, heroName);
                    heroes.Add(newHero);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    continue;
                }
            }

            int bossPower   = int.Parse(Console.ReadLine());
            int heroesPower = 0;

            if (0 < heroes.Count)
            {
                foreach (var hero in heroes)
                {
                    heroesPower += hero.Power;
                    Console.WriteLine(hero.CastAbility());
                }
            }

            if (bossPower <= heroesPower)
            {
                Console.WriteLine("Victory!");
            }
            else
            {
                Console.WriteLine("Defeat...");
            }
        }
        public static void Main()
        {
            List <BaseHero> raidGroup = new List <BaseHero>();
            HeroFactory     factory   = null;

            int neededHeroes       = int.Parse(Console.ReadLine());
            int countOfValidHeroes = 0;

            while (neededHeroes != countOfValidHeroes)
            {
                string heroName = Console.ReadLine();
                string heroType = Console.ReadLine();

                try
                {
                    BaseHero hero = GetHero(heroName, heroType, factory);
                    raidGroup.Add(hero);

                    countOfValidHeroes++;
                }
                catch (InvalidOperationException ioe)
                {
                    Console.WriteLine(ioe.Message);
                }
            }

            int bossPower = int.Parse(Console.ReadLine());

            PrintAbilities(raidGroup);

            int totalDamageOfAllHeroes = SumTotalDamage(raidGroup);

            if (totalDamageOfAllHeroes >= bossPower)
            {
                Console.WriteLine("Victory!");
            }
            else
            {
                Console.WriteLine("Defeat...");
            }
        }
Пример #7
0
        public static void Main()
        {
            var             heroFactory = new HeroFactory();
            List <BaseHero> heroes      = new List <BaseHero>();

            int N = int.Parse(Console.ReadLine());

            for (int i = 0; i < N; i++)
            {
                string heroName = Console.ReadLine();
                string heroType = Console.ReadLine();

                try
                {
                    var hero = heroFactory.GetHero(heroType, heroName);
                    heroes.Add(hero);
                }
                catch (ArgumentException ex)
                {
                    Console.WriteLine(ex.Message);
                    i--;
                }
            }

            heroes.ForEach(h => Console.WriteLine(h.CastAbility()));

            int bossPower  = int.Parse(Console.ReadLine());
            int totalPower = heroes.Sum(h => h.Power);

            if (totalPower >= bossPower)
            {
                Console.WriteLine("Victory!");
            }
            else
            {
                Console.WriteLine("Defeat...");
            }
        }