SaNik74

fight with boss

Feb 23rd, 2023 (edited)
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2.  
  3. internal class Program
  4. {
  5.     static void Main(string[] args)
  6.     {
  7.         const string MagicFireballCommand = "Fireball";
  8.         const string MagicHealthRegenCommand = "Regen";
  9.         const string MagicVampireCommand = "Vampire";
  10.         const string MagicSplitDamageCommand = "Split damage";
  11.         const string NormalPunchCommand = "Punch";
  12.         const string RunAwayCommand = "Run!";
  13.  
  14.         Random random = new Random();
  15.  
  16.         int minPlayerDamage = 1;
  17.         int maxPlayerDamage = 20;
  18.         int playerDamage;
  19.         int minStartPlayerHealth = 50;
  20.         int maxStartPlayerHealth = 100;
  21.         int manaPlayer = 10;
  22.         int maxManaPlayer = 50;
  23.         int manaPlayerRegen = 2;
  24.         float playerHealth = random.Next(minStartPlayerHealth, maxStartPlayerHealth);
  25.  
  26.         int minEnemyDamage = 2;
  27.         int maxEnemyDamage = 30;
  28.         int enemyDamage;
  29.         int minStartEnemyHealth = 80;
  30.         int maxStartEnemyHealth = 200;
  31.         int enemyHealth = random.Next(minStartEnemyHealth, maxStartEnemyHealth);
  32.  
  33.         int fireballDamage = 20;
  34.         int quantityRegenHealth = 35;
  35.         float coefficentVampireHealthRegen = 0.5f;
  36.         int numberOfMagicVampireAttack = 0;
  37.         int numberOfRunAwayCommand = 0;
  38.  
  39.         int minNumberForCriticalDamage = 1;
  40.         int maxNumberForCriticalDamage = 5;
  41.         int minCoefficentCriticalDamage = 2;
  42.         int maxCoefficentCriticalDamage = 4;
  43.         int coefficentCriticalDamage;
  44.         int probablyCriticalDamage;
  45.         int needNumberForCriticalDamage;
  46.  
  47.         while (playerHealth > 0 && enemyHealth > 0 && numberOfRunAwayCommand == 0)
  48.         {
  49.             string? userInput;
  50.             int quantityManaForMagicFireball = 3;
  51.             int quantityManaForMagicVampire = 5;
  52.             int quantityManaForMagicHealthRegen = 5;
  53.             int quantityManaForMagicSplitDamage = 4;
  54.             int coefficentSplitDamage = 2;
  55.  
  56.             probablyCriticalDamage = random.Next(minNumberForCriticalDamage, maxNumberForCriticalDamage);
  57.             needNumberForCriticalDamage = random.Next(minNumberForCriticalDamage, maxNumberForCriticalDamage);
  58.             coefficentCriticalDamage = random.Next(minCoefficentCriticalDamage, maxCoefficentCriticalDamage);
  59.             playerDamage = random.Next(minPlayerDamage, maxPlayerDamage);
  60.             enemyDamage = random.Next(minEnemyDamage, maxEnemyDamage);
  61.  
  62.             Console.WriteLine($"{playerHealth} - здоровья игрока. {manaPlayer} - мана игрока.");
  63.             Console.WriteLine($"{enemyHealth} - здоровья босса.");
  64.             Console.WriteLine();
  65.  
  66.             Console.WriteLine($"У вас есть несколько комнд для боя с боссом:\n" +
  67.                 $"{NormalPunchCommand} - нанести обычный удар.\n" +
  68.                 $"{MagicFireballCommand} - удар огненным шаром. Необходимо {quantityManaForMagicFireball} ед маны.\n" +
  69.                 $"{MagicVampireCommand} - забрать половину нанесенного урона себе. Необходимо {quantityManaForMagicVampire} маны и" +
  70.                 $"Меньше 50% здоровья\n" +
  71.                 $"{MagicHealthRegenCommand} - восстановить {quantityRegenHealth} жизней. Необходимо {quantityManaForMagicHealthRegen} маны\n" +
  72.                 $"{MagicSplitDamageCommand} - уменьшить урон наносимый противником в 2 раза. Можно использовать " +
  73.                 $"только после применения {MagicVampireCommand}. Необходимо {quantityManaForMagicSplitDamage} маны\n" +
  74.                 $"{RunAwayCommand} - сбежать с поля боя.");
  75.             Console.WriteLine();
  76.  
  77.             Console.Write("Введите команду: ");
  78.             userInput = Console.ReadLine();
  79.  
  80.             switch (userInput)
  81.             {
  82.                 case NormalPunchCommand:
  83.                     if (probablyCriticalDamage == needNumberForCriticalDamage)
  84.                     {
  85.                         playerDamage *= coefficentCriticalDamage;
  86.                         enemyHealth -= playerDamage;
  87.                     }
  88.                     else
  89.                     {
  90.                         enemyHealth -= playerDamage;
  91.                     }
  92.  
  93.                     break;
  94.  
  95.                 case MagicFireballCommand:
  96.                     if (manaPlayer >= quantityManaForMagicFireball)
  97.                     {
  98.                         manaPlayer -= quantityManaForMagicFireball;
  99.                         enemyHealth -= fireballDamage;
  100.                         manaPlayer -= quantityManaForMagicFireball;
  101.                     }
  102.                     else
  103.                     {
  104.                         if (probablyCriticalDamage == needNumberForCriticalDamage)
  105.                         {
  106.                             playerDamage *= coefficentCriticalDamage;
  107.                             enemyHealth -= playerDamage;
  108.                         }
  109.                         else
  110.                         {
  111.                             enemyHealth -= playerDamage;
  112.                         }
  113.                     }
  114.  
  115.                     break;
  116.  
  117.                 case MagicVampireCommand:
  118.                     if (manaPlayer >= quantityManaForMagicVampire && playerHealth <= maxStartPlayerHealth * coefficentVampireHealthRegen && numberOfMagicVampireAttack <= manaPlayer)
  119.                     {
  120.                         manaPlayer -= quantityManaForMagicVampire;
  121.                         enemyHealth -= playerDamage;
  122.                         playerHealth += playerDamage * coefficentVampireHealthRegen;
  123.                         numberOfMagicVampireAttack++;
  124.                     }
  125.                     else
  126.                     {
  127.                         if (probablyCriticalDamage == needNumberForCriticalDamage)
  128.                         {
  129.                             playerDamage *= coefficentCriticalDamage;
  130.                             enemyHealth -= playerDamage;
  131.                         }
  132.                         else
  133.                         {
  134.                             enemyHealth -= playerDamage;
  135.                         }
  136.                     }
  137.  
  138.                     break;
  139.  
  140.                 case MagicHealthRegenCommand:
  141.                     if (manaPlayer >= quantityManaForMagicHealthRegen)
  142.                     {
  143.                         playerHealth += quantityRegenHealth;
  144.                         manaPlayer -= quantityManaForMagicHealthRegen;
  145.  
  146.                         if (playerHealth > maxStartPlayerHealth)
  147.                         {
  148.                             playerHealth = maxStartPlayerHealth;
  149.                         }
  150.                     }
  151.                     else
  152.                     {
  153.                         if (probablyCriticalDamage == needNumberForCriticalDamage)
  154.                         {
  155.                             playerDamage *= coefficentCriticalDamage;
  156.                             enemyHealth -= playerDamage;
  157.                         }
  158.                         else
  159.                         {
  160.                             enemyHealth -= playerDamage;
  161.                         }
  162.                     }
  163.  
  164.                     break;
  165.  
  166.                 case MagicSplitDamageCommand:
  167.                     if (numberOfMagicVampireAttack > 0 && quantityManaForMagicSplitDamage <= manaPlayer)
  168.                     {
  169.                         enemyDamage = enemyDamage / coefficentSplitDamage;
  170.                         manaPlayer -= quantityManaForMagicSplitDamage;
  171.                     }
  172.                     else
  173.                     {
  174.                         if (probablyCriticalDamage == needNumberForCriticalDamage)
  175.                         {
  176.                             playerDamage *= coefficentCriticalDamage;
  177.                             enemyHealth -= playerDamage;
  178.                         }
  179.                         else
  180.                         {
  181.                             enemyHealth -= playerDamage;
  182.                         }
  183.                     }
  184.  
  185.                     break;
  186.  
  187.                 case RunAwayCommand:
  188.                     numberOfRunAwayCommand++;
  189.                     Console.Clear();
  190.  
  191.                     break;
  192.  
  193.                 default:
  194.                     Console.WriteLine("Вы промахнулись и нанесли 0 единиц урона.\nНажмите любую клавишу...");
  195.                     Console.ReadKey();
  196.  
  197.                     break;
  198.             }
  199.  
  200.             if (manaPlayer > maxManaPlayer)
  201.             {
  202.                 manaPlayer = maxManaPlayer;
  203.             }
  204.  
  205.             if (playerHealth > maxStartPlayerHealth)
  206.             {
  207.                 playerHealth = maxStartPlayerHealth;
  208.             }
  209.  
  210.             if (numberOfRunAwayCommand > 0)
  211.             {
  212.                 Console.WriteLine($"Вы сбежали с поля боя.\n" +
  213.                 $"Ваши жизни {playerHealth}\n" +
  214.                 $"Жизни противника: {enemyHealth}\n" +
  215.                 $"Нажмите любую клавишу...");
  216.                 Console.ReadKey();
  217.                 return;
  218.             }
  219.  
  220.             if (probablyCriticalDamage == needNumberForCriticalDamage)
  221.             {
  222.                 enemyDamage *= coefficentCriticalDamage;
  223.                 playerHealth -= enemyDamage;
  224.             }
  225.             else
  226.             {
  227.                 playerHealth -= enemyDamage;
  228.             }
  229.  
  230.             manaPlayer += manaPlayerRegen;
  231.  
  232.             Console.Clear();
  233.         }
  234.  
  235.         if (playerHealth <= 0 && enemyHealth > 0)
  236.         {
  237.             Console.WriteLine($"Босс победил.\n" +
  238.                 $"Ваши жизни {playerHealth}\n" +
  239.                 $"Жизни противника: {enemyHealth}\n");
  240.         }
  241.         else if (playerHealth > 0 && enemyHealth <= 0)
  242.         {
  243.             Console.WriteLine($"Вы победили!\n" +
  244.              $"Ваши жизни {playerHealth}\n" +
  245.             $"Жизни противника: {enemyHealth}\n");
  246.         }
  247.         else if (playerHealth <= 0 && enemyHealth <= 0)
  248.         {
  249.             Console.WriteLine($"Ничья. Оба мертвы.\n" +
  250.              $"Ваши жизни {playerHealth}\n" +
  251.             $"Жизни противника: {enemyHealth}\n");
  252.         }
  253.  
  254.         Console.ReadKey();
  255.     }
  256. }
Advertisement
Add Comment
Please, Sign In to add comment