Не работает случайное число - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д