Advertisement
VodVas

medium8-1-4.cs

Dec 18th, 2024 (edited)
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.31 KB | Cryptocurrency | 0 0
  1.     public interface IWeapon
  2.     {
  3.         public float WeaponCooldown { get; }
  4.         public int WeaponDamage { get; }
  5.  
  6.         public void Attack();
  7.         public bool IsReloading();
  8.     }
  9.  
  10.     public interface IMover
  11.     {
  12.         public float MovementDirectionX { get; }
  13.         public float MovementDirectionY { get; }
  14.         public float MovementSpeed { get; }
  15.  
  16.         public void Move();
  17.     }
  18.  
  19.     public class Weapon : IWeapon
  20.     {
  21.         public Weapon(float weaponCooldown, int weaponDamage)
  22.         {
  23.             if (weaponCooldown < 0)
  24.             {
  25.                 throw new ArgumentException("Cooldown не может быть отрицательным.", nameof(weaponCooldown));
  26.             }
  27.             if (weaponDamage < 0)
  28.             {
  29.                 throw new ArgumentException("Damage не может быть отрицательным.", nameof(weaponDamage));
  30.             }
  31.  
  32.             WeaponCooldown = weaponCooldown;
  33.             WeaponDamage = weaponDamage;
  34.         }
  35.  
  36.         public float WeaponCooldown { get; private set; }
  37.         public int WeaponDamage { get; private set; }
  38.  
  39.         public void Attack()
  40.         {
  41.         }
  42.  
  43.         public bool IsReloading()
  44.         {
  45.             throw new NotImplementedException();
  46.         }
  47.     }
  48.  
  49.     public class Mover : IMover
  50.     {
  51.         public Mover(float directionX, float directionY, float speed)
  52.         {
  53.             if (speed < 0)
  54.             {
  55.                 throw new ArgumentException("Скорость не может быть отрицательной.", nameof(speed));
  56.             }
  57.  
  58.             MovementDirectionX = directionX;
  59.             MovementDirectionY = directionY;
  60.             MovementSpeed = speed;
  61.         }
  62.  
  63.         public float MovementDirectionX { get; private set; }
  64.         public float MovementDirectionY { get; private set; }
  65.         public float MovementSpeed { get; private set; }
  66.  
  67.         public void Move()
  68.         {
  69.         }
  70.     }
  71.  
  72.     public class Player
  73.     {
  74.         private readonly IWeapon _weapon;
  75.         private readonly IMover _mover;
  76.  
  77.         public Player(string name, int age, IWeapon weapon, IMover mover)
  78.         {
  79.             if (string.IsNullOrWhiteSpace(name))
  80.             {
  81.                 throw new ArgumentException("Имя не может быть пустым или состоять из пробелов.", nameof(name));
  82.             }
  83.             if (age < 0)
  84.             {
  85.                 throw new ArgumentException("Возраст не может быть отрицательным.", nameof(age));
  86.             }
  87.             if (weapon == null)
  88.             {
  89.                 throw new ArgumentNullException("Оружие не может быть null.", nameof(weapon));
  90.             }
  91.             if (mover == null)
  92.             {
  93.                 throw new ArgumentNullException("Mover не может быть null.", nameof(mover));
  94.             }
  95.  
  96.             Name = name;
  97.             Age = age;
  98.             _weapon = weapon;
  99.             _mover = mover;
  100.         }
  101.  
  102.         public string Name { get; private set; }
  103.         public int Age { get; private set; }
  104.  
  105.         public void Attack()
  106.         {
  107.             _weapon.Attack();
  108.         }
  109.  
  110.         public void Move()
  111.         {
  112.             _mover.Move();
  113.         }
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement