Advertisement
Ruslan_Isaev

fight oop (sg6etV50)

Aug 24th, 2021
1,448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. namespace ConsoleApp1
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             Random random = new Random();
  10.             bool isWorking = true;
  11.  
  12.             while (isWorking)
  13.             {
  14.                 Fighter[] fighters = { new Necromancer("Ксардас", 15, 250, 13, 10, (random.Next(10, 300) / 100.0f)), new Mag("Милтен", 10, 340, 15, 113, (random.Next(10, 300) / 100f)), new Knight("Лестр", 20, 250, 10, 200, (random.Next(10, 300) / 100f)), new Mag("Сатурас", 20, 200, 10, 200, (random.Next(10, 300) / 100f)), new Necromancer("Диего", 25, 250, 15, 50, (random.Next(10, 300) / 100f)) };
  15.                 Console.ReadKey();
  16.                 Console.Clear();
  17.  
  18.                 for (int i = 0; i < fighters.Length; i++)
  19.                 {
  20.                     Console.Write($"{i + 1}.");
  21.                     fighters[i].ShowStats();
  22.                 }
  23.  
  24.                 Console.Write("Выберите первого бойца: ");
  25.                 string indexFirstFighter = Console.ReadLine();
  26.                 Console.Write("Выберите второго бойца: ");
  27.                 string indexSecondFighter = Console.ReadLine();
  28.                 int value;
  29.  
  30.                 if (indexFirstFighter != indexSecondFighter && int.TryParse(indexFirstFighter, out value) && int.TryParse(indexSecondFighter, out value))
  31.                 {
  32.  
  33.                     if (Convert.ToInt32(indexFirstFighter) <= 5 && Convert.ToInt32(indexFirstFighter) >= 1 && Convert.ToInt32(indexSecondFighter) <= 5 && Convert.ToInt32(indexSecondFighter) >= 1)
  34.                     {
  35.                         Fighter firstFighter = fighters[Convert.ToInt32(indexFirstFighter) - 1];
  36.                         Fighter secondFighter = fighters[Convert.ToInt32(indexSecondFighter) - 1];
  37.                         firstFighter.ShowStats(true);
  38.                         secondFighter.ShowStats(true);
  39.                         Fight(firstFighter,secondFighter);
  40.                     }
  41.                     else
  42.                     {
  43.                         Console.WriteLine("не правильно выбран герой");
  44.                     }
  45.                 }
  46.                 else
  47.                 {
  48.                     Console.WriteLine("Боец поставлен против себя, или же вы указали не то число при выборе героя");
  49.                 }
  50.             }
  51.         }
  52.  
  53.         public static void Fight(Fighter firstFighter, Fighter secondFighter)
  54.         {
  55.  
  56.             while (firstFighter.Health > 0 && secondFighter.Health > 0)
  57.             {
  58.                 Console.ReadKey();
  59.                 Console.Clear();
  60.                 firstFighter.ShowStats(true);
  61.                 secondFighter.ShowStats(true);
  62.                 secondFighter.TakeDamage(firstFighter.UseSpecialAttack());
  63.                 Console.ReadKey();
  64.                 Console.WriteLine();
  65.                 firstFighter.TakeDamage(secondFighter.UseSpecialAttack());
  66.             }
  67.  
  68.             Console.Clear();
  69.             firstFighter.ShowStats(true);
  70.             secondFighter.ShowStats(true);
  71.  
  72.             if (firstFighter.Health > 0)
  73.             {
  74.                 Console.WriteLine($"Победил боец: {firstFighter.Name}");
  75.             }
  76.             else
  77.             {
  78.                 Console.WriteLine($"Победил боец: {secondFighter.Name}");
  79.             }
  80.         }
  81.     }
  82. }
  83.  
  84. class Fighter
  85. {
  86.     private string _name;
  87.     private float _damage;
  88.     private float _health;
  89.     private int _armor;
  90.     private int _mana;
  91.     private float _luck;
  92.     private string _warriorClass;
  93.  
  94.     public string Name { get { return _name; } set { _name = value; } }
  95.  
  96.     public float Health { get { return _health; } set { _health = value; } }
  97.  
  98.     public float Damage { get { return _damage; } set { _damage = value; } }
  99.  
  100.     public int Armor { get { return _armor; } set { _armor = value; } }
  101.  
  102.     public int Mana { get { return _mana; } set { _mana = value; } }
  103.  
  104.     public float Luck { get { return _luck; } set { _luck = value; } }
  105.  
  106.     public string WarriorClass { get { return _warriorClass; } set { _warriorClass = value; } }
  107.  
  108.     public Fighter(string name, int damage, int health, int armor, int mana, float luck)
  109.     {
  110.         Name = name;
  111.         Damage = damage;
  112.         Health = health;
  113.         Armor = armor;
  114.         Mana = mana;
  115.         Luck = luck;
  116.     }
  117.  
  118.     public void TakeDamage(float damage)
  119.     {
  120.         float damageReceived = damage - _armor;
  121.  
  122.         if (damageReceived < 0)
  123.         {
  124.             damageReceived = 0;
  125.         }
  126.         else
  127.         {
  128.             Health -= damageReceived / Luck;
  129.         }
  130.     }
  131.  
  132.     public void ShowStats(bool ViewLuck = false)
  133.     {
  134.         if (ViewLuck)
  135.         {
  136.             Console.WriteLine($"Имя: {Name} || Жизнь: {Health} || Броня: {Armor} || Мана: {Mana} || Урон: {Damage} || Удача: {Luck}");
  137.         }
  138.         else
  139.         {
  140.             Console.WriteLine($"Имя: {Name} || Жизнь: {Health} || Броня: {Armor} || Мана: {Mana} || Урон: {Damage} || Удача: ???");
  141.         }
  142.     }
  143.     virtual public float UseSpecialAttack()
  144.     {
  145.         return Damage;
  146.     }
  147. }
  148.  
  149. class Necromancer : Fighter
  150. {
  151.     public Necromancer(string name, int damage, int health, int armor, int mana, float luck) : base(name, damage, health, armor, mana, luck)
  152.     {
  153.  
  154.     }
  155.  
  156.     public float CastClouds()
  157.     {
  158.         Luck += 0.1f;
  159.         Damage += 1 * Luck;
  160.         Console.WriteLine($"{Name} навеял тучи, урон возрос на {1 * Luck}");
  161.         Luck -= 0.1f;
  162.         return Damage;
  163.     }
  164.  
  165.     override public float UseSpecialAttack()
  166.     {
  167.         return CastClouds();
  168.     }
  169. }
  170.  
  171. class Knight : Fighter
  172. {
  173.     public Knight(string name, int damage, int health, int armor, int mana, float luck) : base(name, damage, health, armor, mana, luck)
  174.     {
  175.  
  176.     }
  177.  
  178.     public float Pray()
  179.     {
  180.         int manaСost = (int)(10 / Luck);
  181.  
  182.         if (manaСost < Mana)
  183.         {
  184.             Console.WriteLine($"{Name} Помолился: его атаки стали сильнее, а здоровье больше");
  185.             Mana -= manaСost;
  186.             Damage += 1;
  187.             Health += Health / 10;
  188.             return Damage;
  189.         }
  190.         else
  191.         {
  192.             Console.WriteLine($"У {Name} не хватает маны на особую атаку, и он совершил простую атаку мечом");
  193.             return Damage;
  194.         }
  195.     }
  196.  
  197.     override public float UseSpecialAttack()
  198.     {
  199.         return Pray();
  200.     }
  201. }
  202.  
  203. class Mag : Fighter
  204. {
  205.     public Mag(string name, int damage, int health, int armor, int mana, float luck) : base(name, damage, health, armor,mana, luck)
  206.     {
  207.  
  208.     }
  209.  
  210.     public float UseSpells()
  211.     {
  212.         int manaСost = (int)(10 / Luck);
  213.  
  214.         if (Mana > manaСost)
  215.         {
  216.             Console.WriteLine($"{Name} Бросил огненный шар в противника и попытался укрепить свое тело магией");
  217.             Armor += (int)(1 * Luck);
  218.             float FireBallDamage = 10;
  219.             FireBallDamage = FireBallDamage * Luck;
  220.             Mana -= manaСost;
  221.             return FireBallDamage;
  222.         }
  223.         else
  224.         {
  225.             Console.WriteLine($"У {Name} не хватает маны на особую атаку, и он совершил простую атаку посохом");
  226.             return Damage;
  227.         }
  228.     }
  229.  
  230.     override public float UseSpecialAttack()
  231.     {
  232.         return UseSpells();
  233.     }
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement