Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Learn1
- {
- class Program
- {
- static void Main(string[] args)
- {
- 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) };
- for (int i = 0; i < warriors.Length; i++)
- {
- Console.Write(i + " ");
- warriors[i].ShowInfo();
- }
- Console.WriteLine("Выберите Первого бойца:");
- int righWarriorIndex = Convert.ToInt32(Console.ReadLine());
- Warrior rightWarrior = warriors[righWarriorIndex];
- Console.WriteLine("Выберите Второго бойца:");
- int leftWarriorIndex = Convert.ToInt32(Console.ReadLine());
- Warrior leftWarrior = warriors[leftWarriorIndex];
- while (leftWarrior.Health > 0 && rightWarrior.Health > 0)
- {
- Console.WriteLine();
- leftWarrior.TakeDamage(rightWarrior.Damage);
- rightWarrior.TakeDamage(leftWarrior.Damage);
- leftWarrior.ShowInfo();
- rightWarrior.ShowInfo();
- }
- }
- }
- abstract class Warrior
- {
- private string _name;
- private int _health;
- private int _armor;
- private int _damage;
- public Warrior(string name, int health, int armor, int damage)
- {
- _name = name;
- _health = health;
- _armor = armor;
- _damage = damage;
- }
- public int Health { get { return _health; } }
- public int Damage { get { return _damage; } }
- public void ShowInfo()
- {
- Console.WriteLine($"{_name}: ХП - {_health}, Броня - {_armor}, Дамаг - {_damage}");
- }
- public void TakeDamage(int damage)
- {
- _health -= ProcessDamage(damage);
- }
- protected abstract int ProcessDamage(int damage);
- }
- class Knight : Warrior
- {
- public Knight(string name, int health, int armor, int damage) : base(name, health, armor, damage)
- {
- }
- protected override int ProcessDamage(int damage)
- {
- return damage * (damage / 2);
- }
- }
- class Rogue : Warrior
- {
- public Rogue(string name, int health, int armor, int damage, int attackSpeed) : base(name, health, armor, damage * attackSpeed)
- {
- }
- protected override int ProcessDamage(int damage)
- {
- return damage / 2;
- }
- }
- class Paladin : Warrior
- {
- public Paladin(string name, int health, int armor, int damage) : base(name, health, armor, damage)
- {
- }
- protected override int ProcessDamage(int damage)
- {
- return damage = damage + 3;
- }
- }
- class Mage : Warrior
- {
- public Mage(string name, int health, int armor, int damage) : base(name, health, armor, damage)
- {
- }
- protected override int ProcessDamage(int damage)
- {
- return damage * 2;
- }
- }
- class Hunter : Warrior
- {
- public Hunter(string name, int health, int armor, int damage) : base(name, health, armor, damage)
- {
- }
- protected override int ProcessDamage(int damage)
- {
- Random rand = new Random();
- return damage * (rand.Next(0, 15) / 2);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement