Advertisement
CR7CR7

manowar

Aug 28th, 2023
1,265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.55 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.List;
  3. import java.util.Scanner;
  4. import java.util.stream.Collectors;
  5.  
  6. public class ManOWar {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         List<Integer> pirateShip = Arrays.stream(scanner.nextLine().split(">")).map(Integer::parseInt).collect(Collectors.toList());
  11.         List<Integer> warShip = Arrays.stream(scanner.nextLine().split(">")).map(Integer::parseInt).collect(Collectors.toList());
  12.         int maxHealth = Integer.parseInt(scanner.nextLine());
  13.  
  14.         String input = scanner.nextLine();
  15.  
  16.  
  17.         while (!input.contains("Retire")) {
  18.             String[] tokens = input.split(" ");
  19.             String command = tokens[0];
  20.  
  21.  
  22.             switch (command) {
  23.  
  24.                 case "Fire":
  25.                     int index = Integer.parseInt(tokens[1]);
  26.                     int damage = Integer.parseInt(tokens[2]);
  27.  
  28.                     if (index > warShip.size()-1 || index < 0) {
  29.  
  30.                         input = scanner.nextLine();
  31.                         continue;
  32.                     } else {
  33.                         int health = warShip.get(index);
  34.                         int currentHeath = health - damage;
  35.                         warShip.set(index, currentHeath);
  36.  
  37.                         if (currentHeath <= 0) {
  38.                             System.out.println("You won! The enemy ship has sunken.");
  39.                             return;
  40.                         }
  41.  
  42.                     }
  43.  
  44.                     break;
  45.                 case "Defend":
  46.                     int startIndex = Integer.parseInt(tokens[1]);
  47.                     int endIndex = Integer.parseInt(tokens[2]);
  48.                     int damageInflicted = Integer.parseInt(tokens[3]);
  49.  
  50.                     if ((startIndex > pirateShip.size()-1 || startIndex < 0) || (endIndex > pirateShip.size()-1 || endIndex < 0)) {
  51.                         input = scanner.nextLine();
  52.                         continue;
  53.                     }
  54.                     if (startIndex <= endIndex) {
  55.  
  56.                         for (int i = startIndex; i <= endIndex; i++) {
  57.                             int newValue = pirateShip.get(i) - damageInflicted;
  58.                             pirateShip.set(i, newValue);
  59.                             if (newValue <= 0) {
  60.                                 System.out.println("You lost! The pirate ship has sunken.");
  61.                                 return;
  62.                             }
  63.  
  64.                         }
  65.  
  66.  
  67.                     }
  68.                     break;
  69.                 case "Repair":
  70.                     int indexToRepair = Integer.parseInt(tokens[1]);
  71.                     int health = Integer.parseInt(tokens[2]);
  72.                     if (isValidIndex(pirateShip, indexToRepair)) {
  73.                         int newRepairPoints = pirateShip.get(indexToRepair) + health;
  74.  
  75.  
  76.                         pirateShip.set(indexToRepair, newRepairPoints);
  77.                         if (newRepairPoints > maxHealth) {
  78.                             pirateShip.set(indexToRepair, maxHealth);
  79.  
  80.                         }
  81.  
  82.                     }
  83.  
  84.                     break;
  85.                 case "Status":
  86.  
  87.                     printPercent(pirateShip, maxHealth);
  88.                     break;
  89.  
  90.             }
  91.  
  92.  
  93.             input = scanner.nextLine();
  94.         }
  95.  
  96.  
  97.         printPirateShip(pirateShip);
  98.         printWarShip(warShip);
  99.  
  100.  
  101.     }
  102.  
  103.     public static boolean isValidIndex(List<Integer> arrayList, int index) {
  104.         return arrayList.size()-1 >= index && index >=0;
  105.     }
  106.  
  107.     public static void printPercent(List<Integer> pirateShip, int maxHealth) {
  108.         int count = 0;
  109.  
  110.         for (int i = 0; i <= pirateShip.size()-1; i++) {
  111.             int value = pirateShip.get(i);
  112.             double percent = (1.0 *value / maxHealth) * 100;
  113.             if (percent < 20) {
  114.  
  115.  
  116.                 count++;
  117.  
  118.             }
  119.         }
  120.         System.out.printf("%d sections need repair.", count);
  121.         System.out.println();
  122.     }
  123.  
  124.     public static void printPirateShip(List<Integer> pirateShip) {
  125.         int count = 0;
  126.         for (int number : pirateShip) {
  127.             count += number;
  128.         }
  129.         System.out.printf("Pirate ship status: %d", count);
  130.         System.out.println();
  131.     }
  132.  
  133.     public static void printWarShip(List<Integer> warShip) {
  134.         int count = 0;
  135.         for (int number : warShip) {
  136.             count += number;
  137.         }
  138.         System.out.printf("Warship status: %d", count);
  139.  
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement