RGAlex

O3. Heroes Of Code And Logic VII / FinalExam - O4

Mar 26th, 2021 (edited)
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.23 KB | None | 0 0
  1. package FinalExam.O4;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6.  
  7. public class O3HeroesOfCodeAndLogicVII {
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.         Map<String, int[]> heroes = new LinkedHashMap<>();
  11.         int numberOfHeroes = Integer.parseInt(scanner.nextLine());
  12.         for (int i = 0; i < numberOfHeroes; i++) {
  13.             String[] heroInfo = scanner.nextLine().split("\\s+");
  14.             heroes.put(heroInfo[0], new int[2]);
  15.             heroes.get(heroInfo[0])[0] += Integer.parseInt(heroInfo[1]);
  16.             heroes.get(heroInfo[0])[1] += Integer.parseInt(heroInfo[2]);
  17.         }
  18.         String command;
  19.         while (!"End".equals(command = scanner.nextLine())) {
  20.             String[] type = command.split(" - ");
  21.             String name = type[1];
  22.             int number = Integer.parseInt(type[2]);
  23.             switch (type[0]) {
  24.                 case "CastSpell":
  25.                     if (heroes.get(name)[1] - number >= 0) {
  26.                         heroes.get(name)[1] -= number;
  27.                         System.out.println(name + " has successfully cast " + type[3] + " and now has " + heroes.get(name)[1] + " MP!");
  28.                     } else {
  29.                         System.out.println(name + " does not have enough MP to cast " + type[3] + "!");
  30.                     }
  31.                     break;
  32.                 case "TakeDamage":
  33.                     heroes.get(name)[0] -= number;
  34.                     if (heroes.get(name)[0] > 0) {
  35.                         System.out.println(name + " was hit for " + number + " HP by " + type[3] + " and now has " + heroes.get(name)[0] + " HP left!");
  36.                     } else {
  37.                         System.out.println(name + " has been killed by " + type[3] + "!");
  38.                         heroes.remove(name);
  39.                     }
  40.                     break;
  41.                 case "Recharge":
  42.                     int before = heroes.get(name)[1];
  43.                     if (before + number > 200) {
  44.                         heroes.get(name)[1] = 200;
  45.                         number = 200 - before;
  46.                     } else {
  47.                         heroes.get(name)[1] += number;
  48.                     }
  49.                     System.out.println(name + " recharged for " + number + " MP!");
  50.                     break;
  51.                 case "Heal":
  52.                     int blood = heroes.get(name)[0];
  53.                     if (blood + number > 100) {
  54.                         heroes.get(name)[0] = 100;
  55.                         number = 100 - blood;
  56.                     } else {
  57.                         heroes.get(name)[0] += number;
  58.                     }
  59.                     System.out.println(name + " healed for " + number + " HP!");
  60.                     break;
  61.             }
  62.         }
  63.         heroes.entrySet().stream().sorted((a, b) -> {
  64.             int result = Integer.compare(b.getValue()[0], a.getValue()[0]);
  65.             if (result == 0) {
  66.                 result = a.getKey().compareTo(b.getKey());
  67.             }
  68.             return result;
  69.         }).forEach(e -> System.out.printf("%s%n  HP: %d%n  MP: %d%n",
  70.                 e.getKey(), e.getValue()[0], e.getValue()[1]));
  71.     }
  72. }
  73.  
Add Comment
Please, Sign In to add comment