Advertisement
LeRoY_Go

Untitled

Feb 16th, 2022
570
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace C_Sharp_Junior
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             bool isExit = false;
  11.             Arena arena = new Arena();
  12.  
  13.             while (isExit == false)
  14.             {
  15.                 Console.Write("1 - Выбрать бойцов и начать бой\n2 - Информация о бойцах\n3 - Выход из игры\nКоманда:");
  16.                 bool successfulConversion = int.TryParse(Console.ReadLine(), out int userInput);
  17.  
  18.                 if (successfulConversion == true)
  19.                 {
  20.                     switch (userInput)
  21.                     {
  22.                         case 1:
  23.                             arena.ChoosingFighter();
  24.                             break;
  25.                         case 2:
  26.                             arena.PersonInfo();
  27.                             break;
  28.                         case 3:
  29.                             isExit = true;
  30.                             break;
  31.                     }
  32.                 }
  33.  
  34.                 Console.ReadKey();
  35.                 Console.Clear();
  36.             }
  37.         }
  38.     }
  39.  
  40.     class Arena
  41.     {
  42.         private List<Warrior> _warriors;
  43.         private List<Warrior> _warriorsUserInpyt;
  44.  
  45.         public Arena()
  46.         {
  47.             _warriors = new List<Warrior> { new Knight("Воин-Солдат", 100, 20, 70), new Magician("Маг-Черадей", 80, 50, 20, 100), new Engineer("Инжинер", 80, 30, 50, 15), new Archer("Лучник", 60, 15, 35, 20), new Healer("Медик", 150, 12, 20, 25) };
  48.             _warriorsUserInpyt = new List<Warrior>();
  49.         }
  50.  
  51.         public void PersonInfo()
  52.         {
  53.             for (int i = 0; i < _warriors.Count; i++)
  54.             {
  55.                 _warriors[i].ShowInfo();
  56.             }
  57.         }
  58.  
  59.         public void ChoosingFighter()
  60.         {
  61.             Console.WriteLine("Выберите бойцов:\n1- Воин-Солдат\n2- Маг-Черадей\n3- Инжинер\n4- Лучник\n5- Медик\n");
  62.             Console.Write("Боец №1: ");
  63.             int userInpyt1 = ChoiceWar();
  64.             Console.Write("Боуц №2: ");
  65.             int userInpyt2 = ChoiceWar();
  66.             _warriorsUserInpyt.Add(_warriors[userInpyt1]);
  67.             _warriorsUserInpyt.Add(_warriors[userInpyt2]);
  68.             Console.Clear();
  69.  
  70.             for (int i = 0; i < _warriorsUserInpyt.Count; i++)
  71.             {
  72.                 _warriorsUserInpyt[i].ShowInfo();
  73.             }
  74.  
  75.             Console.Write("\nНажмите кнопку для начала боя");
  76.             Console.ReadKey();
  77.             Console.Clear();
  78.             bool endCombat = false;
  79.             while (endCombat == false)
  80.             {
  81.                 endCombat = Battle();
  82.             }
  83.         }
  84.  
  85.         private int ChoiceWar()
  86.         {
  87.             int userInput = 0;
  88.             bool warriorChosenCorrectly = false;
  89.  
  90.             while (warriorChosenCorrectly == false)
  91.             {
  92.                 bool successfulConversion = int.TryParse(Console.ReadLine(), out userInput);
  93.  
  94.                 if (successfulConversion == true && userInput <= _warriors.Count && userInput > 0)
  95.                 {
  96.                     warriorChosenCorrectly = true;
  97.                 }
  98.                 else
  99.                 {
  100.                     Console.WriteLine("Бойца с таким номером нет. Выберите другова бойца.");
  101.                 }
  102.             }
  103.  
  104.             return userInput - 1;
  105.         }
  106.  
  107.         private bool Battle()
  108.         {
  109.             int round = 0;
  110.  
  111.             while (_warriorsUserInpyt[0].Health > 0 && _warriorsUserInpyt[1].Health > 0)
  112.             {
  113.                 Console.WriteLine($"жизни бойца №1 {_warriorsUserInpyt[0].Health}");
  114.                 Console.WriteLine($"жизни бойца №2 {_warriorsUserInpyt[1].Health}");
  115.                 _warriorsUserInpyt[0].TakingDamage(_warriorsUserInpyt[1].Damage);
  116.                 _warriorsUserInpyt[1].TakingDamage(_warriorsUserInpyt[0].Damage);
  117.  
  118.                 if (round == 2)
  119.                 {
  120.                     _warriorsUserInpyt[0].AbilityStrike();
  121.                     _warriorsUserInpyt[1].AbilityStrike();
  122.                     round = 0;
  123.                 }
  124.                 round++;
  125.             }
  126.  
  127.             if (_warriorsUserInpyt[0].Health <= 0)
  128.             {
  129.                 Console.WriteLine("Победил " + _warriorsUserInpyt[1].NameWarrior);
  130.             }
  131.             else if (_warriorsUserInpyt[1].Health <= 0)
  132.             {
  133.                 Console.WriteLine("Победил " + _warriorsUserInpyt[0].NameWarrior);
  134.             }
  135.             Console.ReadKey();
  136.             return true;
  137.         }
  138.     }
  139.  
  140.     class Warrior
  141.     {
  142.         public string NameWarrior { get; private set; }
  143.         public int Armor { get; private set; }
  144.         public int Health { get; private set; }
  145.         public int Damage { get; private set; }
  146.  
  147.         public Warrior(string nameWarrior, int health, int damage, int armor)
  148.         {
  149.             NameWarrior = nameWarrior;
  150.             Health = health;
  151.             Damage = damage;
  152.             Armor = armor;
  153.         }
  154.  
  155.         public virtual void ShowInfo()
  156.         {
  157.             Console.WriteLine($"Тип: {NameWarrior}\nЗдоровье: {Health}\nБроня: {Armor}\nУрон: {Damage}");
  158.         }
  159.  
  160.         public void TakingDamage(int damage)
  161.         {
  162.             Health -= Armor - damage;
  163.         }
  164.  
  165.         public void ChangeHealthAbilityStrike()
  166.         {
  167.             int valueRestoringHealth = 200;
  168.             Health = valueRestoringHealth;
  169.         }
  170.  
  171.         public void ChangeDamageAbilityStrike()
  172.         {
  173.             int valueDamageEntrainment = 2;
  174.             Damage *= valueDamageEntrainment;
  175.         }
  176.  
  177.         public virtual void AbilityStrike()
  178.         {
  179.         }
  180.     }
  181.  
  182.     class Knight : Warrior
  183.     {
  184.         public Knight(string nameWarrior, int health, int damage, int armor) : base(nameWarrior, health, damage, armor)
  185.         {
  186.         }
  187.  
  188.         public override void ShowInfo()
  189.         {
  190.             base.ShowInfo();
  191.             Console.WriteLine("Способность: Режим ярости");
  192.             Console.WriteLine(new string('-', 70));
  193.         }
  194.  
  195.         public override void AbilityStrike()
  196.         {
  197.             ChangeDamageAbilityStrike();
  198.         }
  199.     }
  200.  
  201.     class Magician : Warrior
  202.     {
  203.         private int _mana;
  204.  
  205.         public Magician(string nameWarrior, int health, int damage, int armor, int mana) : base(nameWarrior, health, damage, armor)
  206.         {
  207.             _mana = mana;
  208.         }
  209.  
  210.         public override void ShowInfo()
  211.         {
  212.             base.ShowInfo();
  213.             Console.WriteLine($"Мана: {_mana}\nСпособность: Выстрел магическими шарами");
  214.             Console.WriteLine(new string('-', 70));
  215.         }
  216.  
  217.         public override void AbilityStrike()
  218.         {
  219.             int consumptionMana = 40;
  220.             if (_mana > consumptionMana)
  221.             {
  222.                 ChangeDamageAbilityStrike();
  223.                 _mana -= consumptionMana;
  224.             }
  225.         }
  226.     }
  227.  
  228.     class Engineer : Warrior
  229.     {
  230.         private int _mechanisms;
  231.  
  232.         public Engineer(string nameWarrior, int health, int damage, int armor, int mechanisms) : base(nameWarrior, health, damage, armor)
  233.         {
  234.             _mechanisms = mechanisms;
  235.         }
  236.  
  237.         public override void ShowInfo()
  238.         {
  239.             base.ShowInfo();
  240.             Console.WriteLine($"Механизмы: {_mechanisms}\nСпособность: Постройка царь-пушки");
  241.             Console.WriteLine(new string('-', 70));
  242.         }
  243.         public override void AbilityStrike()
  244.         {
  245.             int consumptionMechanisms = 50;
  246.             if (_mechanisms >= consumptionMechanisms)
  247.             {
  248.                 ChangeDamageAbilityStrike();
  249.                 _mechanisms -= consumptionMechanisms;
  250.             }
  251.         }
  252.     }
  253.  
  254.     class Archer : Warrior
  255.     {
  256.         private int _arrows;
  257.  
  258.         public Archer(string nameWarrior, int health, int damage, int armor, int arrows) : base(nameWarrior, health, damage, armor)
  259.         {
  260.             _arrows = arrows;
  261.         }
  262.  
  263.         public override void ShowInfo()
  264.         {
  265.             base.ShowInfo();
  266.             Console.WriteLine($"Стрелы: {_arrows}\nСпособность: Шквал стрел");
  267.             Console.WriteLine(new string('-', 70));
  268.         }
  269.  
  270.         public override void AbilityStrike()
  271.         {
  272.             int ConsumptionArrows = 25;
  273.             if (_arrows >= ConsumptionArrows)
  274.             {
  275.                 ChangeDamageAbilityStrike();
  276.                 _arrows -= ConsumptionArrows;
  277.             }
  278.         }
  279.     }
  280.  
  281.     class Healer : Warrior
  282.     {
  283.         private int _potions;
  284.  
  285.         public Healer(string nameWarrior, int health, int damage, int armor, int potions) : base(nameWarrior, health, damage, armor)
  286.         {
  287.             _potions = potions;
  288.         }
  289.  
  290.         public override void ShowInfo()
  291.         {
  292.             base.ShowInfo();
  293.             Console.WriteLine($"Зелья: {_potions}\nСпособность: Полное восстановление здоровье + баф");
  294.             Console.Write(new string('-', 70));
  295.         }
  296.  
  297.         public override void AbilityStrike()
  298.         {
  299.             int consumptionPotions = 10;
  300.             if (_potions >= consumptionPotions)
  301.             {
  302.                 ChangeHealthAbilityStrike();
  303.                 _potions -= consumptionPotions;
  304.             }
  305.         }
  306.     }
  307. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement