Advertisement
Guest User

Untitled

a guest
Jun 3rd, 2020
1,035
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.57 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Pr08TheHeiganDance {
  4.     public static void main(String[] args) {
  5.         Scanner scanner = new Scanner(System.in);
  6.  
  7.         double hsPoints = 3000000.0;
  8.         int playerPoints = 18500;
  9.  
  10.         int startPlRow = 7;
  11.         int startPlCol = 7;
  12.  
  13.         String lastSpell = "";
  14.         boolean activeCloud = false;
  15.  
  16.         double damage = Double.parseDouble(scanner.nextLine());
  17.  
  18.         while (playerPoints > 0 && hsPoints > 0) {
  19.             hsPoints -= damage;
  20.            
  21.             if (activeCloud) {
  22.                 playerPoints -= 3500;
  23.                 activeCloud = false;
  24.                
  25.                 if (playerPoints < 0) {
  26.                     break;
  27.                 }
  28.             }
  29.            
  30.             if (hsPoints < 0) {
  31.                 break;
  32.             }
  33.            
  34.             String[] tokens = scanner.nextLine().split("\\s+");
  35.  
  36.             String spell = tokens[0];
  37.             int row = Integer.parseInt(tokens[1]);
  38.             int col = Integer.parseInt(tokens[2]);
  39.  
  40.             boolean[][] hsChamber = new boolean[15][15];
  41.             for (int i = row - 1; i <= row + 1; i++) {
  42.                 if (i >= 0 && i < hsChamber.length) {
  43.                     for (int j = col - 1; j <= col + 1; j++) {
  44.                         if (j >= 0 && j < hsChamber[row].length) {
  45.                             hsChamber[i][j] = true;
  46.                         }
  47.                     }
  48.                 }
  49.             }
  50.  
  51.             if (hsChamber[startPlRow][startPlCol]) {
  52.                 if (isRowValid(hsChamber, startPlRow - 1) && !hsChamber[startPlRow - 1][startPlCol]) {
  53.                     startPlRow--; // move up
  54.                 } else if (isColValid(hsChamber, startPlCol + 1) && !hsChamber[startPlRow][startPlCol + 1]) {
  55.                     startPlCol++; // move right
  56.                 } else if (isRowValid(hsChamber, startPlRow + 1) && !hsChamber[startPlRow + 1][startPlCol]) {
  57.                     startPlRow++; // move down
  58.                 } else if (isColValid(hsChamber, startPlCol - 1) && !hsChamber[startPlRow][startPlCol - 1]) {
  59.                     startPlCol--; // move left
  60.                 }
  61.  
  62.                 if (hsChamber[startPlRow][startPlCol]) {
  63.                     switch (spell) {
  64.                     case "Cloud":
  65.                         playerPoints -= 3500;
  66.                         activeCloud = true;
  67.                         lastSpell = "Plague Cloud";
  68.                         break;
  69.                     case "Eruption":
  70.                         playerPoints -= 6000;
  71.                         lastSpell = spell;
  72.                         break;
  73.                     default:
  74.                         throw new IllegalArgumentException("Invalid spell: " + spell);
  75.                     }
  76.                 }
  77.             }
  78.         }
  79.  
  80.         if (hsPoints > 0) {
  81.             System.out.printf("Heigan: %.2f%n", hsPoints);
  82.         } else {
  83.             System.out.println("Heigan: Defeated!");
  84.         }
  85.         if (playerPoints > 0) {
  86.             System.out.printf("Player: %d%n", playerPoints);
  87.         } else {
  88.             System.out.println("Player: Killed by " + lastSpell);
  89.         }
  90.  
  91.         System.out.println("Final position: " + startPlRow + ", " + startPlCol);
  92.     }
  93.  
  94.     private static boolean isRowValid(boolean[][] hsChamber, int startPlRow) {
  95.         return startPlRow >= 0 && startPlRow < hsChamber[startPlRow].length;
  96.     }
  97.  
  98.     private static boolean isColValid(boolean[][] hsChamber, int startPlCol) {
  99.         return startPlCol >= 0 && startPlCol < hsChamber.length;
  100.     }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement