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