5kov

The Heigan Dance

May 18th, 2023
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.13 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Test3 {
  4.     public static void main (String[] args) {
  5.         Scanner Scanner = new Scanner(System.in);
  6.         String playerCoordinates = "7:7";
  7.         double damageDone = Double.parseDouble(Scanner.nextLine());
  8.         double playerHP = 18500;
  9.         double heiganHP = 3000000;
  10.  
  11.         List<String> fieldBorders = new ArrayList<>();
  12.         for (int i = -1; i < 16 ; i++) {
  13.             fieldBorders.add(i + ":-1");
  14.         }
  15.         for (int i = -1; i < 16 ; i++) {
  16.             fieldBorders.add("-1:" + i);
  17.         }
  18.         for (int i = -1; i < 16 ; i++) {
  19.             fieldBorders.add(i + ":16");
  20.         }
  21.         for (int i = -1; i < 16 ; i++) {
  22.             fieldBorders.add("16:" + i);
  23.         }
  24.  
  25.         String lastSpellCasted = "";
  26.         int remainingDamage = 0;
  27.  
  28.         while (playerHP > 0 && heiganHP > 0) {
  29.             playerHP -= remainingDamage;
  30.             remainingDamage = 0;
  31.             heiganHP -= damageDone;
  32.             if (playerHP <= 0) {
  33.                 break;
  34.             }
  35.             if (heiganHP <= 0) {
  36.                 break;
  37.             }
  38.             String[] inputArray = Scanner.nextLine().split(" ");
  39.             lastSpellCasted = inputArray[0];
  40.             List<String> damageCoordinates = new ArrayList<>();
  41.             damageCoordinates.add(inputArray[1] + ":" + inputArray[2]);
  42.             damageCoordinates.add(Integer.toString(Integer.parseInt(inputArray[1]) - 1) + ":" + inputArray[2]);
  43.             damageCoordinates.add(Integer.toString(Integer.parseInt(inputArray[1]) - 1) + ":" + Integer.toString(Integer.parseInt(inputArray[2]) + 1));
  44.             damageCoordinates.add(inputArray[1] + ":" + Integer.toString(Integer.parseInt(inputArray[2]) + 1));
  45.             damageCoordinates.add(Integer.toString(Integer.parseInt(inputArray[1]) + 1) + ":" + Integer.toString(Integer.parseInt(inputArray[2]) + 1));
  46.             damageCoordinates.add(Integer.toString(Integer.parseInt(inputArray[1]) + 1) + ":" + inputArray[2]);
  47.             damageCoordinates.add(Integer.toString(Integer.parseInt(inputArray[1]) + 1) + ":" + Integer.toString(Integer.parseInt(inputArray[2]) - 1));
  48.             damageCoordinates.add(inputArray[1] + ":" + Integer.toString(Integer.parseInt(inputArray[2]) - 1));
  49.             damageCoordinates.add(Integer.toString(Integer.parseInt(inputArray[1]) - 1) + ":" + Integer.toString(Integer.parseInt(inputArray[2]) - 1));
  50.  
  51.             if (damageCoordinates.contains(playerCoordinates)) {
  52.                 int[] playerCoordinatesArray = Arrays.stream(playerCoordinates.split(":")).mapToInt(Integer::parseInt).toArray();
  53.                 if (!damageCoordinates.contains(Integer.toString(playerCoordinatesArray[0] - 1) + ":" + Integer.toString(playerCoordinatesArray[1])) && !fieldBorders.contains(Integer.toString(playerCoordinatesArray[0] - 1) + ":" + Integer.toString(playerCoordinatesArray[1]))) {
  54.                     playerCoordinates = Integer.toString(playerCoordinatesArray[0] - 1) + ":" + Integer.toString(playerCoordinatesArray[1]);
  55.                 } else if (!damageCoordinates.contains(Integer.toString(playerCoordinatesArray[0]) + ":" + Integer.toString(playerCoordinatesArray[1] + 1)) && !fieldBorders.contains(Integer.toString(playerCoordinatesArray[0]) + ":" + Integer.toString(playerCoordinatesArray[1] + 1))) {
  56.                     playerCoordinates = Integer.toString(playerCoordinatesArray[0]) + ":" + Integer.toString(playerCoordinatesArray[1] + 1);
  57.                 } else if (!damageCoordinates.contains(Integer.toString(playerCoordinatesArray[0] + 1) + ":" + Integer.toString(playerCoordinatesArray[1])) && !fieldBorders.contains(Integer.toString(playerCoordinatesArray[0] + 1) + ":" + Integer.toString(playerCoordinatesArray[1]))) {
  58.                     playerCoordinates = Integer.toString(playerCoordinatesArray[0] + 1) + ":" + Integer.toString(playerCoordinatesArray[1]);
  59.                 } else if (!damageCoordinates.contains(Integer.toString(playerCoordinatesArray[0]) + ":" + Integer.toString(playerCoordinatesArray[1] - 1)) && !fieldBorders.contains(Integer.toString(playerCoordinatesArray[0]) + ":" + Integer.toString(playerCoordinatesArray[1] - 1))) {
  60.                     playerCoordinates = Integer.toString(playerCoordinatesArray[0]) + ":" + Integer.toString(playerCoordinatesArray[1] - 1);
  61.                 } else {
  62.                     if (inputArray[0].equals("Cloud")) {
  63.                         playerHP -= 3500;
  64.                         remainingDamage = 3500;
  65.                         lastSpellCasted = "Plague Cloud";
  66.                     } else {
  67.                         playerHP -= 6000;
  68.                     }
  69.                 }
  70.             }
  71.         }
  72.         playerCoordinates = playerCoordinates.replace(":", ", ");
  73.         if (heiganHP <= 0) {
  74.             System.out.println("Heigan: Defeated!");
  75.         } else {
  76.             System.out.printf("Heigan: %.2f\n", heiganHP);
  77.         }
  78.         if (playerHP <= 0) {
  79.             System.out.println("Player: Killed by " + lastSpellCasted);
  80.         } else {
  81.             System.out.printf("Player: %.0f\n", playerHP);
  82.         }
  83.         System.out.println("Final position: " + playerCoordinates);
  84.     }
  85. }
  86.  
Advertisement
Add Comment
Please, Sign In to add comment