Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Pockemon;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String line = scanner.nextLine();
- Map<String, Trainer> trainers = new LinkedHashMap<>();
- while (!line.equals("Tournament")) {
- String [] tokens = line.split("\\s+");
- String trainerName = tokens[0];
- String name = tokens[1];
- String element = tokens[2];
- int health = Integer.parseInt(tokens[3]);
- Trainer trainer = new Trainer(trainerName);
- Pokemon pokemon = new Pokemon (name, element, health);
- trainers.putIfAbsent(trainerName, trainer);
- trainers.get(trainerName).addPokemon(pokemon);
- line = scanner.nextLine();
- }
- line = scanner.nextLine();
- while (!line.equals("End")) {
- String element = line;
- for (Trainer trainer : trainers.values()) {
- if (trainer.hasElementType(element)) {
- trainer.incrementBadges(1);
- } else {
- trainer.getDamages(10);
- }
- }
- line = scanner.nextLine();
- }
- trainers.entrySet()
- .stream()
- .sorted((f,s) -> s.getValue().getBadges() - f.getValue().getBadges())
- .forEach(entry -> {
- System.out.println(entry.getValue().toString());
- });
- }
- }
- package Pockemon;
- public class Pokemon {
- private String name;
- private String element;
- private int health;
- public Pokemon (String name, String element, int health) {
- this.name = name;
- this.element = element;
- this.health = health;
- }
- public String getElement() {
- return this.element;
- }
- public void takeDamage (int damage) {
- this.health -= damage;
- }
- public int getHealth() {
- return this.health;
- }
- }
- package Pockemon;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class Trainer {
- private String name;
- private Map<String, List <Pokemon>> pokemons;
- private int badges;
- public Trainer (String name) {
- this.name = name;
- this.badges = 0;
- this.setPokemon();
- }
- private void setPokemon() {
- this.pokemons = new HashMap<>();
- this.pokemons.put("Fire", new ArrayList<>());
- this.pokemons.put("Electricity", new ArrayList<>());
- this.pokemons.put("Water", new ArrayList<>());
- }
- public void addPokemon(Pokemon pokemon) {
- this.pokemons.get(pokemon.getElement()).add(pokemon);
- }
- public int getBadges() {
- return this.badges;
- }
- public boolean hasElementType(String element) {
- return !this.pokemons.get(element).isEmpty();
- }
- public void incrementBadges(int increment) {
- this.badges += increment;
- }
- public void getDamages(int damage) {
- for (List<Pokemon> value : pokemons.values()) {
- for (Pokemon pokemon : value) {
- pokemon.takeDamage(damage);
- }
- }
- this.clearDeadPokemon();
- }
- private void clearDeadPokemon () {
- for (List<Pokemon> value : pokemons.values()) {
- value.removeIf(p -> p.getHealth() <=0);
- }
- }
- public int getPokemonCount() {
- int size = 0;
- for (List<Pokemon> value : pokemons.values()) {
- size += value.size();
- }
- return size;
- }
- @Override
- public String toString () {
- return String.format("%s %d %d", this.name, this.badges, this.getPokemonCount());
- }
- }
Add Comment
Please, Sign In to add comment