using System;
namespace BERKYT
{
class Program
{
static void Main(string[] args)
{
Tools tools = new Tools();
bool checkout = true;
while (checkout)
{
Console.WriteLine("Что Вы хотите сделать?" + "\n");
Console.WriteLine("1 - Узнать информацию о каждом бойце.");
Console.WriteLine("2 - Узнать информацию обо всей армии.");
Console.WriteLine("3 - Атаковать.");
Console.WriteLine("4 - Выйти из игры." + "\n");
string entertextuser = Console.ReadLine();
switch (entertextuser)
{
case "1":
tools.PrintInfoAboutEveryUnit();
break;
case "2":
tools.PrintInfoAboutAllArmy();
break;
case "3":
Console.Write("\n" + "Введите количество атак: ");
string s_count = Console.ReadLine();
try
{
int count = Convert.ToInt32(s_count);
tools.Attack(count);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
break;
case "4":
checkout = false;
break;
}
}
}
}
#region Базовый класс и его наследники.
class Units
{
public int Health { get; set; }
public int Damage { get; set; }
public string Name { get; set; }
public virtual void PrintInfo()
{
if (Health <= 0)
Console.WriteLine("Юнит " + Name + " мертв." + "\n" + "\n");
else
Console.WriteLine("Имя: " + Name + " Здоровье: " + Health + " Урон: " + Damage + " ");
}
public Units(int health, int damage, string name)
{
Health = health;
Damage = damage;
Name = name;
}
}
class Mehs : Units
{
public string TypeOfAmmunition { get; set; }
public string Curse { get; set; }
public override void PrintInfo()
{
base.PrintInfo();
if (Health <= 0)
return;
Console.Write("Тип боеприпаса: " + TypeOfAmmunition + " Проклятье: " + Curse + "\n" + "\n");
}
public Mehs(int health, int damage, string name, string typeOfAmmunition, string curse) : base(health, damage, name)
{
TypeOfAmmunition = typeOfAmmunition;
Curse = curse;
}
}
class Animal : Units
{
public int Speed { get; set; }
public override void PrintInfo()
{
base.PrintInfo();
if (Health <= 0)
return;
Console.Write("Скорость: " + Speed + "\n" + "\n");
}
public Animal(int health, int damage, int speed, string name) : base(health, damage, name)
{
Speed = speed;
}
}
class Soldier : Units
{
public int Armor { get; set; }
public string NameOfArmor { get; set; }
public override void PrintInfo()
{
base.PrintInfo();
if (Health <= 0)
return;
Console.Write("Броня: " + Armor + " Название брони: " + NameOfArmor + "\n" + "\n");
}
public Soldier(int armor, int health, int damage, string name, string nameofarmor) : base(health, damage, name)
{
Armor = armor;
NameOfArmor = nameofarmor;
}
}
class Rider : Units
{
public int Armor { get; set; }
public int Speed { get; set; }
public string NameOfArmor { get; set; }
public override void PrintInfo()
{
base.PrintInfo();
if (Health <= 0)
return;
Console.Write("Броня: " + Armor + " Скорость: " + Speed + " Название брони: " + NameOfArmor + "\n" + "\n");
}
public Rider(int armor, int health, int damage, int speed, string name, string nameofarmor) : base(health, damage, name)
{
Armor = armor;
NameOfArmor = nameofarmor;
Speed = speed;
}
}
#endregion
class Tools
{
#region Конструктор класса, поля и массивы классов, а также статистика.
int alldamage = 0, allhealth = 0, allarmor = 0, countarmy = 6;
int[] arrayhealth = new int[6];
Mehs[] mehs = new Mehs[3];
Rider riders = new Rider(20, 97, 19, 17, "Rider", "Leather Armor");
Animal wolf = new Animal(28, 5, 17, "Wolf");
Soldier druid = new Soldier(20, 69, 14, "Druid", "Leather Armor");
public Tools()
{
mehs[0] = new Mehs(875, 15, "Catapult", "Bolt", "Sonic Draconic Bite");
mehs[1] = new Mehs(716, 15, "Catapult", "Bolt", "Shrieking Ancestral Surge");
mehs[2] = new Mehs(876, 26, "Catapult", "Bullet", "Astral Sonic Blast");
allarmor += druid.Armor + riders.Armor;
arrayhealth[0] = mehs[0].Health;
arrayhealth[1] = mehs[1].Health;
arrayhealth[2] = mehs[2].Health;
arrayhealth[3] = riders.Health;
arrayhealth[4] = wolf.Health;
arrayhealth[5] = druid.Health;
}
public void Stats()
{
alldamage = 0; allhealth = 0;
for (int i = 0; i < 3; i++)
{
alldamage += mehs[i].Damage;
allhealth += mehs[i].Health;
if (i == 1)
{
alldamage += wolf.Damage + druid.Damage + riders.Damage;
allhealth += wolf.Health + druid.Health + riders.Health;
}
}
}
#endregion
#region Методы вывода на консоль.
public void PrintInfoAboutEveryUnit()
{
for (int i = 0; i < 3; i++)
{
mehs[i].PrintInfo();
if (i == 2)
{
riders.PrintInfo();
wolf.PrintInfo();
druid.PrintInfo();
}
}
}
public void PrintInfoAboutAllArmy()
{
Stats();
if (allhealth == 0)
alldamage = 0;
Console.WriteLine("Общий урон: " + alldamage + " Общая защита: " + allarmor + " Общее здоровье: " + allhealth + " Общая численность: " + countarmy + "\n");
}
#endregion
public void Attack(int count)
{
if (countarmy > 0)
{
for (int j = 0; j < count; j++)
{
Stats();
for (int i = 0; i < 6; i++)
{
if (arrayhealth[i] <= 0)
continue;
allarmor -= alldamage;
if (allarmor < 0)
{
alldamage = allarmor * -1;
allarmor = 0;
}
else if (allarmor > 0)
return;
arrayhealth[i] -= alldamage;
if (arrayhealth[i] <= 0)
{
alldamage = arrayhealth[i] * -1;
arrayhealth[i] = 0;
countarmy--;
if (arrayhealth[i] < 0)
alldamage = arrayhealth[i] * -1;
}
else if (arrayhealth[i] > 0)
break;
}
}
mehs[0].Health = arrayhealth[0];
mehs[1].Health = arrayhealth[1];
mehs[2].Health = arrayhealth[2];
riders.Health = arrayhealth[3];
wolf.Health = arrayhealth[4];
druid.Health = arrayhealth[5];
}
else
Console.WriteLine("\n" + "Вы уничтожили противника!"+ "\n");
}
}
}