NikaBang

ДЗ: Бой с боссом

Oct 12th, 2025 (edited)
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.82 KB | Gaming | 0 0
  1. internal class Program
  2. {
  3.     static void Main(string[] args)
  4.     {
  5.         const string CommandAttack = "1";
  6.         const string CommandFireball = "2";
  7.         const string CommandExplosion = "3";
  8.         const string CommandHealHpAndMp = "4";
  9.  
  10.         int playerMaxHealthPoints = 100;
  11.         int playerHealthPoints = playerMaxHealthPoints;
  12.         int playerMaxManaPoints = 50;
  13.         int playerManaPoints = playerMaxManaPoints;
  14.  
  15.         int playerAttackDamageMin = 10;
  16.         int playerAttackDamageMax = 20;
  17.  
  18.         int damageFireball = 25;
  19.         int manaCostFireball = 20;
  20.  
  21.         int damageExplosion = 35;
  22.         int manaCostExplosion = 30;
  23.  
  24.         int healHpAmount = 35;
  25.         int healManaAmount = 25;
  26.         int healsLeft = 3;
  27.  
  28.         int bossHp = 150;
  29.         int bossDamageMin = 10;
  30.         int bossDamageMax = 25;
  31.  
  32.         bool canUseExplosion = false;
  33.         Random random = new Random();
  34.  
  35.         while (playerHealthPoints > 0 && bossHp > 0)
  36.         {
  37.             int damageToBoss;
  38.             int damageToPlayer;
  39.  
  40.             Console.Clear();
  41.             Console.WriteLine($"Герой: HP {playerHealthPoints}/{playerMaxHealthPoints}, MP {playerManaPoints}/{playerMaxManaPoints}, Зелья восстановления: {healsLeft}");
  42.             Console.WriteLine($"Босс: HP {bossHp}");
  43.  
  44.             Console.Write($"\n{CommandAttack} - Провести обычную атаку.\n{CommandFireball} - Ударить Огненным шаром." +
  45.                 $"\n{CommandExplosion} - Взорвать.\n{CommandHealHpAndMp} - Восстановить здоровье и ману.\nТвой выбор: ");
  46.             string userInput = Console.ReadLine();
  47.  
  48.             switch (userInput)
  49.             {
  50.                 case CommandAttack:
  51.                     canUseExplosion = false;
  52.                     damageToBoss = random.Next(playerAttackDamageMin, playerAttackDamageMax + 1);
  53.                     bossHp -= damageToBoss;
  54.                     Console.WriteLine($"Ты провел обычну атаку и нанес {damageToBoss} урона!");
  55.                     break;
  56.  
  57.                 case CommandFireball:
  58.                     if (playerManaPoints >= manaCostFireball)
  59.                     {
  60.                         canUseExplosion = true;
  61.                         playerManaPoints -= manaCostFireball;
  62.                         bossHp -= damageFireball;
  63.                         Console.WriteLine($"Огненный шар нанес {damageFireball} урона, он горит и ты можешь использовать ВЗРЫВ!");
  64.                     }
  65.                     else
  66.                     {
  67.                         Console.WriteLine($"Недостаточно маны!\nИз-за ошибки ты ничего не нанес боссу!");
  68.                     }
  69.                     break;
  70.                 case CommandExplosion:
  71.                     if (canUseExplosion)
  72.                     {
  73.                         if (playerManaPoints >= manaCostExplosion)
  74.                         {
  75.                             canUseExplosion = false;
  76.                             bossHp -= damageExplosion;
  77.                             playerManaPoints -= manaCostExplosion;
  78.                             Console.WriteLine($"БАБАХ! Босс получил {damageExplosion} урона!");
  79.                         }
  80.                         else
  81.                         {
  82.                             Console.WriteLine($"Недостаточно маны! Будь внимательным!");
  83.                         }
  84.                     }
  85.                     else
  86.                     {
  87.                         Console.WriteLine($"Враг не горит! Используй сперва Огненный шар!");
  88.                     }
  89.                     break;
  90.                 case CommandHealHpAndMp:
  91.                     canUseExplosion = false;
  92.  
  93.                     if (healsLeft > 0)
  94.                     {
  95.                         healsLeft--;
  96.                         playerHealthPoints += healHpAmount;
  97.                         playerManaPoints += healManaAmount;
  98.  
  99.                         if (playerHealthPoints > playerMaxHealthPoints)
  100.                         {
  101.                             playerHealthPoints = playerMaxHealthPoints;
  102.                         }
  103.  
  104.                         if (playerManaPoints > playerMaxManaPoints)
  105.                         {
  106.                             playerManaPoints = playerMaxManaPoints;
  107.                         }
  108.  
  109.                         Console.WriteLine($"Ты востановил {healHpAmount} здоровья и {healManaAmount} маны.");
  110.                     }
  111.                     else
  112.                     {
  113.                         Console.WriteLine("Зелья восстановления закончились!");
  114.                     }
  115.                     break;
  116.                 default:
  117.                     Console.WriteLine($"Ты оступился! Поэтому пропускаешь ход!");
  118.                     break;
  119.             }
  120.  
  121.             damageToPlayer = random.Next(bossDamageMin, bossDamageMax + 1);
  122.             playerHealthPoints -= damageToPlayer;
  123.             Console.WriteLine($"Босс ударил на {damageToPlayer} урона!");
  124.             Console.ReadKey();
  125.         }
  126.  
  127.         if (playerHealthPoints <= 0 && bossHp <= 0)
  128.         {
  129.             Console.WriteLine("Удивительно! Ты убил босса, но и он успел нанести тебе смертельный удар!\nНИЧЬЯ!");
  130.         }
  131.         else if (playerHealthPoints <= 0)
  132.         {
  133.             Console.WriteLine("ПОРАЖЕНИЕ!");
  134.         }
  135.         else if (bossHp <= 0)
  136.         {
  137.             Console.WriteLine("ПОБЕДА!");
  138.         }
  139.  
  140.         Console.ReadKey();
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment