Присваивание массива - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Я новичок. Я пока учу переменные и массивы. Я люблю компьютерные игры и благодаря им я пытаюсь воссоздать некое подобие игры в коде C#. Начал с самого простого юнита его здоровья и урона. Вначале у меня получилось создать здоровье и урон. А потом мне понадобилось сделать так, чтобы юниты могли создаваться с уже готовыми характеристиками. Подскажите пожалуйста, как можно написать этот код по другому - более удобно чтоли:
            Random random = new Random();
            
            const int baseIndex = 0;
            const int limitUnits = 10000000;
 
            int count = 0;
            int a = 0; // Счётчик
 
            int[] unit = new int[3]; // Количество характеристик у юнита.
            int[] health = new int[limitUnits]; // Индекс 0 отвечает за индекс этой характеристики у юнита. Индекс 1 отвечает за значение этой характеристики у юнита.
            int[] damage = new int[limitUnits];
            int[] unitsCount = new int[limitUnits];
 
            Console.WriteLine("==========");
 
            do
            {
                count++;
 
                unitsCount[baseIndex] = 0;
                unitsCount[count] = count;
 
                health[baseIndex] = 1; // Отвечает за индекс характеристики у юнита.
                health[count] = random.Next(2, 11) * 100; // Значение характеристики юнита.
 
                damage[baseIndex] = 2;
                damage[count] = random.Next(1, 11) * 10 + 100;
 
                unit[unitsCount[baseIndex]] = unitsCount[count];
                unit[health[baseIndex]] = health[count]; // Присваивание значения характеристики юнита.
                unit[damage[baseIndex]] = damage[count];
 
                Console.WriteLine();
                Console.WriteLine("Номер юнита = {0}", unit[unitsCount[baseIndex]]);
                Console.WriteLine("Здоровье юнита {0} = {1}", unit[unitsCount[baseIndex]], unit[health[baseIndex]]);
                Console.WriteLine("Урон юнита {0} = {1}", unit[unitsCount[baseIndex]], unit[damage[baseIndex]]);
                Console.WriteLine();
                Console.WriteLine("==========");
 
                a++;
 
            } while (Console.ReadKey().Key == ConsoleKey.Enter && a < unitsCount.Length - 1);
 
            Console.WriteLine("Юниты закончились!");
 
            Console.ReadKey();

Решение задачи: «Присваивание массива»

textual
Листинг программы
    class MyUnit
    {
        private String name; // Закрытое свойство имя юнита (другой юнит и другие классы не могут
                             // изменять его напрямую)
        public String Name   // Акцессор - чтобы контролировать все обращения к свойству
        {
            set{name = value;}
            get{return name;}
        }
        
        private int health; // Закрытое свойство здоровье
        public int Health   // Акцессор - чтобы контролировать все обращения к свойству
        {
            set { health = value; }
            get { return health; }
        }
 
        private int attackPower; // Закрытое свойство сила атаки
        public int AttackPower   // Акцессор - чтобы контролировать все обращения к свойству
        {
            set { attackPower = value; }
            get { return attackPower; }
        }
 
        private bool isDeath; // Закрытое свойство признак смерти 
        public bool IsDeath   // Акцессор - чтобы контролировать все обращения к свойству
        {
            set { isDeath = value; }
            get { return isDeath; }
        }
 
 
        // Конструктор класса вызывается один раз для каждого экземпляра при создании нового юнита
        // с одним обязательным аргументом - Name и двумя аргументами по умолчанию
        // если при создании нового юнита их не указывать то они будут равны 100 и 5 соответственно. 
        public MyUnit(String Name, int Health = 100, int AttackPower = 5)
        {
            this.Name = Name;
            this.Health = Health;
            this.AttackPower = AttackPower;
            this.IsDeath = false;
 
            Console.Write("Появился юнит " + Name + " его здоровье: " + Health +" единиц а сила удара: " + AttackPower + " единиц\r\n");
 
        }
 
        // Открытый метод класса - нанести удар по цели которая должна принадлежать к классу MyUnit
        public void Hit(MyUnit Target)
        {
            if (!Target.IsDeath)
            {
                if (Health > 0)
                {
                    Console.Write("Юнит " + Name + " наносит удар по юниту " + Target.Name + "\r\n");
 
                    // Здесь вызывается метод принятого экземпляра, а аргументом является свойство
                    // этого экземпляра (this)
                    Target.MakeDamage(this.AttackPower); //this можно не писать это для наглядности
                }
                else
                {
                    Console.Write("Юнит " + Name + " не может наносить удары потому чо он погиб.\r\n");
                }
            }
        }
 
        // Открытый метод класса - получить урон
        public void MakeDamage(int DamagePower)
        {
            if (Health > 0)
            {
                if (DamagePower >= Health)
                {
                    Health = 0;
                    IsDeath = false;
                    Console.Write("Юнит " + Name + " получает смертельный урон.\r\n");
                }
                else
                {
                    Health = Health - DamagePower;
                    Console.Write("Юнит " + Name + " получает урон " + DamagePower.ToString() + " единиц.\r\n");
                    Console.Write("Юнит " + Name + " имеет " + Health + " единиц здоровья.\r\n");
                }
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы