Advertisement
IGRODELOFF

Task14.2

Mar 21st, 2022 (edited)
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 27.42 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace _14._2
  8. {
  9.     internal class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Random random = new Random();
  14.  
  15.             float healthHero;
  16.             float healthBoss;
  17.             float damageWither;
  18.             float damageVampirism;
  19.             float healingHeroFromHealthHero;
  20.             float percentageHealingHeroFromHealthHero = 0.10f;
  21.             float bossHealthPercentageDamageFromWither = 0.20f;
  22.             float bossHealthPercentageDamageFromVampirism = 0.10f;
  23.             float percentagesVampirismDamage;
  24.             float percentagesVampirismHealing;
  25.             float percentagesWitherDamage;
  26.  
  27.             int oneHundredPercent = 100;
  28.             int startValue = 0;
  29.             int halfHeroHealth = 250;
  30.             int roundCount = 0;
  31.             int healthHeroMax = 500;
  32.             int healingRazlom = 250;
  33.             int bossDamage;
  34.             int bossDamageMin = 90;
  35.             int bossDamageMax = 151;
  36.             int selfDamageRashamon = 100;
  37.             int damageHuranzakura;
  38.             int damageHuranzakuraMin = 100;
  39.             int damageHuranzakuraMax = 151;
  40.             int ultimateDamage = 500;
  41.             int ultimateDamageCount = 0;
  42.             int ultimateDamageCountMax = 5;
  43.             int countdownHuranzakura = 1;
  44.             int countdownHuranzakuraCount = 1;
  45.             int countdownWither = 2;
  46.             int countdownWitherCount = 2;
  47.             int countdownRazlom = 3;
  48.             int countdownRazlomCount = 3;
  49.             int countdownVampirism = 2;
  50.             int countdownVampirismCount = 2;
  51.             int numberRoundsActionsWither = 2;
  52.             int numberRoundsActionsWitherCount = 0;
  53.             int numberRoundsActionsVampirism = 2;
  54.             int numberRoundsActionsVampirismCount = 0;
  55.  
  56.             healthBoss = random.Next(500, 1001);
  57.             healthHero = random.Next(100, 501);
  58.             percentagesVampirismDamage = bossHealthPercentageDamageFromVampirism * oneHundredPercent;
  59.             percentagesVampirismHealing = percentageHealingHeroFromHealthHero * oneHundredPercent;
  60.             percentagesWitherDamage = bossHealthPercentageDamageFromWither * oneHundredPercent;
  61.  
  62.  
  63.             string tie = "Ничья...";
  64.             string units = " ед.";
  65.             string heroLost = "Герой проиграл...";
  66.             string heroWin = "Герой победил! Ура! Ура! Ура!";
  67.             string requestEnterSpell = "\nВведите заклинание: ";
  68.             string damageAlertFirstPart = "По вам был нанесён урон в ";
  69.             string damageAlert;
  70.             string menuAbilities = "\n" +
  71.                 "====================================================================================================================================================================\n" +
  72.                 "|| Вам доступно несколько заклинаний:                                                                                                                             ||\n" +
  73.                 "|| Рашамон - призыв теневого духа для нанесения атаки Хуганзакура стоимость " + selfDamageRashamon + " хп (способность не является атакой!).                                             ||\n" +
  74.                 "|| Хуганзакура - Может быть выполнен только после призыва теневого духа. Наносит от " + damageHuranzakuraMin + " до " + damageHuranzakuraMax + " ед. урона. Перезарядка " + countdownHuranzakura + " раунд.                                    ||\n" +
  75.                 "|| Ульта - " + ultimateDamage + " единиц урона по боссу и полная защита от урона со стороны босса, но можно использовать после проведения " + ultimateDamageCountMax + " атак;                                    ||\n" +
  76.                 "|| Иссушение - наносит автоматический урон по боссу в " + percentagesWitherDamage + "% от его здоровья " + numberRoundsActionsWither + " раунда подряд, не работает с вампиризмом. Перезарядка " + countdownWither + " раунда.                       ||\n" +
  77.                 "|| Межпространственный разлом - позволяет скрыться в разломе и восстановить " + healingRazlom + " хп. Урон босса по вам не проходит, но и вы не наносите урон. Перезарядка " + countdownRazlom + " раунда.||\n" +
  78.                 "|| Вампиризм - наносит автоматический урон по боссу в " + percentagesVampirismDamage + "% от его здоровья " + numberRoundsActionsVampirism + " раунда подряд, а так же пополнение своего здоровья на " + percentagesVampirismHealing + "%. Перезарядка " + countdownVampirism + " раунда.      ||\n" +
  79.                 "====================================================================================================================================================================\n";
  80.             string reaload =
  81.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
  82.                 "! Способность перезаряжается !\n" +
  83.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
  84.             string noActivatedAbility =
  85.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
  86.                 "! Вы не активировали нужные способности для открытия этой !\n" +
  87.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
  88.             string activatedAbility = "Вы активироваили способность";
  89.             string activatedAbilityAgain =
  90.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
  91.                 "! Вы уже активировали данную способность !\n" +
  92.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
  93.             string ultimateNotAccumulated =
  94.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
  95.                 "! Ульта не накопилась (не было проведено " + ultimateDamageCountMax + " атак) !\n" +
  96.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
  97.             string incompatibleVampirism =
  98.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
  99.                 "! Нельзя активировать, при активированном вампиризме !\n" +
  100.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
  101.             string incompatibleWither =
  102.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
  103.                 "! Нельзя активировать, при активированном иссушении !\n" +
  104.                 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
  105.             string suchAbilityNo =
  106.                 "!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
  107.                 "! Такой способности нет !\n" +
  108.                 "!!!!!!!!!!!!!!!!!!!!!!!!!";
  109.             string separator = "====================================================================================================================================================================";
  110.             string abilityReadyHuranzakura = "Способность Хуганзакура готова!";
  111.             string abilityReadyRazlom = "Cпособность Межпространственный разлом готова!";
  112.             string abilityReadyUltimate = "Cпособность Ульта готова!";
  113.             string abilityReadyWither = "Cпособность Иссушение готова!";
  114.             string abilityReadyVampirism = "Cпособность Вампиризм готова!";
  115.             string healthBarHealthHero = " ваше здоровье, ";
  116.             string healthBarHealthBoss = " здоровье босса.\n";
  117.             string healthBar;
  118.             string ultimativeAttack = "Вы нанесли" + ultimateDamage + " ед. урона по боссу";
  119.             string informationFullRecoveryHealthRazlom = "Вы полностью восстановили своё здоровье.";
  120.             string InformationRecoveryHealthRazlomFirstPart = "Вы восстановили своё здоровье до ";
  121.             string InformationRecoveryHealthRazlom;
  122.             string informationRashamonDamageFirstPart = "Вы нанесли урона в ";
  123.             string informationRashamonDamage;
  124.             string informationActivatedWither = "Вы активировали иссушение. В последующие " + numberRoundsActionsWither + " раунда боссу будет наноситься урон в " + percentagesVampirismDamage + "% от его здоровья.";
  125.             string informationWhitherDamageFirstPart = "Иссушение нанесло урон в ";
  126.             string informationWhitherDamage;
  127.             string informationWhitherTermination = "Эффект иссушения прошёл, перезарядка " + countdownWither + " раунда.";
  128.             string informationVampirismActivated = "Вы активировали вампиризм. В последующие " + numberRoundsActionsVampirism + " раунда боссу будет наноситься урон в " + percentagesWitherDamage + "% от его здоровья. А вы будете лечиться на " + percentagesVampirismHealing + "% от своего здоровья.";
  129.             string informationVampirismDamageFirstPart = "Вампиризм нанёс урон в ";
  130.             string informationVampirismDamage;
  131.             string informationVampirismHealingHeroFirstPart = "Вампириз восстановил здоровье в ";
  132.             string informationVampirismHealingHero;
  133.             string infOrmationVampirismTermination = "Эффект вампиризма прошёл, перезарядка " + countdownVampirism + " раунда.";
  134.             string userInput;
  135.  
  136.             bool activatedRashamon = false;
  137.             bool activatedWither = false;
  138.             bool activatedVampirism = false;
  139.  
  140.             while (healthBoss > startValue && healthHero > startValue)
  141.             {
  142.                 roundCount++;
  143.                 healthBar = menuAbilities + "\n" + healthHero + healthBarHealthHero + healthBoss + healthBarHealthBoss;
  144.                 Console.WriteLine(separator);
  145.                 Console.WriteLine(roundCount);
  146.                 Console.WriteLine(healthBar);
  147.  
  148.                 if (activatedWither == true)
  149.                 {
  150.                     if (numberRoundsActionsWitherCount < numberRoundsActionsWither)
  151.                     {
  152.                         numberRoundsActionsWitherCount++;
  153.                         damageWither = healthBoss * bossHealthPercentageDamageFromWither;
  154.                         healthBoss -= damageWither;
  155.                         countdownWitherCount = startValue;
  156.                         informationWhitherDamage = informationWhitherDamageFirstPart + damageWither + units;
  157.                         Console.WriteLine(informationWhitherDamage);
  158.                     }
  159.                     else if (numberRoundsActionsWitherCount == numberRoundsActionsWither)
  160.                     {
  161.                         damageWither = healthBoss * bossHealthPercentageDamageFromWither;
  162.                         healthBoss -= damageWither;
  163.                         activatedWither = false;
  164.                         countdownWitherCount = startValue;
  165.                         numberRoundsActionsWitherCount = startValue;
  166.                         informationWhitherDamage = informationWhitherDamageFirstPart + damageWither + units;
  167.                         Console.WriteLine(informationWhitherDamage);
  168.                         Console.WriteLine(informationWhitherTermination);
  169.                     }
  170.                 }
  171.                 else if (activatedVampirism == true)
  172.                 {
  173.                     if (numberRoundsActionsVampirismCount < numberRoundsActionsVampirism)
  174.                     {
  175.                         numberRoundsActionsVampirismCount++;
  176.                         damageVampirism = healthBoss * bossHealthPercentageDamageFromVampirism;
  177.                         healthBoss -= damageVampirism;
  178.                         healingHeroFromHealthHero = healthHero * percentageHealingHeroFromHealthHero;
  179.                         healthHero += healingHeroFromHealthHero;
  180.                         countdownVampirismCount = startValue;
  181.                         informationVampirismDamage = informationVampirismDamageFirstPart + damageVampirism + units;
  182.                         informationVampirismHealingHero = informationVampirismHealingHeroFirstPart + healingHeroFromHealthHero + units;
  183.                         Console.WriteLine(informationVampirismDamage);
  184.                         Console.WriteLine(informationVampirismHealingHero);
  185.                     }
  186.                     else if (numberRoundsActionsVampirismCount == numberRoundsActionsVampirism)
  187.                     {
  188.                         damageVampirism = healthBoss * bossHealthPercentageDamageFromVampirism;
  189.                         healthBoss -= damageVampirism;
  190.                         healingHeroFromHealthHero = healthHero * percentageHealingHeroFromHealthHero;
  191.                         healthHero += healingHeroFromHealthHero;
  192.                         activatedVampirism = false;
  193.                         countdownVampirismCount = startValue;
  194.                         numberRoundsActionsVampirismCount = startValue;
  195.                         informationVampirismDamage = damageVampirism + informationVampirismDamageFirstPart + units;
  196.                         informationVampirismHealingHero = informationVampirismHealingHeroFirstPart + healingHeroFromHealthHero + units;
  197.                         Console.WriteLine(informationVampirismDamage);
  198.                         Console.WriteLine(informationVampirismHealingHero);
  199.                         Console.WriteLine(infOrmationVampirismTermination);
  200.                     }
  201.                 }
  202.  
  203.                 if (countdownHuranzakuraCount <= countdownHuranzakura && activatedRashamon == true)
  204.                 {
  205.                     countdownHuranzakuraCount++;
  206.                     if (countdownHuranzakuraCount < countdownHuranzakura)
  207.                     {
  208.                         countdownHuranzakuraCount++;
  209.                     }
  210.                     else
  211.                     {
  212.                         Console.WriteLine(abilityReadyHuranzakura);
  213.                     }
  214.                 }
  215.                 if (countdownWitherCount <= countdownWither)
  216.                 {
  217.                     if (countdownWitherCount < countdownWither)
  218.                     {
  219.                         countdownWitherCount++;
  220.                     }
  221.                     else
  222.                     {
  223.                         Console.WriteLine(abilityReadyWither);
  224.                     }
  225.                 }
  226.                 if (countdownRazlomCount <= countdownRazlom)
  227.                 {
  228.                     if (countdownRazlomCount < countdownRazlom)
  229.                     {
  230.                         countdownRazlomCount++;
  231.                     }
  232.                     else
  233.                     {
  234.                         Console.WriteLine(abilityReadyRazlom);
  235.                     }
  236.                 }
  237.                 if (countdownVampirismCount <= countdownVampirism)
  238.                 {
  239.                     if (countdownVampirismCount < countdownVampirism)
  240.                     {
  241.                         countdownVampirismCount++;
  242.                     }
  243.                     else
  244.                     {
  245.                         Console.WriteLine(abilityReadyVampirism);
  246.                     }
  247.                 }
  248.                 if (ultimateDamageCount >= ultimateDamageCountMax)
  249.                 {
  250.                     Console.WriteLine(abilityReadyUltimate);
  251.                 }
  252.  
  253.                 Console.Write(requestEnterSpell);
  254.                 userInput = Console.ReadLine();
  255.                 Console.WriteLine(separator);
  256.  
  257.                 switch (userInput)
  258.                 {
  259.                     case "Рашамон":
  260.                         if (activatedRashamon == false)
  261.                         {
  262.                             activatedRashamon = true;
  263.                             bossDamage = random.Next(bossDamageMin, bossDamageMax);
  264.                             healthHero -= bossDamage + selfDamageRashamon;
  265.                             damageAlert = damageAlertFirstPart + bossDamage + units;
  266.                             Console.WriteLine(activatedAbility);
  267.                             Console.WriteLine(damageAlert);
  268.                         }
  269.                         else
  270.                         {
  271.                             bossDamage = random.Next(bossDamageMin, bossDamageMax);
  272.                             healthHero -= bossDamage;
  273.                             damageAlert = damageAlertFirstPart + bossDamage + units;
  274.                             Console.WriteLine(activatedAbilityAgain);
  275.                             Console.WriteLine(damageAlert);
  276.                         }
  277.                         break;
  278.                     case "Хуганзакура":
  279.                         if (activatedRashamon == true)
  280.                         {
  281.                             if (countdownHuranzakuraCount >= countdownHuranzakura)
  282.                             {
  283.                                 bossDamage = random.Next(bossDamageMin, bossDamageMax);
  284.                                 healthHero -= bossDamage;
  285.                                 damageHuranzakura = random.Next(damageHuranzakuraMin, damageHuranzakuraMax);
  286.                                 healthBoss -= damageHuranzakura;
  287.                                 countdownHuranzakuraCount = startValue;
  288.                                 ultimateDamageCount++;
  289.                                 damageAlert = damageAlertFirstPart + bossDamage + units;
  290.                                 informationRashamonDamage = informationRashamonDamageFirstPart + damageHuranzakura + units;
  291.                                 Console.WriteLine(activatedAbility);
  292.                                 Console.WriteLine(damageAlert);
  293.                                 Console.WriteLine(informationRashamonDamage);
  294.                             }
  295.                             else
  296.                             {
  297.                                 bossDamage = random.Next(bossDamageMin, bossDamageMax);
  298.                                 healthHero -= bossDamage;
  299.                                 damageAlert = damageAlertFirstPart + bossDamage + units;
  300.                                 Console.WriteLine(reaload);
  301.                                 Console.WriteLine(damageAlert);
  302.                             }
  303.                         }
  304.                         else
  305.                         {
  306.                             bossDamage = random.Next(bossDamageMin, bossDamageMax);
  307.                             healthHero -= bossDamage;
  308.                             damageAlert = damageAlertFirstPart + bossDamage + units;
  309.                             Console.WriteLine(noActivatedAbility);
  310.                             Console.WriteLine(damageAlert);
  311.                         }
  312.                         break;
  313.                     case "Ульта":
  314.                         if (ultimateDamageCount >= ultimateDamageCountMax)
  315.                         {
  316.                             healthBoss -= ultimateDamage;
  317.                             ultimateDamageCount = startValue;
  318.                             Console.WriteLine(activatedAbility);
  319.                             Console.WriteLine(ultimativeAttack);
  320.                         }
  321.                         else
  322.                         {
  323.                             bossDamage = random.Next(bossDamageMin, bossDamageMax);
  324.                             healthHero -= bossDamage;
  325.                             damageAlert = damageAlertFirstPart + bossDamage + units;
  326.                             Console.WriteLine(ultimateNotAccumulated);
  327.                             Console.WriteLine(damageAlert);
  328.                         }
  329.                         break;
  330.                     case "Иссушение":
  331.                         if (activatedVampirism != true)
  332.                         {
  333.                             if (activatedWither == false)
  334.                             {
  335.                                 if (countdownWitherCount >= countdownWither)
  336.                                 {
  337.                                     activatedWither = true;
  338.                                     bossDamage = random.Next(bossDamageMin, bossDamageMax);
  339.                                     healthHero -= bossDamage;
  340.                                     ultimateDamageCount++;
  341.                                     Console.WriteLine(informationActivatedWither);
  342.                                     damageAlert = damageAlertFirstPart + bossDamage + units;
  343.                                     Console.WriteLine(damageAlert);
  344.                                 }
  345.                                 else
  346.                                 {
  347.                                     bossDamage = random.Next(bossDamageMin, bossDamageMax);
  348.                                     healthHero -= bossDamage;
  349.                                     damageAlert = damageAlertFirstPart + bossDamage + units;
  350.                                     Console.WriteLine(reaload);
  351.                                     Console.WriteLine(damageAlert);
  352.                                 }
  353.                             }
  354.                             else
  355.                             {
  356.                                 bossDamage = random.Next(bossDamageMin, bossDamageMax);
  357.                                 healthHero -= bossDamage;
  358.                                 Console.WriteLine(activatedAbilityAgain);
  359.                                 damageAlert = damageAlertFirstPart + bossDamage + units;
  360.                                 Console.WriteLine(damageAlert);
  361.                             }
  362.                         }
  363.                         else
  364.                         {
  365.                             bossDamage = random.Next(bossDamageMin, bossDamageMax);
  366.                             healthHero -= bossDamage;
  367.                             Console.WriteLine(incompatibleVampirism);
  368.                             damageAlert = damageAlertFirstPart + bossDamage + units;
  369.                             Console.WriteLine(damageAlert);
  370.                         }
  371.                         break;
  372.                     case "Межпространственный разлом":
  373.                         if (countdownRazlomCount >= countdownRazlom)
  374.                         {
  375.                             if (healthHero >= halfHeroHealth)
  376.                             {
  377.                                 healthHero = healthHeroMax;
  378.                                 countdownRazlomCount = startValue;
  379.                                 Console.WriteLine(informationFullRecoveryHealthRazlom);
  380.                             }
  381.                             else
  382.                             {
  383.                                 healthHero += healingRazlom;
  384.                                 countdownRazlomCount = startValue;
  385.                                 InformationRecoveryHealthRazlom = InformationRecoveryHealthRazlomFirstPart + healingRazlom + units;
  386.                                 Console.WriteLine(InformationRecoveryHealthRazlom);
  387.                             }
  388.                         }
  389.                         else
  390.                         {
  391.                             bossDamage = random.Next(bossDamageMin, bossDamageMax);
  392.                             healthHero -= bossDamage;
  393.                             damageAlert = damageAlertFirstPart + bossDamage + units;
  394.                             Console.WriteLine(reaload);
  395.                             Console.WriteLine(damageAlert);
  396.                         }
  397.                         break;
  398.                     case "Вампиризм":
  399.                         if (activatedWither != true)
  400.                         {
  401.                             if (activatedVampirism == false)
  402.                             {
  403.                                 if (countdownVampirismCount >= countdownVampirism)
  404.                                 {
  405.                                     activatedVampirism = true;
  406.                                     bossDamage = random.Next(bossDamageMin, bossDamageMax);
  407.                                     healthHero -= bossDamage;
  408.                                     ultimateDamageCount++;
  409.                                     Console.WriteLine(informationVampirismActivated);
  410.                                     damageAlert = damageAlertFirstPart + bossDamage + units;
  411.                                     Console.WriteLine(damageAlert);
  412.                                 }
  413.                                 else
  414.                                 {
  415.                                     bossDamage = random.Next(bossDamageMin, bossDamageMax);
  416.                                     healthHero -= bossDamage;
  417.                                     Console.WriteLine(reaload);
  418.                                     damageAlert = damageAlertFirstPart + bossDamage + units;
  419.                                     Console.WriteLine(damageAlert);
  420.                                 }
  421.                             }
  422.                             else
  423.                             {
  424.                                 bossDamage = random.Next(bossDamageMin, bossDamageMax);
  425.                                 healthHero -= bossDamage;
  426.                                 Console.WriteLine(activatedAbilityAgain);
  427.                                 damageAlert = damageAlertFirstPart + bossDamage + units;
  428.                                 Console.WriteLine(damageAlert);
  429.                             }
  430.                         }
  431.                         else
  432.                         {
  433.                             bossDamage = random.Next(bossDamageMin, bossDamageMax);
  434.                             healthHero -= bossDamage;
  435.                             Console.WriteLine(incompatibleWither);
  436.                             damageAlert = damageAlertFirstPart + bossDamage + units;
  437.                             Console.WriteLine(damageAlert);
  438.                         }
  439.                         break;
  440.                     default:
  441.                         bossDamage = random.Next(bossDamageMin, bossDamageMax);
  442.                         healthHero -= bossDamage;
  443.                         Console.WriteLine(suchAbilityNo);
  444.                         damageAlert = damageAlertFirstPart + bossDamage + units;
  445.                         Console.WriteLine(damageAlert);
  446.                         break;
  447.                 }
  448.                 Console.WriteLine();
  449.             }
  450.  
  451.             if (healthBoss <= startValue && healthHero <= startValue)
  452.             {
  453.                 Console.WriteLine(tie);
  454.             }
  455.             else if (healthHero <= startValue)
  456.             {
  457.                 Console.WriteLine(heroLost);
  458.             }
  459.             else
  460.             {
  461.                 Console.WriteLine(heroWin);
  462.             }
  463.         }
  464.     }
  465. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement