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