Guest User

Pokemon Trainer

a guest
Jan 29th, 2020
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. package Pockemon;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6.  
  7. public class Main {
  8. public static void main(String[] args) {
  9. Scanner scanner = new Scanner(System.in);
  10.  
  11. String line = scanner.nextLine();
  12.  
  13. Map<String, Trainer> trainers = new LinkedHashMap<>();
  14.  
  15. while (!line.equals("Tournament")) {
  16.  
  17. String [] tokens = line.split("\\s+");
  18.  
  19. String trainerName = tokens[0];
  20. String name = tokens[1];
  21. String element = tokens[2];
  22. int health = Integer.parseInt(tokens[3]);
  23.  
  24. Trainer trainer = new Trainer(trainerName);
  25.  
  26. Pokemon pokemon = new Pokemon (name, element, health);
  27.  
  28. trainers.putIfAbsent(trainerName, trainer);
  29.  
  30. trainers.get(trainerName).addPokemon(pokemon);
  31. line = scanner.nextLine();
  32. }
  33.  
  34. line = scanner.nextLine();
  35.  
  36. while (!line.equals("End")) {
  37. String element = line;
  38.  
  39. for (Trainer trainer : trainers.values()) {
  40. if (trainer.hasElementType(element)) {
  41. trainer.incrementBadges(1);
  42. } else {
  43. trainer.getDamages(10);
  44. }
  45. }
  46.  
  47.  
  48. line = scanner.nextLine();
  49. }
  50. trainers.entrySet()
  51. .stream()
  52. .sorted((f,s) -> s.getValue().getBadges() - f.getValue().getBadges())
  53. .forEach(entry -> {
  54. System.out.println(entry.getValue().toString());
  55. });
  56. }
  57. }
  58. package Pockemon;
  59.  
  60. public class Pokemon {
  61. private String name;
  62. private String element;
  63. private int health;
  64.  
  65. public Pokemon (String name, String element, int health) {
  66. this.name = name;
  67. this.element = element;
  68. this.health = health;
  69. }
  70.  
  71. public String getElement() {
  72. return this.element;
  73. }
  74. public void takeDamage (int damage) {
  75. this.health -= damage;
  76. }
  77. public int getHealth() {
  78. return this.health;
  79. }
  80. }
  81.  
  82.  
  83.  
  84. package Pockemon;
  85.  
  86. import java.util.ArrayList;
  87. import java.util.HashMap;
  88. import java.util.List;
  89. import java.util.Map;
  90.  
  91. public class Trainer {
  92. private String name;
  93. private Map<String, List <Pokemon>> pokemons;
  94. private int badges;
  95.  
  96. public Trainer (String name) {
  97. this.name = name;
  98. this.badges = 0;
  99. this.setPokemon();
  100. }
  101.  
  102. private void setPokemon() {
  103. this.pokemons = new HashMap<>();
  104. this.pokemons.put("Fire", new ArrayList<>());
  105. this.pokemons.put("Electricity", new ArrayList<>());
  106. this.pokemons.put("Water", new ArrayList<>());
  107. }
  108.  
  109. public void addPokemon(Pokemon pokemon) {
  110. this.pokemons.get(pokemon.getElement()).add(pokemon);
  111.  
  112. }
  113. public int getBadges() {
  114. return this.badges;
  115. }
  116.  
  117. public boolean hasElementType(String element) {
  118. return !this.pokemons.get(element).isEmpty();
  119. }
  120.  
  121. public void incrementBadges(int increment) {
  122. this.badges += increment;
  123. }
  124.  
  125. public void getDamages(int damage) {
  126. for (List<Pokemon> value : pokemons.values()) {
  127. for (Pokemon pokemon : value) {
  128. pokemon.takeDamage(damage);
  129. }
  130. }
  131. this.clearDeadPokemon();
  132. }
  133.  
  134. private void clearDeadPokemon () {
  135. for (List<Pokemon> value : pokemons.values()) {
  136. value.removeIf(p -> p.getHealth() <=0);
  137. }
  138. }
  139. public int getPokemonCount() {
  140. int size = 0;
  141. for (List<Pokemon> value : pokemons.values()) {
  142. size += value.size();
  143. }
  144. return size;
  145. }
  146.  
  147. @Override
  148.  
  149. public String toString () {
  150. return String.format("%s %d %d", this.name, this.badges, this.getPokemonCount());
  151. }
  152.  
  153. }
Add Comment
Please, Sign In to add comment