static void Main(string[] args) { List <Hero> heroes = new List <Hero>(); int n = int.Parse(Console.ReadLine()); int hpMax = 100; int mpMax = 200; for (int i = 0; i < n; i++) { string[] input = Console.ReadLine().Split(" "); string heroName = input[0]; int hp = int.Parse(input[1]); int mp = int.Parse(input[2]); Hero hero = new Hero { Name = input[0], Hp = hp > hpMax ? hpMax : hp, Mp = mp > mpMax ? mpMax : mp }; heroes.Add(hero); } string command = Console.ReadLine(); while (command != "End") { string[] cmdArg = command.Split(" - "); string cmd = cmdArg[0]; string heroName = cmdArg[1]; Hero hero = heroes.FirstOrDefault(h => h.Name == heroName); if (cmd == "CastSpell") { int MpNeeded = int.Parse(cmdArg[2]); string spellName = cmdArg[3]; if (hero.Mp >= MpNeeded) { hero.Mp -= MpNeeded; Console.WriteLine($"{hero.Name} has successfully cast {spellName} and now has {hero.Mp} MP!"); } else { Console.WriteLine($"{hero.Name} does not have enough MP to cast {spellName}!"); } } else if (cmd == "TakeDamage") { int damage = int.Parse(cmdArg[2]); string attacker = cmdArg[3]; if (hero.Hp > damage) { hero.Hp -= damage; Console.WriteLine($"{hero.Name} was hit for {damage} HP by {attacker} and now has {hero.Hp} HP left!"); } else { Console.WriteLine($"{hero.Name} has been killed by {attacker}!"); heroes.Remove(hero); } } else if (cmd == "Recharge") { int amount = int.Parse(cmdArg[2]); if (hero.Mp + amount > mpMax) { amount = mpMax - hero.Mp; hero.Mp = mpMax; } else { hero.Mp += amount; } Console.WriteLine($"{hero.Name} recharged for {amount} MP!"); } else if (cmd == "Heal") { int amount = int.Parse(cmdArg[2]); if (hero.Hp + amount > hpMax) { amount = hpMax - hero.Hp; hero.Hp = hpMax; } else { hero.Hp += amount; } Console.WriteLine($"{hero.Name} healed for {amount} HP!"); } command = Console.ReadLine(); } foreach (var hero in heroes.OrderByDescending(h => h.Hp).ThenBy(n => n.Name)) { Console.WriteLine(hero); } }
static public void ChoiceInTown(Hero hero, Town town) { Program.code = 0; Program.menuItem = 1; Program.cursorPosition[0] = '>'; do { Console.Clear(); hero.PrintInfo(); Console.WriteLine("\n Вы находитесь в городе " + town.GetTownName); Console.Write("\n{0} Торговец\n{1} Библиотека\n{2} Выйти на охоту\n{3} Отправиться в другой город", Program.cursorPosition[0], Program.cursorPosition[1], Program.cursorPosition[2], Program.cursorPosition[3]); Program.code = Program.Cursor(4); } while (Program.code == 0); if (Program.code == 1) { Shop.PrintShop(hero, town); } else if (Program.code == 2) { Console.Clear(); Console.WriteLine("\n Библиотека"); Console.WriteLine("\n\n Тварь DMG [ ] HP [ ] GLD [ ]\n Можно встретить на болоте и в лесу"); Console.WriteLine(" Способность: "); Console.WriteLine("============================================================"); Console.WriteLine("\n Догнивающий DMG [ ] HP [ ] GLD [ ]\n Втречаются в лесу и на пепелище"); Console.WriteLine(" Мерзкое существо с горящими глазами, из пасти стекает черная субстанция"); Console.WriteLine(" Способность: Отравление"); Console.WriteLine("============================================================"); Console.WriteLine("\n Истлевший DMG [ ] HP [ ] GLD [ ]\n Обитает на пепелище"); Console.WriteLine(" Способность: Воспламенение"); Console.WriteLine("============================================================"); Console.WriteLine("\n Пожиратель DMG [ ] HP [ ] GLD [ ]\n Втречаются в лесу и на пепелище"); Console.WriteLine(" Способности: Плевок, "); Console.WriteLine("============================================================"); Console.ReadLine(); Town.ChoiceInTown(hero, town); } else if (Program.code == 3) { Program.code = 0; Program.menuItem = 1; Program.cursorPosition[0] = '>'; do { Console.Clear(); hero.PrintInfo(); Console.WriteLine("\n Выберете локацию:"); Console.Write("\n{0} Болото\n{1} Пепелище\n{2} Лес\n{3} Назад", Program.cursorPosition[0], Program.cursorPosition[1], Program.cursorPosition[2], Program.cursorPosition[3]); Program.code = Program.Cursor(4); } while (Program.code == 0); if (Program.code == 1) { Location location = new Location(LocationType.Swamp); location.Battle(hero, town, location); } else if (Program.code == 2) { Location location = new Location(LocationType.Pepel); location.Battle(hero, town, location); } else if (Program.code == 3) { Location location = new Location(LocationType.Forest); location.Battle(hero, town, location); } else if (Program.code == 4) { Town.ChoiceInTown(hero, town); } } else if (Program.code == 4) { Program.code = 0; Program.menuItem = 1; Program.cursorPosition[0] = '>'; do { Console.Clear(); Console.WriteLine("\n Отправиться в\n"); Console.Write("\n{0} Денберг\n{1} Корберг", Program.cursorPosition[0], Program.cursorPosition[1]); Program.code = Program.Cursor(2); } while (Program.code == 0); if (Program.code == 1) { Town town1 = new Town(TownType.Denberg); Town.ChoiceInTown(hero, town1); } else if (Program.code == 2) { Town town1 = new Town(TownType.Qorberg); Town.ChoiceInTown(hero, town1); } } }