CCCPaste

9c50b039246b8

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()
        {
            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();
            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();
            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();
            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();
            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, "Наез=Druid Жив = Wolf", "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 < 2; i++)
            {
                mehs[i].PrintInfo();
                if (i == 1)
                {
                    wolf.PrintInfo();
                    druid.PrintInfo();
                    riders.PrintInfo();
                }
            }
        }

        public void PrintInfoAboutAllArmy()
        {
            Stats();
            Console.WriteLine("Общий урон: " + alldamage + " Общая защита: " + allarmor + " Общее здоровье: " + allhealth + " Общая численность: " + countarmy + "\n");
        }

        #endregion

        public void Attack(int count)
        {
            if (countarmy > 0)
            {
                for (int j = 0; j < count; j++)
                {
                    for (int i = 0; i < 6; i++)
                    {
                        Stats();

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