Advertisement
alexey3017

Untitled

Mar 25th, 2020
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Learn1
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Warrior[] warriors = { new Hunter("Иллидан", 130, 10, 25), new Knight("Гаррош", 90, 7, 15), new Rogue("Рагнарос", 180, 2, 33, 2), new Paladin("Нефариан", 220, 0, 29), new Mage("Смертокрыл", 500, 0, 15) };
  13.             for (int i = 0; i < warriors.Length; i++)
  14.             {
  15.                 Console.Write(i + " ");
  16.                 warriors[i].ShowInfo();
  17.             }
  18.  
  19.             Console.WriteLine("Выберите Первого бойца:");
  20.             int righWarriorIndex = Convert.ToInt32(Console.ReadLine());
  21.             Warrior rightWarrior = warriors[righWarriorIndex];
  22.             Console.WriteLine("Выберите Второго бойца:");
  23.             int leftWarriorIndex = Convert.ToInt32(Console.ReadLine());
  24.             Warrior leftWarrior = warriors[leftWarriorIndex];
  25.  
  26.             while (leftWarrior.Health > 0 && rightWarrior.Health > 0)
  27.             {
  28.                 Console.WriteLine();
  29.                 leftWarrior.TakeDamage(rightWarrior.Damage);
  30.                 rightWarrior.TakeDamage(leftWarrior.Damage);
  31.                 leftWarrior.ShowInfo();
  32.                 rightWarrior.ShowInfo();
  33.             }
  34.         }
  35.     }
  36.  
  37.     abstract class Warrior
  38.     {
  39.         private string _name;
  40.         private int _health;
  41.         private int _armor;
  42.         private int _damage;
  43.  
  44.         public Warrior(string name, int health, int armor, int damage)
  45.         {
  46.             _name = name;
  47.             _health = health;
  48.             _armor = armor;
  49.             _damage = damage;
  50.         }
  51.         public int Health { get { return _health; } }
  52.         public int Damage { get { return _damage; } }
  53.  
  54.         public void ShowInfo()
  55.         {
  56.             Console.WriteLine($"{_name}: ХП - {_health}, Броня - {_armor}, Дамаг - {_damage}");
  57.         }
  58.  
  59.         public void TakeDamage(int damage)
  60.         {
  61.             _health -= ProcessDamage(damage);
  62.         }
  63.  
  64.         protected abstract int ProcessDamage(int damage);
  65.     }
  66.  
  67.     class Knight : Warrior
  68.     {
  69.         public Knight(string name, int health, int armor, int damage) : base(name, health, armor, damage)
  70.         {
  71.         }
  72.  
  73.         protected override int ProcessDamage(int damage)
  74.         {
  75.             return damage * (damage / 2);
  76.         }
  77.     }
  78.     class Rogue : Warrior
  79.     {
  80.         public Rogue(string name, int health, int armor, int damage, int attackSpeed) : base(name, health, armor, damage * attackSpeed)
  81.         {
  82.         }
  83.  
  84.         protected override int ProcessDamage(int damage)
  85.         {
  86.             return damage / 2;
  87.         }
  88.     }
  89.     class Paladin : Warrior
  90.     {
  91.         public Paladin(string name, int health, int armor, int damage) : base(name, health, armor, damage)
  92.         {
  93.         }
  94.  
  95.         protected override int ProcessDamage(int damage)
  96.         {
  97.             return damage = damage + 3;
  98.         }
  99.  
  100.     }
  101.     class Mage : Warrior
  102.     {
  103.         public Mage(string name, int health, int armor, int damage) : base(name, health, armor, damage)
  104.         {
  105.         }
  106.  
  107.         protected override int ProcessDamage(int damage)
  108.         {
  109.             return damage * 2;
  110.         }
  111.     }
  112.  
  113.     class Hunter : Warrior
  114.     {
  115.         public Hunter(string name, int health, int armor, int damage) : base(name, health, armor, damage)
  116.         {
  117.         }
  118.         protected override int ProcessDamage(int damage)
  119.         {
  120.             Random rand = new Random();
  121.             return damage * (rand.Next(0, 15) / 2);
  122.         }
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement