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

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

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

Привет! Взял шаблон для класса битвы двух юнитов из этой темы: Присваивание массива. Добавил случайное число в параметры юнитов, но оно добавляется сразу двум юнитам, а не каждому своё. Помогите пожалуйста, я не понимаю почему так происходит. Кстати, Я как то сделал и было нормально, а теперь нет.
Листинг программы
  1. Random random = new Random();
  2. public Units(string Name, int Health = 100, int Damage = 5)
  3. {
  4. Health = random.Next(1, 12) * 10 + 90;
  5. Damage = random.Next(5, 31);
  6. this.Name = Name;
  7. this.Health = Health;
  8. this.Damage = Damage;
  9. this.UnitDead = false;
  10. Console.WriteLine("Появился юнит: {0}. Его здоровье: {1}. Его урон: {2}.", Name, Health, Damage);
  11. }
Вот весь код, если нужно.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Battle
  7. {
  8. class Units
  9. {
  10. private string name;
  11. public string Name
  12. {
  13. set { name = value; }
  14. get { return name; }
  15. }
  16. private int health;
  17. public int Health
  18. {
  19. set { health = value; }
  20. get { return health; }
  21. }
  22. private int damage;
  23. public int Damage
  24. {
  25. set { damage = value; }
  26. get { return damage; }
  27. }
  28. private bool unitDead;
  29. public bool UnitDead
  30. {
  31. set { unitDead = value; }
  32. get { return unitDead; }
  33. }
  34. Random random = new Random();
  35. public Units(string Name, int Health = 100, int Damage = 5)
  36. {
  37. Health = random.Next(1, 12) * 10 + 90;
  38. Damage = random.Next(5, 31);
  39. this.Name = Name;
  40. this.Health = Health;
  41. this.Damage = Damage;
  42. this.UnitDead = false;
  43. Console.WriteLine("Появился юнит: {0}. Его здоровье: {1}. Его урон: {2}.", Name, Health, Damage);
  44. }
  45. public void Hit(int Damage)
  46. {
  47. if (Health > 0)
  48. {
  49. if (Damage >= Health)
  50. {
  51. Health = 0;
  52. UnitDead = false;
  53. Console.WriteLine("Юнит {0} получает смертельный урон.\n", Name);
  54. }
  55. else
  56. {
  57. Health = Health - Damage;
  58. Console.WriteLine("Юнит {0} получает {1} урона.", Name, Damage.ToString());
  59. Console.WriteLine("У юнита {0} осталось {1} здоровья.", Name, Health);
  60. }
  61. }
  62. }
  63. public void Attack(Units Target)
  64. {
  65. Console.WriteLine();
  66. if (!Target.UnitDead)
  67. {
  68. if (Health > 0)
  69. {
  70. Console.WriteLine("Юнит {0} наносит удар по юниту {1}.\n", Name, Target.Name);
  71. Target.Hit(this.Damage);
  72. }
  73. else
  74. {
  75. Console.WriteLine("Юнит {0} не может атаковать, потому что он погиб.\n", Name);
  76. }
  77. }
  78. }
  79. }
  80. }
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Battle
  7. {
  8. class Program
  9. {
  10. static void Main()
  11. {
  12. Units Footman = new Units("Footman");
  13. Units Grunt = new Units("Grunt");
  14. Footman.Attack(Grunt);
  15. Grunt.Attack(Footman);
  16. Console.ReadKey();
  17. }
  18. }
  19. }

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

textual
Листинг программы
  1. class Footman : Units
  2. {
  3.     public Footman(string name)
  4.         : base(name)
  5.     {
  6.         this.Health = 100;
  7.         this.Damage = 10;
  8.         Console.WriteLine("Появился юнит: {0}. Его здоровье: {1}. Его урон: {2}.", Name, Health, Damage);
  9.     }
  10. }
  11.  
  12. class Grunt : Units
  13. {
  14.     public Grunt(string name)
  15.         : base(name)
  16.     {
  17.         this.Health = 200;
  18.         this.Damage = 20;
  19.         Console.WriteLine("Появился юнит: {0}. Его здоровье: {1}. Его урон: {2}.", Name, Health, Damage);
  20.     }
  21. }

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


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

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

10   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы