Advertisement
Torgach

Бой с боссом

Sep 8th, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 22.74 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApp18
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             //игрок
  10.             char playerInput;
  11.             int playerHealth = 100;
  12.  
  13.             //использование 1-ой способности
  14.             char playerAbilitySummonElemental;
  15.             bool banAbilitySummonElemental = false;
  16.  
  17.             // Элементали, с помощью которых будет наноситься урон Врагу
  18.             int earthElementalDamage = 0;
  19.             int difficultToStun = 0; // сложность способности
  20.             int earthElementalDurability = 0; // запас прочности элементаля
  21.             bool earthElementalAbility = false;
  22.             bool pickEarthElemetal = false;
  23.  
  24.             int waterElementalDamage = 0;
  25.             int difficultToCold = 0;
  26.             int waterElementalDurability = 0;
  27.             bool waterElementalAbility = false;
  28.             bool pickWaterElemetal = false;
  29.  
  30.             int fireElementalDamage = 0;
  31.             int difficultToBurn = 0;
  32.             int fireShrapnel = 0;
  33.             int fireElementalDurability = 0;
  34.             bool fireElementalAbility = false;
  35.             bool pickFireElemetal = false;
  36.  
  37.             // 2-ая способность
  38.             char playerAbilitySwapElemental;
  39.  
  40.  
  41.             // Ограниченный запас "аптечек"
  42.             int playerAbilityUseHealh = 5;
  43.             bool playerAbilityEscape = false;
  44.             int difficultToEscape = 0;
  45.  
  46.             //Враг
  47.             int enemyHealth = 500;
  48.             int enemyDamage = 0;
  49.  
  50.             Random rand = new Random();
  51.  
  52.             Console.ForegroundColor = ConsoleColor.Cyan;
  53.             Console.WriteLine("Вы - Путник, который пробирается все дальше вглубь подземелья.\n" +
  54.                 "Спустя некоторое время вы натыкаетесь на врата нечеловеческих размеров...");
  55.             Console.WriteLine("Вы проверяете свою сумку и находите 3 свитка заклинания вместе с подсумком: \n"
  56.                 + "1 - Призвать Элементаля\n"
  57.                 + "2 - Поменять Элементаля\n"
  58.                 + "3 - Использовать способность Элементаля\n"
  59.                 + "4 - Использовать лечебную мазь\n");
  60.             Console.ForegroundColor = ConsoleColor.Yellow;
  61.             Console.Write("     \"Открыть врата\"? \n");
  62.             Console.ReadLine();
  63.             Console.ForegroundColor = ConsoleColor.Cyan;
  64.             Console.WriteLine("Пришло время сражаться\n");
  65.  
  66.             Console.ForegroundColor = ConsoleColor.White;
  67.  
  68.             while (playerHealth >= 0 && enemyHealth >= 0)
  69.             {
  70.                 Console.ForegroundColor = ConsoleColor.Green;
  71.                 Console.WriteLine($"Ваше Здоровье: {playerHealth}.");
  72.                 Console.ForegroundColor = ConsoleColor.DarkRed;
  73.                 Console.WriteLine($"Здоровье Узника: {enemyHealth}\n");
  74.  
  75.                 //Ход Игрока
  76.                 Console.ForegroundColor = ConsoleColor.White;
  77.                 Console.Write("\"Ваши действия\": ");
  78.                 playerInput = Convert.ToChar(Console.ReadLine());
  79.                 switch (playerInput)
  80.                 {
  81.                     case '1': // 1 способность
  82.                         if (banAbilitySummonElemental == true)
  83.                         {
  84.                             Console.ForegroundColor = ConsoleColor.Cyan;
  85.                             Console.WriteLine("Вы уже призвали на поле боя Элементаля!");
  86.                             break;
  87.                         }
  88.  
  89.                         Console.ForegroundColor = ConsoleColor.Cyan;
  90.                         Console.WriteLine("Вы тяните руку к свитку...");
  91.                         Console.WriteLine("\"Призовите\":\n"
  92.                             + "z - \"Земляного элементаля\"\n"
  93.                             + "x - \"Водяного элементаля\"\n"
  94.                             + "c - \"Огненного элемнталя\"\n");
  95.  
  96.                         Console.ForegroundColor = ConsoleColor.White;
  97.                         Console.Write("Выбор: ");
  98.                         playerAbilitySummonElemental = Convert.ToChar(Console.ReadLine());
  99.                         switch (playerAbilitySummonElemental)
  100.                         {
  101.                             case 'z':
  102.                                 Console.ForegroundColor = ConsoleColor.Gray;
  103.                                 Console.WriteLine("Рядом с вами появился \"Земляной элементаль\", Теперь вы можете его использовать!\n");
  104.                                 pickEarthElemetal = true;
  105.                                 banAbilitySummonElemental = true;
  106.                                 earthElementalDurability = rand.Next(2, 5); // создаем прочность элементаля
  107.                                 break;
  108.                             case 'x':
  109.                                 Console.ForegroundColor = ConsoleColor.Blue;
  110.                                 Console.WriteLine("Рядом с вами появился \"Водяной элементаль\", Теперь вы можете его использовать!\n");
  111.                                 banAbilitySummonElemental = true;
  112.                                 pickWaterElemetal = true;
  113.                                 waterElementalDurability = rand.Next(2, 7);
  114.                                 break;
  115.                             case 'c':
  116.                                 Console.ForegroundColor = ConsoleColor.Red;
  117.                                 Console.WriteLine("Рядом с вами появился \"Огненный элементаль\", Теперь вы можете его использовать!\n");
  118.                                 banAbilitySummonElemental = true;
  119.                                 pickFireElemetal = true;
  120.                                 fireElementalDurability = rand.Next(2, 6);
  121.                                 break;
  122.                             default:
  123.                                 Console.WriteLine("У вас не вышло произнести заклинание!");
  124.                                 break;
  125.                         }
  126.                         break;
  127.  
  128.                     case '2': // 2 способность
  129.                         if (banAbilitySummonElemental == false)
  130.                         {
  131.                             Console.ForegroundColor = ConsoleColor.Cyan;
  132.                             Console.WriteLine("Вы не призвали элементаля!\n");
  133.                             break;
  134.                         }
  135.  
  136.                         Console.ForegroundColor = ConsoleColor.White;
  137.                         Console.WriteLine("Вы решаете поменять элементаля на ... ");
  138.                         Console.WriteLine("z - \"Земляного элементаля\"\n"
  139.                             + "x - \"Водяного элементаля\"\n"
  140.                             + "c - \"Огненного элемнталя\"\n");
  141.                         Console.Write("Выбор: ");
  142.                         playerAbilitySwapElemental = Convert.ToChar(Console.ReadLine());
  143.                         switch (playerAbilitySwapElemental)
  144.                         {
  145.                             case 'z': // выбор на земляного
  146.                                 if (pickFireElemetal == true || pickWaterElemetal == true)
  147.                                 {
  148.                                     pickEarthElemetal = true;
  149.                                     pickFireElemetal = false;
  150.                                     pickWaterElemetal = false;
  151.                                     difficultToStun = 0; // при смене элементаля сложность обнуляется
  152.                                     earthElementalDurability = rand.Next(2, 5);
  153.                                     Console.ForegroundColor = ConsoleColor.Gray;
  154.                                     Console.WriteLine("Вы призвали Земляного Элементаля!");
  155.                                 }
  156.                                 else
  157.                                 {
  158.                                     Console.ForegroundColor = ConsoleColor.Gray;
  159.                                     Console.WriteLine("Вы УЖЕ призвали на поле боя Земляного Элементаля!");
  160.                                 }
  161.                                 break;
  162.                             case 'x': // выбор на водяного
  163.                                 if (pickEarthElemetal == true || pickFireElemetal == true)
  164.                                 {
  165.                                     pickWaterElemetal = true;
  166.                                     pickEarthElemetal = false;
  167.                                     pickFireElemetal = false;
  168.                                     difficultToCold = 0;
  169.                                     waterElementalDurability = rand.Next(2, 6);
  170.                                     Console.ForegroundColor = ConsoleColor.Blue;
  171.                                     Console.WriteLine("Вы призвали Водяного Элементаля!");
  172.                                 }
  173.                                 else
  174.                                 {
  175.                                     Console.ForegroundColor = ConsoleColor.Blue;
  176.                                     Console.WriteLine("Вы УЖЕ призвали на поле боя Водяного Элементаля!");
  177.                                 }
  178.                                 break;
  179.                             case 'c': // выбор на огненного
  180.                                 if (pickEarthElemetal == true || pickWaterElemetal == true)
  181.                                 {
  182.                                     pickFireElemetal = true;
  183.                                     pickEarthElemetal = false;
  184.                                     pickWaterElemetal = false;
  185.                                     difficultToBurn = 0;
  186.                                     fireElementalDurability = rand.Next(2, 6);
  187.                                     Console.ForegroundColor = ConsoleColor.Red;
  188.                                     Console.WriteLine("Вы призвали Огненного Элементаля!");
  189.                                 }
  190.                                 else
  191.                                 {
  192.                                     Console.ForegroundColor = ConsoleColor.Red;
  193.                                     Console.WriteLine("Вы УЖЕ призвали на поле боя Огненного Элементаля!");
  194.                                 }
  195.                                 break;
  196.                             default:
  197.                                 Console.ForegroundColor = ConsoleColor.White;
  198.                                 Console.WriteLine("У вас не вышло произнести заклинание!");
  199.                                 break;
  200.                         }
  201.                         break;
  202.  
  203.                     case '3': // 3 способность
  204.                         if (banAbilitySummonElemental == false)
  205.                         {
  206.                             Console.WriteLine("Призовите Элементаля!\n");
  207.                             break;
  208.                         }
  209.  
  210.                         if (pickEarthElemetal == true)
  211.                         {
  212.                             Console.ForegroundColor = ConsoleColor.DarkRed;
  213.                             Console.WriteLine("Элементаль содрогает землю и кидает булыжник огромных размеров в Узника!");
  214.                             earthElementalDamage = rand.Next(35, 45);
  215.                             enemyHealth -= earthElementalDamage;
  216.  
  217.                             if (rand.Next(1, 11) > (5 + difficultToStun)) // шанс оглушить Врага, который с каждой попыткой усложняется
  218.                             {
  219.                                 earthElementalAbility = true;
  220.                                 difficultToStun++;
  221.                             }
  222.                             else // если промахнулся, то обнуляем сложность
  223.                             {
  224.                                 Console.ForegroundColor = ConsoleColor.White;
  225.                                 Console.WriteLine("Элементаль не смог прогреметь заклинание\n");
  226.                                 difficultToStun = 0;
  227.                             }
  228.                             Console.ForegroundColor = ConsoleColor.DarkRed;
  229.                             Console.WriteLine("Булыжник наносит: " + earthElementalDamage + " урона\n");
  230.                             earthElementalDurability--; // Уменьшается "прочность" элементаля каждый раз, когда исп. способность
  231.                             if (earthElementalDurability <= 0) // Если прочность достигла нуля
  232.                             {
  233.                                 Console.ForegroundColor = ConsoleColor.DarkMagenta;
  234.                                 Console.WriteLine("Свиток не выдерживает силы и рассыпается!");
  235.                                 pickEarthElemetal = false;
  236.                                 banAbilitySummonElemental = false;
  237.                             }
  238.                         }
  239.                         else if (pickWaterElemetal == true)
  240.                         {
  241.                             Console.ForegroundColor = ConsoleColor.DarkRed;
  242.                             Console.WriteLine("Элементаль проводит водяную атаку");
  243.                             waterElementalDamage = rand.Next(35, 50);
  244.                             enemyHealth -= waterElementalDamage;
  245.                             if (rand.Next(1, 11) > (5 + difficultToCold))
  246.                             {
  247.                                 waterElementalAbility = true;
  248.                                 difficultToCold++;
  249.                             }
  250.                             else
  251.                             {
  252.                                 Console.ForegroundColor = ConsoleColor.White;
  253.                                 Console.WriteLine("Элементаль не смог пробурлить заклинание\n");
  254.                                 difficultToCold = 0;
  255.                             }
  256.                             Console.ForegroundColor = ConsoleColor.DarkRed;
  257.                             Console.WriteLine("Поток наносит: " + waterElementalDamage + " урона\n");
  258.                             waterElementalDurability--;
  259.                             if (waterElementalDurability <= 0)
  260.                             {
  261.                                 Console.ForegroundColor = ConsoleColor.DarkMagenta;
  262.                                 Console.WriteLine("Свиток не выдержал силы и промок!");
  263.                                 pickWaterElemetal = false;
  264.                                 banAbilitySummonElemental = false;
  265.                             }
  266.                         }
  267.                         else if (pickFireElemetal == true)
  268.                         {
  269.                             Console.ForegroundColor = ConsoleColor.DarkRed;
  270.                             Console.WriteLine("Элементаль накаляет воздух и проводит огненную атаку!");
  271.                             fireElementalDamage = rand.Next(45, 61);
  272.                             enemyHealth -= fireElementalDamage;
  273.                             if (rand.Next(1, 14) > (3 + difficultToBurn))
  274.                             {
  275.                                 fireElementalAbility = true;
  276.                                 difficultToBurn++;
  277.                             }
  278.                             else
  279.                             {
  280.                                 Console.ForegroundColor = ConsoleColor.DarkMagenta;
  281.                                 Console.WriteLine("Элементаль не смог проискрить заклинание\n");
  282.                                 difficultToBurn = 0;
  283.                             }
  284.                             Console.ForegroundColor = ConsoleColor.DarkRed;
  285.                             Console.WriteLine("Огненный шар наносит: " + fireElementalDamage + " урона\n");
  286.                             fireElementalDurability--;
  287.                             if (fireElementalDurability <= 0)
  288.                             {
  289.                                 Console.ForegroundColor = ConsoleColor.White;
  290.                                 Console.WriteLine("Свиток не выдержал силы и сгорел!");
  291.                                 pickFireElemetal = false;
  292.                                 banAbilitySummonElemental = false;
  293.                             }
  294.                         }
  295.                         break;
  296.                     case '4': // лечебная мазь
  297.                         if (playerAbilityUseHealh > 0)
  298.                         {
  299.                             playerHealth += rand.Next(45, 70);
  300.                             if (playerHealth > 100) playerHealth = 100;
  301.                             if (rand.Next(1, 11) > (5 + difficultToEscape)) // шанс не получить урона при лечении, который усложняется при каждой успешной попытке
  302.                             {
  303.                                 Console.ForegroundColor = ConsoleColor.Green;
  304.                                 Console.WriteLine("Вы успели спрятаться!");
  305.                                 playerAbilityEscape = true;
  306.                                 difficultToEscape++;
  307.                             }
  308.                             else
  309.                             {
  310.                                 Console.ForegroundColor = ConsoleColor.White;
  311.                                 Console.WriteLine("Попытка спрятаться не удалась!");
  312.                                 difficultToEscape = 0; // обнуляем сложность
  313.                             }
  314.                             Console.ForegroundColor = ConsoleColor.Green;
  315.                             Console.WriteLine("Вы используете лечебную мазь и теперь у вас " + playerHealth + " хп\n");
  316.                         }
  317.                         else // если закончились "аптечки"
  318.                         {
  319.                             Console.ForegroundColor = ConsoleColor.White;
  320.                             Console.WriteLine("Вы опускаете руку в сумку и не находите лечебную мазь!\n");
  321.                         }
  322.                         break;
  323.  
  324.                     default:
  325.                         Console.ForegroundColor = ConsoleColor.White;
  326.                         Console.WriteLine("Выбрали неверное действие! Ход Узника...\n");// При любом неверном вводе
  327.                         break;
  328.                 }
  329.  
  330.                 //Способности
  331.                 if (earthElementalAbility == true) // способность Земляного Элементаля
  332.                 {
  333.                     Console.ForegroundColor = ConsoleColor.Gray;
  334.                     Console.WriteLine("Узник оглушен и пропускает свой ход!\n");
  335.                     earthElementalAbility = false;
  336.                     continue;
  337.                 }
  338.                 if (playerAbilityEscape == true) //способность спрятаться от урона при лечении
  339.                 {
  340.                     playerAbilityEscape = false;
  341.                     continue;
  342.                 }
  343.  
  344.                 //Ход Врага
  345.                 Console.ForegroundColor = ConsoleColor.White;
  346.                 Console.WriteLine("Ход Узника!");
  347.                 enemyDamage = rand.Next(15, 36);
  348.  
  349.                 if (waterElementalAbility == true) // способность Водяного Элементаля, который уменьшает урон Врага, в случае отрицательного - "поглащает" урон
  350.                 {
  351.                     enemyDamage -= waterElementalDamage / 2;
  352.                     Console.ForegroundColor = ConsoleColor.Blue;
  353.                     if (enemyDamage >=0 ) Console.WriteLine("Водяной элементаль мешает Узнику провести атаку\n");
  354.                     if (enemyDamage < 0) Console.WriteLine("Водяной элементаль поглощает урон Узника");
  355.                     waterElementalAbility = false;
  356.                 }
  357.  
  358.                 // Урон по игроку
  359.                 playerHealth -= enemyDamage;
  360.                 Console.ForegroundColor = ConsoleColor.DarkRed;
  361.                 Console.WriteLine("Узник наносит " + enemyDamage + " урона и у Вас остается " + playerHealth + " хп!\n");
  362.  
  363.                 if (fireElementalAbility == true) // способность Огненного Элементаля, который наносит постепенный урон Врагу
  364.                 {
  365.                     Console.ForegroundColor = ConsoleColor.Red;
  366.                     Console.WriteLine("Узник горит!\n");
  367.                     fireShrapnel = rand.Next(10, 20);
  368.                     enemyHealth -= fireShrapnel;
  369.                     fireElementalAbility = false;
  370.                     Console.WriteLine("Огненная Шрапнель нанесла " + fireShrapnel + " урона!");
  371.                 }
  372.             }
  373.  
  374.             //Смерть
  375.             if (playerHealth <= 0)
  376.             {
  377.                 Console.ForegroundColor = ConsoleColor.DarkYellow;
  378.                 Console.WriteLine("Вы умерли");
  379.             }
  380.             else if (enemyHealth <= 0)
  381.             {
  382.                 Console.ForegroundColor = ConsoleColor.DarkYellow;
  383.                 Console.WriteLine("Узник повержен!");
  384.             }
  385.         }
  386.     }
  387. }
  388.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement