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 gladiatorialFight
- {
- class Program
- {
- static void Main(string[] args)
- {
- Arena arena = new Arena();
- arena.Work();
- }
- }
- class Arena
- {
- private List<Figther> _figthers = new List<Figther>(1);
- private List<Figther> _survivors = new List<Figther>();
- public void Work()
- {
- bool isWork = true;
- while(isWork)
- {
- Console.WriteLine("Выберите бойца:\n" +
- "[1] - Варвар\n" +
- "[2] - Маг\n" +
- "[3] - Лучник\n" +
- "[4] - Рыцарь\n" +
- "[5] - Ассассин\n" +
- "[6] - Выход\n");
- ChooseFighther();
- }
- StartBattle();
- }
- public void ChooseFighther(bool isRun = true)
- {
- Random rand = new Random();
- while (_figthers.Count != 2 && isRun)
- {
- Console.Write("Ввод: ");
- switch (Console.ReadLine())
- {
- case "1":
- Warrior warrior = new Warrior(rand.Next(70, 100), rand.Next(10, 30), rand.Next(0, 15), "Берсерк");
- _figthers.Add(warrior);
- break;
- case "2":
- Mage mage = new Mage(rand.Next(50, 100), rand.Next(15, 40), rand.Next(5, 15), "Маг");
- _figthers.Add(mage);
- break;
- case "3":
- Archer archer = new Archer(rand.Next(40, 80), rand.Next(15, 30), rand.Next(0,10), "Лучник");
- _figthers.Add(archer);
- break;
- case "4":
- ShieldMan shieldMan = new ShieldMan(rand.Next(30, 60), rand.Next(20, 30), rand.Next(10, 15), "Рыцарь");
- _figthers.Add(shieldMan);
- break;
- case "5":
- Assassin assassin = new Assassin(rand.Next(40, 70), rand.Next(25, 35), rand.Next(5, 10), "Ассассин");
- _figthers.Add(assassin);
- break;
- case "6":
- isRun = false;
- break;
- default:
- Console.WriteLine("Ошибка!");
- break;
- }
- }
- }
- public void StartBattle()
- {
- Console.Clear();
- _figthers[0].ShowStats();
- Console.WriteLine("=====================");
- _figthers[1].ShowStats();
- while (_figthers[0].IsDead() && _figthers[1].IsDead())
- {
- Console.WriteLine("1 боец наносит удар...");
- if (_figthers[0].IsAbilityReady())
- _figthers[0].UseAbility(ref _figthers.ElementAt(1));
- _figthers[1].TakeDamage(_figthers[0].Damage);
- Console.WriteLine();
- Console.WriteLine("2 боец наносит удар...");
- if(_figthers[2].IsAbilityReady())
- _figthers[2].UseAbility();
- _figthers[1].TakeDamage(_figthers[1].Damage);
- _figthers[0].ShowStats();
- Console.WriteLine("=====================");
- _figthers[1].ShowStats();
- Console.WriteLine("\n");
- Console.ReadKey(true);
- Console.Clear();
- }
- if (_figthers[0].IsDead())
- {
- Console.WriteLine("1 боец умер!");
- _survivors.Add(_figthers[0]);
- }
- else if (_figthers[1].IsDead())
- {
- Console.WriteLine("2 боец умер!");
- _survivors.Add(_figthers[1]);
- }
- else if (_figthers[0].IsDead() && _figthers[1].IsDead())
- {
- Console.WriteLine("Оба бойца умерли!");
- }
- }
- }
- abstract class Figther
- {
- public bool IsAvoid { get; protected set; }
- public bool IsPoisonAttack { get; protected set; }
- public int ReloadAbillityCounter { get; protected set; }
- public int Health { get; protected set; }
- public int Damage { get; protected set; }
- public int Armor { get; protected set; }
- public string Name { get; protected set; }
- public abstract void UseAbility(ref Figther enemy);
- public void TakeDamage(int damage)
- {
- if (IsAvoid)
- {
- Console.WriteLine("Противник увернулся!");
- IsAvoid = false;
- return;
- }
- else if(IsPoisonAttack)
- {
- Console.WriteLine("Ядовитая атака проходит сквозь броню!");
- IsPoisonAttack = false;
- Health -= damage;
- return;
- }
- Health -= damage - (Armor / 2);
- if (Health < 0)
- Health = 0;
- Armor -= damage - (Armor / 10);
- if (Armor < 0)
- {
- Armor = 0;
- Console.WriteLine("Броня рассыпалась!");
- }
- }
- public bool IsDead()
- {
- return Health > 0;
- }
- public virtual bool IsAbilityReady()
- {
- if (ReloadAbillityCounter == 0)
- {
- Console.WriteLine("Способность готова!");
- return true;
- }
- else if (ReloadAbillityCounter > 0)
- {
- Console.WriteLine("Способность перезаряжается! Осталось: " + ReloadAbillityCounter--);
- }
- return false;
- }
- public virtual void ShowStats()
- {
- Console.WriteLine($"{Name}:HP = {Health}; DMG = {Damage}; ARM = {Armor}");
- }
- }
- class Warrior : Figther
- {
- public Warrior(int health, int damage, int armor, string name)
- {
- Health = health;
- Damage = damage;
- Armor = armor;
- Name = name;
- }
- public override void UseAbility(ref Figther enemy)
- {
- Console.WriteLine("Варвар использует Гриб-Берсерка!");
- Random rand = new Random();
- Health += rand.Next(5, 26);
- Damage += rand.Next(5, 11);
- Armor -= rand.Next(5, 10);
- if (Armor < 0)
- Armor = 0;
- ReloadAbillityCounter = 3;
- }
- public override bool IsAbilityReady()
- {
- return base.IsAbilityReady();
- }
- }
- class Mage : Figther
- {
- public Mage(int health, int damage, int armor, string name)
- {
- Health = health;
- Damage = damage;
- Armor = armor;
- Name = name;
- }
- public override void UseAbility(ref Figther enemy)
- {
- Console.WriteLine("Маг кастует огненный шар!");
- ReloadAbillityCounter = 5;
- Random rand = new Random();
- enemy.TakeDamage(rand.Next(20, 40));
- }
- public override bool IsAbilityReady()
- {
- return base.IsAbilityReady();
- }
- }
- class Archer : Figther
- {
- public Archer(int health, int damage, int armor, string name)
- {
- Health = health;
- Damage = damage;
- Armor = armor;
- Name = name;
- }
- public override void UseAbility(ref Figther enemy)
- {
- Console.WriteLine("Лучник уворачивается от удара и стреляет в ответ!");
- ReloadAbillityCounter = 3;
- Random rand = new Random();
- enemy.TakeDamage(rand.Next(20, 40));
- IsAvoid = true;
- }
- public override bool IsAbilityReady()
- {
- return base.IsAbilityReady();
- }
- }
- class ShieldMan : Figther
- {
- public ShieldMan(int health, int damage, int armor, string name)
- {
- Health = health;
- Damage = damage;
- Armor = armor;
- Name = name;
- }
- public override void UseAbility(ref Figther enemy)
- {
- Console.WriteLine("Рыцарь закрылся щитом!");
- Random rand = new Random();
- Armor += rand.Next(10, 20);
- IsAvoid = true;
- ReloadAbillityCounter = 2;
- }
- public override bool IsAbilityReady()
- {
- return base.IsAbilityReady();
- }
- }
- class Assassin : Figther
- {
- public Assassin(int health, int damage, int armor, string name)
- {
- Health = health;
- Damage = damage;
- Armor = armor;
- Name = name;
- }
- public override void UseAbility(ref Figther enemy)
- {
- Console.WriteLine("Ассассин бросает ядовитые кинжалы!");
- Random rand = new Random();
- ReloadAbillityCounter = 1;
- enemy.TakeDamage(rand.Next(20, 30));
- }
- public override bool IsAbilityReady()
- {
- return base.IsAbilityReady();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement