Krum_50

Heroes_of_Code_and_Logic_VII

Jul 27th, 2021
1,444
311 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Heroes_of_Code_and_Logic_VII
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             int countOfHeroes = int.Parse(Console.ReadLine());
  12.             Dictionary<string, List<int>> date = new Dictionary<string, List<int>>();
  13.             for (int i = 0; i < countOfHeroes; i++)
  14.             {
  15.                 string line = Console.ReadLine();
  16.                 string[] lineSplit = line.Split();
  17.                 string name = lineSplit[0];
  18.                 int hitPoints = int.Parse(lineSplit[1]);
  19.                 int manaPoints = int.Parse(lineSplit[2]);
  20.                 date.Add(name, new List<int>());
  21.                 date[name].Add(hitPoints);
  22.                 date[name].Add(manaPoints);
  23.             }
  24.                 string command = Console.ReadLine();
  25.                 while(command!="End")
  26.                 {
  27.                     string[] commandSplit = command.Split(new char[] { ' ', '-' },StringSplitOptions.RemoveEmptyEntries);
  28.                 switch (commandSplit[0])
  29.                 {
  30.                     case "CastSpell":
  31.                         {
  32.                             string heroName = commandSplit[1];
  33.                             int neededMP = int.Parse(commandSplit[2]);
  34.                             string spellName = commandSplit[3];
  35.                             if (date[heroName][1] >= neededMP)
  36.                             {
  37.                                 date[heroName][1] -= neededMP;
  38.                                 Console.WriteLine($"{heroName} has successfully cast {spellName} and now has {date[heroName][1]} MP!");
  39.                             }
  40.                             else
  41.                             {
  42.                                 Console.WriteLine($"{heroName} does not have enough MP to cast {spellName}!");
  43.                             }
  44.                             break;
  45.                         }
  46.                     case "TakeDamage":
  47.                         {
  48.                             string heroName = commandSplit[1];
  49.                             int damage = int.Parse(commandSplit[2]);
  50.                             string attacker = commandSplit[3];
  51.                             date[heroName][0] -= damage;
  52.                             if (date[heroName][0] > 0)
  53.                             {
  54.                                 Console.WriteLine($"{heroName} was hit for {damage} HP by {attacker} and now has {date[heroName][0]} HP left!");
  55.                             }
  56.                             else
  57.                             {
  58.                                 date.Remove(heroName);
  59.                                 Console.WriteLine($"{heroName} has been killed by {attacker}!");
  60.                             }
  61.                             break;
  62.                         }
  63.                     case "Recharge":
  64.                         {
  65.                             string heroName = commandSplit[1];
  66.                             int amount = int.Parse(commandSplit[2]);
  67.                             date[heroName][1] += amount;
  68.                             int amountRecovered = amount;
  69.                             if (date[heroName][1] > 200)
  70.                             {
  71.                                 int different = date[heroName][1] - 200;
  72.                                 date[heroName][1] = 200;
  73.                                 amountRecovered -= different;
  74.                             }
  75.                             {
  76.                                 Console.WriteLine($"{heroName} recharged for {amountRecovered} MP!");
  77.                             }
  78.                             break;
  79.                         }
  80.                     case "Heal":
  81.                         {
  82.                             string heroName = commandSplit[1];
  83.                             int amount = int.Parse(commandSplit[2]);
  84.                             date[heroName][0] += amount;
  85.                             int amountRecovered = amount;
  86.                             if (date[heroName][0] > 100)
  87.                             {
  88.                                 int different = date[heroName][0] - 100;
  89.                                 date[heroName][0] = 100;
  90.                                 amountRecovered -= different;
  91.                             }                            
  92.                             {
  93.                                 Console.WriteLine($"{heroName} healed for {amountRecovered} HP!");
  94.                             }
  95.                             break;
  96.                         }                        
  97.                 }
  98.                 command = Console.ReadLine();
  99.                 }
  100.             foreach (var hero in date.OrderByDescending(x=>x.Value[0]).ThenBy(y=>y.Key))
  101.             {
  102.                 Console.WriteLine($"{hero.Key}");
  103.                 Console.WriteLine($"  HP: {hero.Value[0]}");
  104.                 Console.WriteLine($"  MP: {hero.Value[1]}");
  105.             }
  106.            
  107.         }
  108.     }
  109. }
  110.  
RAW Paste Data