Не работает случайное число - C#

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

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

Привет! Взял шаблон для класса битвы двух юнитов из этой темы: Присваивание массива. Добавил случайное число в параметры юнитов, но оно добавляется сразу двум юнитам, а не каждому своё. Помогите пожалуйста, я не понимаю почему так происходит. Кстати, Я как то сделал и было нормально, а теперь нет.
 
       Random random = new Random();
        public Units(string Name, int Health = 100, int Damage = 5)
        {
 
            Health = random.Next(1, 12) * 10 + 90;
            Damage = random.Next(5, 31);
 
            this.Name = Name;
            this.Health = Health;
            this.Damage = Damage;
            this.UnitDead = false;
 
            Console.WriteLine("Появился юнит: {0}. Его здоровье: {1}. Его урон: {2}.", Name, Health, Damage);
        }
Вот весь код, если нужно.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Battle
{
    class Units
    {
        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 damage;
        public int Damage
        {
            set { damage = value; }
            get { return damage; }
        }
 
        private bool unitDead;
        public bool UnitDead
        {
            set { unitDead = value; }
            get { return unitDead; }
        }
 
        Random random = new Random();
        public Units(string Name, int Health = 100, int Damage = 5)
        {
 
            Health = random.Next(1, 12) * 10 + 90;
            Damage = random.Next(5, 31);
 
            this.Name = Name;
            this.Health = Health;
            this.Damage = Damage;
            this.UnitDead = false;
 
            Console.WriteLine("Появился юнит: {0}. Его здоровье: {1}. Его урон: {2}.", Name, Health, Damage);
        }
 
        public void Hit(int Damage)
        {
            if (Health > 0)
            {
                if (Damage >= Health)
                {
                    Health = 0;
                    UnitDead = false;
                    Console.WriteLine("Юнит {0} получает смертельный урон.\n", Name);
                }
                else
                {
                    Health = Health - Damage;
                    Console.WriteLine("Юнит {0} получает {1} урона.", Name, Damage.ToString());
                    Console.WriteLine("У юнита {0} осталось {1} здоровья.", Name, Health);
                }
            }
        }
 
        public void Attack(Units Target)
        {
            Console.WriteLine();
 
            if (!Target.UnitDead)
            {
                if (Health > 0)
                {
                    Console.WriteLine("Юнит {0} наносит удар по юниту {1}.\n", Name, Target.Name);
                    Target.Hit(this.Damage); 
                }
                else
                {
                    Console.WriteLine("Юнит {0} не может атаковать, потому что он погиб.\n", Name);
                }
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Battle
{
    class Program
    {
        static void Main()
        {
            Units Footman = new Units("Footman");
            Units Grunt = new Units("Grunt");
 
            Footman.Attack(Grunt);
            Grunt.Attack(Footman);
 
            Console.ReadKey();
        }
    }
}

Решение задачи: «Не работает случайное число»

textual
Листинг программы
class Footman : Units
{
    public Footman(string name)
        : base(name)
    {
        this.Health = 100;
        this.Damage = 10;
        Console.WriteLine("Появился юнит: {0}. Его здоровье: {1}. Его урон: {2}.", Name, Health, Damage);
    }
}
 
class Grunt : Units
{
    public Grunt(string name)
        : base(name)
    {
        this.Health = 200;
        this.Damage = 20;
        Console.WriteLine("Появился юнит: {0}. Его здоровье: {1}. Его урон: {2}.", Name, Health, Damage);
    }
}

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


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

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

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