Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ConsoleApp18
- {
- class Program
- {
- static void Main(string[] args)
- {
- //игрок
- char playerInput;
- int playerHealth = 100;
- //использование 1-ой способности
- char playerAbilitySummonElemental;
- bool banAbilitySummonElemental = false;
- // Элементали, с помощью которых будет наноситься урон Врагу
- int earthElementalDamage = 0;
- int difficultToStun = 0; // сложность способности
- int earthElementalDurability = 0; // запас прочности элементаля
- bool earthElementalAbility = false;
- bool pickEarthElemetal = false;
- int waterElementalDamage = 0;
- int difficultToCold = 0;
- int waterElementalDurability = 0;
- bool waterElementalAbility = false;
- bool pickWaterElemetal = false;
- int fireElementalDamage = 0;
- int difficultToBurn = 0;
- int fireShrapnel = 0;
- int fireElementalDurability = 0;
- bool fireElementalAbility = false;
- bool pickFireElemetal = false;
- // 2-ая способность
- char playerAbilitySwapElemental;
- // Ограниченный запас "аптечек"
- int playerAbilityUseHealh = 5;
- bool playerAbilityEscape = false;
- int difficultToEscape = 0;
- //Враг
- int enemyHealth = 500;
- int enemyDamage = 0;
- Random rand = new Random();
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.WriteLine("Вы - Путник, который пробирается все дальше вглубь подземелья.\n" +
- "Спустя некоторое время вы натыкаетесь на врата нечеловеческих размеров...");
- Console.WriteLine("Вы проверяете свою сумку и находите 3 свитка заклинания вместе с подсумком: \n"
- + "1 - Призвать Элементаля\n"
- + "2 - Поменять Элементаля\n"
- + "3 - Использовать способность Элементаля\n"
- + "4 - Использовать лечебную мазь\n");
- Console.ForegroundColor = ConsoleColor.Yellow;
- Console.Write(" \"Открыть врата\"? \n");
- Console.ReadLine();
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.WriteLine("Пришло время сражаться\n");
- Console.ForegroundColor = ConsoleColor.White;
- while (playerHealth >= 0 && enemyHealth >= 0)
- {
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WriteLine($"Ваше Здоровье: {playerHealth}.");
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.WriteLine($"Здоровье Узника: {enemyHealth}\n");
- //Ход Игрока
- Console.ForegroundColor = ConsoleColor.White;
- Console.Write("\"Ваши действия\": ");
- playerInput = Convert.ToChar(Console.ReadLine());
- switch (playerInput)
- {
- case '1': // 1 способность
- if (banAbilitySummonElemental == true)
- {
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.WriteLine("Вы уже призвали на поле боя Элементаля!");
- break;
- }
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.WriteLine("Вы тяните руку к свитку...");
- Console.WriteLine("\"Призовите\":\n"
- + "z - \"Земляного элементаля\"\n"
- + "x - \"Водяного элементаля\"\n"
- + "c - \"Огненного элемнталя\"\n");
- Console.ForegroundColor = ConsoleColor.White;
- Console.Write("Выбор: ");
- playerAbilitySummonElemental = Convert.ToChar(Console.ReadLine());
- switch (playerAbilitySummonElemental)
- {
- case 'z':
- Console.ForegroundColor = ConsoleColor.Gray;
- Console.WriteLine("Рядом с вами появился \"Земляной элементаль\", Теперь вы можете его использовать!\n");
- pickEarthElemetal = true;
- banAbilitySummonElemental = true;
- earthElementalDurability = rand.Next(2, 5); // создаем прочность элементаля
- break;
- case 'x':
- Console.ForegroundColor = ConsoleColor.Blue;
- Console.WriteLine("Рядом с вами появился \"Водяной элементаль\", Теперь вы можете его использовать!\n");
- banAbilitySummonElemental = true;
- pickWaterElemetal = true;
- waterElementalDurability = rand.Next(2, 7);
- break;
- case 'c':
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("Рядом с вами появился \"Огненный элементаль\", Теперь вы можете его использовать!\n");
- banAbilitySummonElemental = true;
- pickFireElemetal = true;
- fireElementalDurability = rand.Next(2, 6);
- break;
- default:
- Console.WriteLine("У вас не вышло произнести заклинание!");
- break;
- }
- break;
- case '2': // 2 способность
- if (banAbilitySummonElemental == false)
- {
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.WriteLine("Вы не призвали элементаля!\n");
- break;
- }
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Вы решаете поменять элементаля на ... ");
- Console.WriteLine("z - \"Земляного элементаля\"\n"
- + "x - \"Водяного элементаля\"\n"
- + "c - \"Огненного элемнталя\"\n");
- Console.Write("Выбор: ");
- playerAbilitySwapElemental = Convert.ToChar(Console.ReadLine());
- switch (playerAbilitySwapElemental)
- {
- case 'z': // выбор на земляного
- if (pickFireElemetal == true || pickWaterElemetal == true)
- {
- pickEarthElemetal = true;
- pickFireElemetal = false;
- pickWaterElemetal = false;
- difficultToStun = 0; // при смене элементаля сложность обнуляется
- earthElementalDurability = rand.Next(2, 5);
- Console.ForegroundColor = ConsoleColor.Gray;
- Console.WriteLine("Вы призвали Земляного Элементаля!");
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.Gray;
- Console.WriteLine("Вы УЖЕ призвали на поле боя Земляного Элементаля!");
- }
- break;
- case 'x': // выбор на водяного
- if (pickEarthElemetal == true || pickFireElemetal == true)
- {
- pickWaterElemetal = true;
- pickEarthElemetal = false;
- pickFireElemetal = false;
- difficultToCold = 0;
- waterElementalDurability = rand.Next(2, 6);
- Console.ForegroundColor = ConsoleColor.Blue;
- Console.WriteLine("Вы призвали Водяного Элементаля!");
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.Blue;
- Console.WriteLine("Вы УЖЕ призвали на поле боя Водяного Элементаля!");
- }
- break;
- case 'c': // выбор на огненного
- if (pickEarthElemetal == true || pickWaterElemetal == true)
- {
- pickFireElemetal = true;
- pickEarthElemetal = false;
- pickWaterElemetal = false;
- difficultToBurn = 0;
- fireElementalDurability = rand.Next(2, 6);
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("Вы призвали Огненного Элементаля!");
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("Вы УЖЕ призвали на поле боя Огненного Элементаля!");
- }
- break;
- default:
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("У вас не вышло произнести заклинание!");
- break;
- }
- break;
- case '3': // 3 способность
- if (banAbilitySummonElemental == false)
- {
- Console.WriteLine("Призовите Элементаля!\n");
- break;
- }
- if (pickEarthElemetal == true)
- {
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.WriteLine("Элементаль содрогает землю и кидает булыжник огромных размеров в Узника!");
- earthElementalDamage = rand.Next(35, 45);
- enemyHealth -= earthElementalDamage;
- if (rand.Next(1, 11) > (5 + difficultToStun)) // шанс оглушить Врага, который с каждой попыткой усложняется
- {
- earthElementalAbility = true;
- difficultToStun++;
- }
- else // если промахнулся, то обнуляем сложность
- {
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Элементаль не смог прогреметь заклинание\n");
- difficultToStun = 0;
- }
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.WriteLine("Булыжник наносит: " + earthElementalDamage + " урона\n");
- earthElementalDurability--; // Уменьшается "прочность" элементаля каждый раз, когда исп. способность
- if (earthElementalDurability <= 0) // Если прочность достигла нуля
- {
- Console.ForegroundColor = ConsoleColor.DarkMagenta;
- Console.WriteLine("Свиток не выдерживает силы и рассыпается!");
- pickEarthElemetal = false;
- banAbilitySummonElemental = false;
- }
- }
- else if (pickWaterElemetal == true)
- {
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.WriteLine("Элементаль проводит водяную атаку");
- waterElementalDamage = rand.Next(35, 50);
- enemyHealth -= waterElementalDamage;
- if (rand.Next(1, 11) > (5 + difficultToCold))
- {
- waterElementalAbility = true;
- difficultToCold++;
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Элементаль не смог пробурлить заклинание\n");
- difficultToCold = 0;
- }
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.WriteLine("Поток наносит: " + waterElementalDamage + " урона\n");
- waterElementalDurability--;
- if (waterElementalDurability <= 0)
- {
- Console.ForegroundColor = ConsoleColor.DarkMagenta;
- Console.WriteLine("Свиток не выдержал силы и промок!");
- pickWaterElemetal = false;
- banAbilitySummonElemental = false;
- }
- }
- else if (pickFireElemetal == true)
- {
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.WriteLine("Элементаль накаляет воздух и проводит огненную атаку!");
- fireElementalDamage = rand.Next(45, 61);
- enemyHealth -= fireElementalDamage;
- if (rand.Next(1, 14) > (3 + difficultToBurn))
- {
- fireElementalAbility = true;
- difficultToBurn++;
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.DarkMagenta;
- Console.WriteLine("Элементаль не смог проискрить заклинание\n");
- difficultToBurn = 0;
- }
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.WriteLine("Огненный шар наносит: " + fireElementalDamage + " урона\n");
- fireElementalDurability--;
- if (fireElementalDurability <= 0)
- {
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Свиток не выдержал силы и сгорел!");
- pickFireElemetal = false;
- banAbilitySummonElemental = false;
- }
- }
- break;
- case '4': // лечебная мазь
- if (playerAbilityUseHealh > 0)
- {
- playerHealth += rand.Next(45, 70);
- if (playerHealth > 100) playerHealth = 100;
- if (rand.Next(1, 11) > (5 + difficultToEscape)) // шанс не получить урона при лечении, который усложняется при каждой успешной попытке
- {
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WriteLine("Вы успели спрятаться!");
- playerAbilityEscape = true;
- difficultToEscape++;
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Попытка спрятаться не удалась!");
- difficultToEscape = 0; // обнуляем сложность
- }
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WriteLine("Вы используете лечебную мазь и теперь у вас " + playerHealth + " хп\n");
- }
- else // если закончились "аптечки"
- {
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Вы опускаете руку в сумку и не находите лечебную мазь!\n");
- }
- break;
- default:
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Выбрали неверное действие! Ход Узника...\n");// При любом неверном вводе
- break;
- }
- //Способности
- if (earthElementalAbility == true) // способность Земляного Элементаля
- {
- Console.ForegroundColor = ConsoleColor.Gray;
- Console.WriteLine("Узник оглушен и пропускает свой ход!\n");
- earthElementalAbility = false;
- continue;
- }
- if (playerAbilityEscape == true) //способность спрятаться от урона при лечении
- {
- playerAbilityEscape = false;
- continue;
- }
- //Ход Врага
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Ход Узника!");
- enemyDamage = rand.Next(15, 36);
- if (waterElementalAbility == true) // способность Водяного Элементаля, который уменьшает урон Врага, в случае отрицательного - "поглащает" урон
- {
- enemyDamage -= waterElementalDamage / 2;
- Console.ForegroundColor = ConsoleColor.Blue;
- if (enemyDamage >=0 ) Console.WriteLine("Водяной элементаль мешает Узнику провести атаку\n");
- if (enemyDamage < 0) Console.WriteLine("Водяной элементаль поглощает урон Узника");
- waterElementalAbility = false;
- }
- // Урон по игроку
- playerHealth -= enemyDamage;
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.WriteLine("Узник наносит " + enemyDamage + " урона и у Вас остается " + playerHealth + " хп!\n");
- if (fireElementalAbility == true) // способность Огненного Элементаля, который наносит постепенный урон Врагу
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("Узник горит!\n");
- fireShrapnel = rand.Next(10, 20);
- enemyHealth -= fireShrapnel;
- fireElementalAbility = false;
- Console.WriteLine("Огненная Шрапнель нанесла " + fireShrapnel + " урона!");
- }
- }
- //Смерть
- if (playerHealth <= 0)
- {
- Console.ForegroundColor = ConsoleColor.DarkYellow;
- Console.WriteLine("Вы умерли");
- }
- else if (enemyHealth <= 0)
- {
- Console.ForegroundColor = ConsoleColor.DarkYellow;
- Console.WriteLine("Узник повержен!");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement