Torgach

Arena

Apr 10th, 2021
549
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace gladiatorialFight
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Arena arena = new Arena();
  14.             arena.Work();
  15.         }
  16.     }
  17.  
  18.     class Arena
  19.     {
  20.         private List<Figther> _figthers = new List<Figther>(1);
  21.         private List<Figther> _survivors = new List<Figther>();
  22.  
  23.         public void Work()
  24.         {
  25.             bool isWork = true;
  26.             while(isWork)
  27.             {
  28.                 Console.WriteLine("Выберите бойца:\n" +
  29.                     "[1] - Варвар\n" +
  30.                     "[2] - Маг\n" +
  31.                     "[3] - Лучник\n" +
  32.                     "[4] - Рыцарь\n" +
  33.                     "[5] - Ассассин\n" +
  34.                     "[6] - Выход\n");
  35.  
  36.                 ChooseFighther();
  37.             }
  38.             StartBattle();
  39.         }
  40.  
  41.         public void ChooseFighther(bool isRun = true)
  42.         {
  43.             Random rand = new Random();
  44.  
  45.             while (_figthers.Count != 2 && isRun)
  46.             {
  47.                 Console.Write("Ввод: ");
  48.                 switch (Console.ReadLine())
  49.                 {
  50.                     case "1":
  51.                         Warrior warrior = new Warrior(rand.Next(70, 100), rand.Next(10, 30), rand.Next(0, 15), "Берсерк");
  52.                         _figthers.Add(warrior);
  53.                         break;
  54.                     case "2":
  55.                         Mage mage = new Mage(rand.Next(50, 100), rand.Next(15, 40), rand.Next(5, 15), "Маг");
  56.                         _figthers.Add(mage);
  57.                         break;
  58.                     case "3":
  59.                         Archer archer = new Archer(rand.Next(40, 80), rand.Next(15, 30), rand.Next(0,10), "Лучник");
  60.                         _figthers.Add(archer);
  61.                         break;
  62.                     case "4":
  63.                         ShieldMan shieldMan = new ShieldMan(rand.Next(30, 60), rand.Next(20, 30), rand.Next(10, 15), "Рыцарь");
  64.                         _figthers.Add(shieldMan);
  65.                         break;
  66.                     case "5":
  67.                         Assassin assassin = new Assassin(rand.Next(40, 70), rand.Next(25, 35), rand.Next(5, 10), "Ассассин");
  68.                         _figthers.Add(assassin);
  69.                         break;
  70.                     case "6":
  71.                         isRun = false;
  72.                         break;
  73.                     default:
  74.                         Console.WriteLine("Ошибка!");
  75.                         break;
  76.                 }
  77.             }
  78.         }
  79.  
  80.         public void StartBattle()
  81.         {
  82.             Console.Clear();
  83.  
  84.             _figthers[0].ShowStats();
  85.             Console.WriteLine("=====================");
  86.             _figthers[1].ShowStats();
  87.  
  88.             while (_figthers[0].IsDead() && _figthers[1].IsDead())
  89.             {
  90.                 Console.WriteLine("1 боец наносит удар...");
  91.  
  92.                 if (_figthers[0].IsAbilityReady())
  93.                     _figthers[0].UseAbility(ref _figthers.ElementAt(1));
  94.                 _figthers[1].TakeDamage(_figthers[0].Damage);
  95.  
  96.                 Console.WriteLine();
  97.  
  98.                 Console.WriteLine("2 боец наносит удар...");
  99.  
  100.                 if(_figthers[2].IsAbilityReady())
  101.                     _figthers[2].UseAbility();
  102.                 _figthers[1].TakeDamage(_figthers[1].Damage);
  103.  
  104.                 _figthers[0].ShowStats();
  105.                 Console.WriteLine("=====================");
  106.                 _figthers[1].ShowStats();
  107.  
  108.                 Console.WriteLine("\n");
  109.  
  110.                 Console.ReadKey(true);
  111.                 Console.Clear();
  112.             }
  113.  
  114.             if (_figthers[0].IsDead())
  115.             {
  116.                 Console.WriteLine("1 боец умер!");
  117.                 _survivors.Add(_figthers[0]);
  118.             }
  119.             else if (_figthers[1].IsDead())
  120.             {
  121.                 Console.WriteLine("2 боец умер!");
  122.                 _survivors.Add(_figthers[1]);
  123.             }
  124.             else if (_figthers[0].IsDead() && _figthers[1].IsDead())
  125.             {
  126.                 Console.WriteLine("Оба бойца умерли!");
  127.             }
  128.         }
  129.     }
  130.  
  131.     abstract class Figther
  132.     {
  133.         public bool IsAvoid { get; protected set; }
  134.         public bool IsPoisonAttack { get; protected set; }
  135.         public int ReloadAbillityCounter { get; protected set; }
  136.         public int Health { get; protected set; }
  137.         public int Damage { get; protected set; }
  138.         public int Armor { get; protected set; }
  139.         public string Name { get; protected set; }
  140.  
  141.         public abstract void UseAbility(ref Figther enemy);
  142.  
  143.         public void TakeDamage(int damage)
  144.         {
  145.             if (IsAvoid)
  146.             {
  147.                 Console.WriteLine("Противник увернулся!");
  148.                 IsAvoid = false;
  149.                 return;
  150.             }
  151.             else if(IsPoisonAttack)
  152.             {
  153.                 Console.WriteLine("Ядовитая атака проходит сквозь броню!");
  154.                 IsPoisonAttack = false;
  155.                 Health -= damage;
  156.                 return;
  157.             }
  158.  
  159.             Health -= damage - (Armor / 2);
  160.  
  161.             if (Health < 0)
  162.                 Health = 0;
  163.  
  164.             Armor -= damage - (Armor / 10);
  165.  
  166.             if (Armor < 0)
  167.             {
  168.                 Armor = 0;
  169.                 Console.WriteLine("Броня рассыпалась!");
  170.             }
  171.         }
  172.  
  173.         public bool IsDead()
  174.         {
  175.             return Health > 0;
  176.         }
  177.  
  178.         public virtual bool IsAbilityReady()
  179.         {
  180.             if (ReloadAbillityCounter == 0)
  181.             {
  182.                 Console.WriteLine("Способность готова!");
  183.                 return true;
  184.             }
  185.             else if (ReloadAbillityCounter > 0)
  186.             {
  187.                 Console.WriteLine("Способность перезаряжается! Осталось: " + ReloadAbillityCounter--);
  188.             }
  189.             return false;
  190.         }
  191.  
  192.         public virtual void ShowStats()
  193.         {
  194.             Console.WriteLine($"{Name}:HP = {Health}; DMG = {Damage}; ARM = {Armor}");
  195.         }
  196.     }
  197.  
  198.     class Warrior : Figther
  199.     {
  200.         public Warrior(int health, int damage, int armor, string name)
  201.         {
  202.             Health = health;
  203.             Damage = damage;
  204.             Armor = armor;
  205.             Name = name;
  206.         }
  207.  
  208.         public override void UseAbility(ref Figther enemy)
  209.         {
  210.             Console.WriteLine("Варвар использует Гриб-Берсерка!");
  211.             Random rand = new Random();
  212.  
  213.             Health += rand.Next(5, 26);
  214.             Damage += rand.Next(5, 11);
  215.             Armor -= rand.Next(5, 10);
  216.             if (Armor < 0)
  217.                 Armor = 0;
  218.  
  219.             ReloadAbillityCounter = 3;
  220.         }
  221.  
  222.         public override bool IsAbilityReady()
  223.         {
  224.             return base.IsAbilityReady();
  225.         }
  226.     }
  227.  
  228.     class Mage : Figther
  229.     {
  230.         public Mage(int health, int damage, int armor, string name)
  231.         {
  232.             Health = health;
  233.             Damage = damage;
  234.             Armor = armor;
  235.             Name = name;
  236.         }
  237.  
  238.         public override void UseAbility(ref Figther enemy)
  239.         {
  240.             Console.WriteLine("Маг кастует огненный шар!");
  241.             ReloadAbillityCounter = 5;
  242.  
  243.             Random rand = new Random();
  244.  
  245.             enemy.TakeDamage(rand.Next(20, 40));
  246.         }
  247.  
  248.         public override bool IsAbilityReady()
  249.         {
  250.             return base.IsAbilityReady();
  251.         }
  252.     }
  253.  
  254.     class Archer : Figther
  255.     {
  256.         public Archer(int health, int damage, int armor, string name)
  257.         {
  258.             Health = health;
  259.             Damage = damage;
  260.             Armor = armor;
  261.             Name = name;
  262.         }
  263.  
  264.         public override void UseAbility(ref Figther enemy)
  265.         {
  266.             Console.WriteLine("Лучник уворачивается от удара и стреляет в ответ!");
  267.             ReloadAbillityCounter = 3;
  268.  
  269.             Random rand = new Random();
  270.             enemy.TakeDamage(rand.Next(20, 40));
  271.  
  272.             IsAvoid = true;
  273.         }
  274.  
  275.         public override bool IsAbilityReady()
  276.         {
  277.             return base.IsAbilityReady();
  278.         }
  279.     }
  280.  
  281.     class ShieldMan : Figther
  282.     {
  283.         public ShieldMan(int health, int damage, int armor, string name)
  284.         {
  285.             Health = health;
  286.             Damage = damage;
  287.             Armor = armor;
  288.             Name = name;
  289.         }
  290.         public override void UseAbility(ref Figther enemy)
  291.         {
  292.             Console.WriteLine("Рыцарь закрылся щитом!");
  293.             Random rand = new Random();
  294.  
  295.             Armor += rand.Next(10, 20);
  296.  
  297.             IsAvoid = true;
  298.             ReloadAbillityCounter = 2;
  299.         }
  300.  
  301.         public override bool IsAbilityReady()
  302.         {
  303.             return base.IsAbilityReady();
  304.         }
  305.     }
  306.  
  307.     class Assassin : Figther
  308.     {
  309.         public Assassin(int health, int damage, int armor, string name)
  310.         {
  311.             Health = health;
  312.             Damage = damage;
  313.             Armor = armor;
  314.             Name = name;
  315.         }
  316.         public override void UseAbility(ref Figther enemy)
  317.         {
  318.             Console.WriteLine("Ассассин бросает ядовитые кинжалы!");
  319.             Random rand = new Random();
  320.  
  321.             ReloadAbillityCounter = 1;
  322.  
  323.             enemy.TakeDamage(rand.Next(20, 30));
  324.         }
  325.  
  326.         public override bool IsAbilityReady()
  327.         {
  328.             return base.IsAbilityReady();
  329.         }
  330.     }
  331. }
  332.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×