Не работает случайное число - 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);
}
}