Vastimofeev

Урок 2 задача 7

Jan 24th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 28.59 KB | None | 0 0
  1. namespace Задача_7
  2.     {
  3.         class Program
  4.         {
  5.             static void Main(string[] args)
  6.             {
  7.                 /*     -------Hotfix 25.01.2019----------
  8.                     1) Теперь Драгуслейв корректно уходит в кд. Увеличен откат до 3 ходов.
  9.                     2) "Да будет свет" Гаури - время действия снижено до 2 ходов. Откат 3 хода.
  10.                     2) Распознавание команды больше не зависит от регистра. Мы бережем ваши нервы.
  11.                     3) Теперь команды можно вводить номером (например 1, 2 и т.д.).
  12.                 */
  13.  
  14.  
  15.                 Console.WriteLine("ШАБРАНИГДУ ПРОБУДИЛСЯ!\nУдастся ли Великой Лине \"Дажедре\" Инверс и её спутнику Гаури Габриеву одержать победу?\nПринимите командование на себя, бросьте вызов Рубиноокому Повелителю Тьмы!");
  16.                 Console.WriteLine();
  17.                 Console.WriteLine("Каждый ход Лина и Гаури могут совершить по одному действию. Если один из них атакует, второй атаковать не может. У Лины 75 очков здоровья, у Гаури 130. После атаки, Шабранигду наносит 35 урона нападавшему. Если никто не атакует, наносит массовую атаку в 20 урона. Если Лина или Гаури умрет, Шабранигду уничтожит мир! У Шабранигду 1000 хп");
  18.                 Console.WriteLine();
  19.                 Console.WriteLine("Доступные действия Лины Инверс:\n1)Драгуслейв - Мощное заклинание наносящее 200 урона. Откат 3 хода.\n2)Фаербол - Простая атака огенным шаром. Наносит 70 урона.\n3)Селфхил - Самолечение. Востанавливает 20 здоровья.\n4)Хил Гаури - Востанавливает 30 здоровья Гаури.");
  20.                 Console.WriteLine();
  21.                 Console.WriteLine("Доступные действия Гаури Габриева:\n1)Да будет свет - Активирует световой меч.  Длительность 2 хода. Откат 3 хода.\n2)Атака - Простая атака мечом. Наносит 20 урона. Если активирован световой меч, вместо это наносит 100 урона.\n3)Выпить зелье - Востанавливает 50 здоровья\n4)Блок - Снижает урон Шабранигду до 10 единиц. В этот ход невозможно атаковать.");
  22.                 Console.WriteLine();
  23.                 Console.WriteLine("От Вас зависит судьба мира! Победите Шабранигду, Спасите человечество!");
  24.  
  25.  
  26.                 int hp_boss = 1000;
  27.                 int hp_lina = 75;
  28.                 int hp_gauri = 130;
  29.                 int Dragonslayer_cd = 0;
  30.                 int Light_sword_cd = 0;
  31.                 int Light_sword_duration = 0;
  32.                 while (hp_boss > 0 && hp_lina > 0 && hp_gauri > 0)
  33.                 {
  34.                     string current_action_lina = "";
  35.                     string current_action_gauri = "";
  36.                     int lina_status = 0;
  37.                     int gauri_status = 0;
  38.                     Light_sword_duration--;
  39.                     Dragonslayer_cd--;
  40.                     Light_sword_cd--;
  41.                     if (Light_sword_cd < 0) Light_sword_cd = 0;
  42.                     if (Dragonslayer_cd < 0) Dragonslayer_cd = 0;
  43.                     if (Light_sword_duration < 0) Light_sword_duration = 0;
  44.                     if (hp_lina > 75) hp_lina = 75;
  45.                     if (hp_gauri > 130) hp_gauri = 130;
  46.                     //Вывод статуса
  47.                     Console.WriteLine();
  48.                     if (Dragonslayer_cd == 0)
  49.                     {
  50.                         if (Light_sword_cd > 0)
  51.                         {
  52.                             if (Light_sword_duration > 0)
  53.                                 Console.WriteLine("Статус:\nУ Лины {0} очков здоровья, Драгуслейв готов\nУ Гаури {1} здоровья. Световой меч активирован\nУ Шабранигду сталось {2} здоровья", hp_lina, hp_gauri, hp_boss);
  54.                             else
  55.                                 Console.WriteLine("Статус:\nУ Лины {0} очков здоровья, Драгуслейв готов\nУ Гаури {1} здоровья. Световой меч не активирован. Активация не готова.\nУ Шабранигду сталось {2} здоровья", hp_lina, hp_gauri, hp_boss);
  56.                         }
  57.                         else Console.WriteLine("Статус:\nУ Лины {0} очков здоровья, Драгуслейв готов\nУ Гаури {1} здоровья. Световой меч не активирован. Можно активировать.\nУ Шабранигду сталось {2} здоровья", hp_lina, hp_gauri, hp_boss);
  58.                     }
  59.                     else
  60.                     {
  61.                         if (Light_sword_cd > 0)
  62.                         {
  63.                             if (Light_sword_duration > 0)
  64.                                 Console.WriteLine("Статус:\nУ Лины {0} очков здоровья, Драгуслейв не готов\nУ Гаури {1} здоровья. Световой меч активирован\nУ Шабранигду сталось {2} здоровья", hp_lina, hp_gauri, hp_boss);
  65.                             else
  66.                                 Console.WriteLine("Статус:\nУ Лины {0} очков здоровья, Драгуслейв не готов\nУ Гаури {1} здоровья. Световой меч не активирован. Активация не готова.\nУ Шабранигду сталось {2} здоровья", hp_lina, hp_gauri, hp_boss);
  67.                         }
  68.                         else Console.WriteLine("Статус:\nУ Лины {0} очков здоровья, Драгуслейв не готов\nУ Гаури {1} здоровья. Световой меч не активирован. Можно активировать. \nУ Шабранигду сталось {2} здоровья", hp_lina, hp_gauri, hp_boss);
  69.                     }
  70.                        
  71.                     //Выбор действий
  72.                     Console.WriteLine();
  73.                     while ((lina_status == 0) || (gauri_status == 0))
  74.                     {
  75.                         Console.Write("Выберите персонажа(Лина/Гаури): ");
  76.                         string current_character = Console.ReadLine();
  77.                         switch (current_character.ToLower())
  78.                         {
  79.                             case "1":
  80.                             case "лина":
  81.                                 while (lina_status == 0)
  82.                                 {
  83.                                     //Выбор действий Лины до Гаури
  84.                                     Console.Write("Выберите действие для Лины: ");
  85.                                     current_action_lina = Console.ReadLine();
  86.                                     switch (current_action_lina.ToLower())
  87.                                     {
  88.                                         case "1":
  89.                                         case "драгуслейв":
  90.                                             if (Dragonslayer_cd < 1)
  91.                                             {
  92.                                                 hp_boss -= 200;
  93.                                                 lina_status = 1;
  94.                                                 Dragonslayer_cd = 4;
  95.                                             }
  96.                                             else Console.WriteLine("Драгуслейв на кулдауне. Осталось {0} ходов.", Dragonslayer_cd);
  97.                                             break;
  98.  
  99.                                         case "2":
  100.                                         case "фаербол":
  101.                                             hp_boss -= 70;
  102.                                             lina_status = 2;
  103.                                             break;
  104.  
  105.                                         case "3":
  106.                                         case "селфхил":
  107.                                             hp_lina += 20;
  108.                                             lina_status = 3;
  109.                                             break;
  110.  
  111.                                         case "4":
  112.                                         case "хил гаури":
  113.                                             hp_gauri += 30;
  114.                                             lina_status = 4;
  115.                                             break;
  116.  
  117.                                         case "список":
  118.                                             Console.WriteLine();
  119.                                             Console.WriteLine("Доступные действия Лины Инверс:\n1)Драгуслейв - Мощное заклинание наносящее 200 урона. Откат 2 хода.\n2)Фаербол - Простая атака огенным шаром. Наносит 70 урона.\n3)Селфхил - Самолечение. Востанавливает 20 здоровья.\n4)Хил Гаури - Востанавливает 30 здоровья Гаури.");
  120.                                             Console.WriteLine();
  121.                                             break;
  122.  
  123.                                         default:
  124.                                             Console.WriteLine("Не правильное действие. Для вывода списка действий введите 'список'. Регистр учитывается");
  125.                                             break;
  126.                                     }
  127.                                 }
  128.                                 while (gauri_status == 0)
  129.                                 {
  130.                                     //Выбор действий Гаури после Лины
  131.                                     Console.Write("Выберите действие для Гаури: ");
  132.                                     current_action_gauri = Console.ReadLine();
  133.                                     switch (current_action_gauri)
  134.                                     {
  135.                                         case "1":
  136.                                         case "да будет свет":
  137.                                             if (Light_sword_cd == 0)
  138.                                             {
  139.                                                 Light_sword_cd = 4;
  140.                                                 Light_sword_duration = 3;
  141.                                                 gauri_status = 1;
  142.                                             } else Console.WriteLine("Световой меч на кулдауне. Осталось {0} ходов.", Light_sword_cd);
  143.                                             break;
  144.  
  145.                                         case "2":
  146.                                         case "атака":
  147.                                             if (lina_status == 1 || lina_status == 2) Console.WriteLine("Лина уже атакует. Выберите другое действие.");
  148.                                             else
  149.                                             {
  150.                                                 if (Light_sword_duration != 0)
  151.                                                 {
  152.                                                     hp_boss -= 100;
  153.                                                     gauri_status = 2;
  154.                                                 }
  155.                                                 else
  156.                                                 {
  157.                                                     hp_boss -= 20;
  158.                                                     gauri_status = 3;
  159.                                                 }
  160.                                                 break;
  161.                                             }
  162.                                             break;
  163.  
  164.                                         case "3":
  165.                                         case "выпить зелье":
  166.                                             hp_gauri += 50;
  167.                                             gauri_status = 4;
  168.                                             break;
  169.  
  170.                                         case "4":
  171.                                         case "блок":
  172.                                             if (lina_status == 1 || lina_status == 2) Console.WriteLine("Лина уже атакует. Выберите другое действие.");
  173.                                             else
  174.                                             {
  175.                                                 gauri_status = 5;
  176.                                             }
  177.                                             break;
  178.  
  179.                                         case "список":
  180.                                             Console.WriteLine();
  181.                                             Console.WriteLine("Доступные действия Гаури Габриева:\n1)Да будет свет - Активирует световой меч.  Длительность 3 хода.\n2)Атака - Простая атака мечом. Наносит 20 урона. Если активирован световой меч, вместо это наносит 100 урона.\n3)Выпить зелье - Востанавливает 50 здоровья\n4)Блок - Снижает урон Шабранигду до 10 единиц. В этот ход невозможно атаковать.");
  182.                                             Console.WriteLine();
  183.                                             break;
  184.  
  185.                                         default:
  186.                                             Console.WriteLine("Не правильное действие. Для вывода списка действий введите 'список'. Регистр учитывается");
  187.                                             break;
  188.                                     }
  189.                                 }
  190.                                 break;
  191.  
  192.                             case "2":
  193.                             case "гаури":
  194.                                 while (gauri_status == 0)
  195.                                 {
  196.                                     // Выбор действий Гаури до Лины
  197.                                     Console.Write("Выберите действие для Гаури: ");
  198.                                     current_action_gauri = Console.ReadLine();
  199.                                     switch (current_action_gauri)
  200.                                     {
  201.                                         case "1":
  202.                                         case "да будет свет":
  203.                                             if (Light_sword_cd == 0)
  204.                                             {
  205.                                                 Light_sword_cd = 4;
  206.                                                 Light_sword_duration = 3;
  207.                                                 gauri_status = 1;
  208.                                             }
  209.                                             else Console.WriteLine("Световой меч на кулдауне. Осталось {0} ходов.", Light_sword_cd);
  210.                                             break;
  211.  
  212.                                         case "2":
  213.                                         case "атака":
  214.                                             if (Light_sword_duration != 0)
  215.                                             {
  216.                                                 hp_boss -= 100;
  217.                                                 gauri_status = 2;
  218.                                             }
  219.                                             else
  220.                                             {
  221.                                                 hp_boss -= 20;
  222.                                                 gauri_status = 3;
  223.                                             }
  224.                                             break;
  225.  
  226.                                         case "3":
  227.                                         case "выпить зелье":
  228.                                             hp_gauri += 50;
  229.                                             gauri_status = 4;
  230.                                             break;
  231.  
  232.                                         case "4":
  233.                                         case "блок":
  234.                                             gauri_status = 5;
  235.                                             break;
  236.  
  237.                                         case "список":
  238.                                             Console.WriteLine();
  239.                                             Console.WriteLine("Доступные действия Гаури Габриева:\n1)Да будет свет - Активирует световой меч.  Длительность 3 хода.\n2)Атака - Простая атака мечом. Наносит 20 урона. Если активирован световой меч, вместо это наносит 100 урона.\n3)Выпить зелье - Востанавливает 50 здоровья\n4)Блок - Снижает урон Шабранигду до 10 единиц. В этот ход невозможно атаковать.");
  240.                                             Console.WriteLine();
  241.                                             break;
  242.  
  243.                                         default:
  244.                                             Console.WriteLine("Не правильное действие. Для вывода списка действий введите 'список'. Регистр учитывается");
  245.                                             break;
  246.                                     }
  247.                                 }
  248.                                 while (lina_status == 0)
  249.                                 {
  250.                                     //Выбор действий Лины после Гаури
  251.                                     Console.Write("Выберите действие для Лины: ");
  252.                                     current_action_lina = Console.ReadLine();
  253.                                     switch (current_action_lina)
  254.                                     {
  255.                                         case "1":
  256.                                         case "драгуслейв":
  257.                                             if (gauri_status == 2 || gauri_status == 3 || gauri_status == 4) Console.WriteLine("Гаури уже атакует. Выберите другое действие.");
  258.                                             else
  259.                                             {
  260.                                                 if (Dragonslayer_cd == 0)
  261.                                                 {
  262.                                                     hp_boss -= 200;
  263.                                                     lina_status = 1;
  264.                                                     Dragonslayer_cd = 4;
  265.                                                 }
  266.                                                 else Console.WriteLine("Драгуслейв на кулдауне. Осталось {0} ходов.", Dragonslayer_cd);
  267.                                             }
  268.                                             break;
  269.  
  270.                                         case "2":
  271.                                         case "фаербол":
  272.                                             if (gauri_status == 2 || gauri_status == 3 || gauri_status == 4) Console.WriteLine("Гаури уже атакует. Выберите другое действие.");
  273.                                             else
  274.                                             {
  275.                                                 hp_boss += 70;
  276.                                                 lina_status = 2;
  277.                                                 break;
  278.                                             }
  279.                                             break;
  280.  
  281.                                         case "3":
  282.                                         case "селфхил":
  283.                                             hp_lina += 20;
  284.                                             lina_status = 3;
  285.                                             break;
  286.  
  287.                                         case "4":
  288.                                         case "хил гаури":
  289.                                             hp_gauri += 30;
  290.                                             lina_status = 4;
  291.                                             break;
  292.  
  293.                                         case "список":
  294.                                             Console.WriteLine();
  295.                                             Console.WriteLine("Доступные действия Лины Инверс:\n1)Драгуслейв - Мощное заклинание наносящее 200 урона. Откат 2 хода.\n2)Фаербол - Простая атака огенным шаром. Наносит 70 урона.\n3)Селфхил - Самолечение. Востанавливает 20 здоровья.\n4)Хил Гаури - Востанавливает 30 здоровья Гаури.");
  296.                                             Console.WriteLine();
  297.                                             break;
  298.  
  299.                                         default:
  300.                                             Console.WriteLine("Не правильное действие. Для вывода списка действий введите 'список'. Регистр учитывается");
  301.                                             break;
  302.                                     }
  303.                                 }
  304.                                 break;
  305.  
  306.                             default:
  307.                                 Console.WriteLine("Не правильное имя персонажа. Пожалуйста введите имя 'Лина' или 'Гаури'. Регистр учитывается");
  308.                                 break;
  309.  
  310.                         }
  311.                     }
  312.  
  313.                     //Вывод действий
  314.                     Console.WriteLine();
  315.                     switch (lina_status)
  316.                     {
  317.                         case 1:
  318.                             Console.WriteLine("Лина использует Драгуслейв! Мощное заклинание наносит 200 урона Шабранигду.");
  319.                             break;
  320.  
  321.                         case 2:
  322.                             Console.WriteLine("Лина использует Фаербол. Огненный шар наносит 70 урона Шабранигду.");
  323.                             break;
  324.  
  325.                         case 3:
  326.                             Console.WriteLine("Лина лечится на 20 здоровья.");
  327.                             break;
  328.  
  329.                         case 4:
  330.                             Console.WriteLine("Лина восстанавливает 30 здоровья Гаури");
  331.                             break;
  332.  
  333.                     }
  334.  
  335.                     switch (gauri_status)
  336.                     {
  337.                         case 1:
  338.                             Console.WriteLine("Гаури активирует световой меч!");
  339.                             break;
  340.  
  341.                         case 2:
  342.                             Console.WriteLine("Гаури атакует световым мечом! Мощная атака наносит 100 урона Шабранигду.");
  343.                             break;
  344.  
  345.                         case 3:
  346.                             Console.WriteLine("Гаури совершает обычную атаку. Наносит 20 урона Шабранигду.");
  347.                             break;
  348.  
  349.                         case 4:
  350.                             Console.WriteLine("Гаури выпивает зелье. Востановливает 50 здоровья.");
  351.                             break;
  352.  
  353.                         case 5:
  354.                             Console.WriteLine("Гаури принимает оборонительную стойку.");
  355.                             break;
  356.  
  357.                     }
  358.  
  359.                     //Атака босса
  360.                     if (hp_boss > 0)
  361.                     {
  362.                         //Атака по Лине
  363.                         switch (lina_status)
  364.                         {
  365.                             case 1:
  366.                                 if (hp_lina > 75) hp_lina = 40;
  367.                                 else hp_lina -= 35;
  368.                                 Console.WriteLine("Шабранигду атакует Лину.");
  369.                                 break;
  370.                             case 2:
  371.                                 if (hp_lina > 75) hp_lina = 40;
  372.                                 else hp_lina -= 35;
  373.                                 Console.WriteLine("Шабранигду атакует Лину.");
  374.                                 break;
  375.  
  376.                         }
  377.  
  378.                         //Атака по Гаури
  379.                         switch (gauri_status)
  380.                         {
  381.                             case 2:
  382.                                 if (hp_gauri > 130) hp_gauri = 95;
  383.                                 else hp_gauri -= 35;
  384.                                 Console.WriteLine("Шабранигду атакует Гаури.");
  385.                                 break;
  386.                             case 3:
  387.                                 if (hp_gauri > 130) hp_gauri = 95;
  388.                                 else hp_gauri -= 35;
  389.                                 Console.WriteLine("Шабранигду атакует Лину.");
  390.                                 break;
  391.                             case 5:
  392.                                 if (hp_gauri > 130) hp_gauri = 120;
  393.                                 else hp_gauri -= 10;
  394.                                 Console.WriteLine("Гаури блокирует атаку Шабранигду.");
  395.                                 break;
  396.                         }
  397.  
  398.                         //Массовая атака
  399.                         if ((lina_status == 3 || lina_status == 4) && (gauri_status == 1 || gauri_status == 4))
  400.                         {
  401.                             if (hp_lina > 75) hp_lina = 55;
  402.                             else hp_lina -= 20;
  403.                             if (hp_gauri > 130) hp_gauri = 110;
  404.                             else hp_gauri -= 20;
  405.                             Console.WriteLine("Никто не атаковал. Шабранигду наносит массовую атаку!");
  406.                         }
  407.  
  408.                     }
  409.  
  410.                 }
  411.  
  412.                 //Завершение игры
  413.                 Console.WriteLine();
  414.                 if (!(hp_boss > 0))
  415.                 {
  416.                     Console.WriteLine("Поздравляю! Шабранигду повержен! Мир спасен!\nВы герой человечества!");
  417.                     Console.ReadKey();
  418.                 }
  419.                 else if (!(hp_lina > 0))
  420.                 {
  421.                     Console.WriteLine("Лина погибла! Игра окончена.");
  422.                     Console.ReadKey();
  423.                 }
  424.                 else
  425.                 {
  426.                     Console.WriteLine("Гаури погиб! Игра окончена.");
  427.                     Console.ReadKey();
  428.                 }
  429.  
  430.             }
  431.         }
  432. }
Advertisement
Add Comment
Please, Sign In to add comment