Advertisement
Guest User

03. Heroes of Code and Logic VII

a guest
Nov 29th, 2021
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. package Ex_FinalExamPreperation;
  2.  
  3. import java.util.*;
  4.  
  5. import static java.util.Map.Entry.comparingByValue;
  6. import static java.util.stream.Collectors.toMap;
  7.  
  8. public class HeroesOfCodeAndLogicVII {
  9. public static void main(String[] args) {
  10. Scanner scanner = new Scanner(System.in);
  11. Map<String, Integer[]> map = new TreeMap<>();
  12. int n = Integer.parseInt(scanner.nextLine());
  13. for (int i = 0; i <n ; i++) {
  14. String hero = scanner.nextLine();
  15. String []heroArr = hero.split(" ");
  16. String name = heroArr[0];
  17. int hitPoints = Integer.parseInt(heroArr[1]);
  18. int manaPoints = Integer.parseInt(heroArr[2]);
  19. map.putIfAbsent(name, new Integer[2]);
  20. map.get(name)[0] = hitPoints;
  21. map.get(name)[1] = manaPoints;
  22. }
  23.  
  24. String input = scanner.nextLine();
  25. while (!input.equals("End")){
  26. String[] inputArr = input.split(" - ");
  27. String command = inputArr[0];
  28. String name = inputArr[1];
  29. switch (command){
  30. case "CastSpell":
  31. int neededMP = Integer.parseInt(inputArr[2]);
  32. String spellName = inputArr[3];
  33.  
  34. int currentMP = map.get(name)[1];
  35. if (currentMP >= neededMP){
  36. currentMP -= neededMP;
  37. map.get(name)[1] = currentMP;
  38. System.out.printf("%s has successfully cast %s and now has %d MP!%n", name,spellName, currentMP );
  39. } else {
  40. System.out.printf("%s does not have enough MP to cast %s!%n", name, spellName);
  41. }
  42. break;
  43. case "TakeDamage":
  44. int damage = Integer.parseInt(inputArr[2]);
  45. String attacker = inputArr[3];
  46.  
  47. int currentDamage = map.get(name)[0];
  48. currentDamage -= damage;
  49. map.get(name)[0] = currentDamage;
  50.  
  51. if (map.get(name)[0] > 0) {
  52. System.out.printf("%s was hit for %d HP by %s and now has %d HP left!%n",
  53. name, damage, attacker, currentDamage);
  54. }else{
  55.  
  56. System.out.printf("%s has been killed by %s!%n", name,attacker);
  57. map.remove(name);
  58. }
  59. break;
  60. case "Recharge":
  61. int amount = Integer.parseInt(inputArr[2]);
  62. int currentMPRecharge = map.get(name)[1];
  63. if (currentMPRecharge+amount > 200){
  64. currentMPRecharge = 200- currentMPRecharge;
  65. System.out.printf("%s recharged for %d MP!%n", name, currentMPRecharge);
  66. currentMPRecharge = 200;
  67. map.get(name)[1]= 200;
  68. } else {
  69. System.out.printf("%s recharged for %d MP!%n", name, amount);
  70. currentMPRecharge += amount;
  71. map.get(name)[1]= currentMPRecharge;
  72. }
  73. break;
  74. case "Heal":
  75. int amountHeal = Integer.parseInt(inputArr[2]);
  76. int currentHeal = map.get(name)[0];
  77. if (currentHeal+amountHeal > 100){
  78. currentHeal = 100- currentHeal;
  79. System.out.printf("%s healed for %d HP!%n", name, currentHeal);
  80. currentHeal = 100;
  81. map.get(name)[0]= 100;
  82. } else {
  83. System.out.printf("%s healed for %d HP!%n", name, amountHeal);
  84. currentHeal += amountHeal;
  85. map.get(name)[0]=currentHeal;
  86. }
  87. break;
  88.  
  89. }
  90.  
  91. input= scanner.nextLine();
  92. }
  93. map
  94. .entrySet()
  95. .stream()
  96. .sorted((a, b) -> Integer.compare(b.getValue()[0], a.getValue()[0]))
  97. .forEach(entry -> System.out.printf("%s%nHP: %d%nMP: %d%n", entry.getKey(), entry.getValue()[0], entry.getValue()[1]));
  98. }
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement