Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.List;
- import java.util.Scanner;
- import java.util.stream.Collectors;
- public class ManOWar2 {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- List<Integer> pirateShip = Arrays.stream(scanner.nextLine().split(">")).map(Integer::parseInt).collect(Collectors.toList());
- List<Integer> warShip = Arrays.stream(scanner.nextLine().split(">")).map(Integer::parseInt).collect(Collectors.toList());
- int maxHealth = Integer.parseInt(scanner.nextLine());
- String text = scanner.nextLine();
- boolean endGame = false;
- while (!text.equals("Retire")) {
- List<String> command = Arrays.stream(text.split(" ")).collect(Collectors.toList());
- String commandAnElement = command.get(0);
- switch (commandAnElement) {
- case "Fire": {
- int index = Integer.parseInt(command.get(1));
- int damage = Integer.parseInt(command.get(2));
- if (index < warShip.size() && index >= 0) {
- int currentDamage = warShip.get(index);
- int newDamage = currentDamage - damage;
- warShip.set(index, newDamage);
- if (newDamage <= 0) {
- endGame = true;
- }
- }
- if (endGame) {
- System.out.println("You won! The enemy ship has sunken.");
- break;
- }
- break;
- }
- case "Defend": {
- int startIndex = Integer.parseInt(command.get(1));
- int endIndex = Integer.parseInt(command.get(2));
- int demage = Integer.parseInt(command.get(3));
- if (startIndex >= 0 && endIndex <= pirateShip.size()) {
- for (int i = startIndex; i <= endIndex; i++) {
- int currentDamage = pirateShip.get(i);
- int newDamage = currentDamage - demage;
- pirateShip.set(i, newDamage);
- if (newDamage <= 0) {
- endGame = true;
- }
- }
- if (endGame) {
- System.out.println("You lost! The pirate ship has sunken.");
- break;
- }
- }
- break;
- }
- case "Repair": {
- int index = Integer.parseInt(command.get(1));
- int health = Integer.parseInt(command.get(2));
- if (index < pirateShip.size() && index >= 0) {
- int currentHealth = pirateShip.get(index);
- int newHealth = currentHealth + health;
- pirateShip.set(index, newHealth);
- if (newHealth >= maxHealth) {
- pirateShip.set(index, maxHealth);
- }
- }
- break;
- }
- case "Status": {
- int counter = 0;
- for (int health : pirateShip) {
- double percent = (1.0 * health * 100) / maxHealth;
- if (percent < 20) {
- counter++;
- }
- }
- System.out.printf("%d sections need repair.%n", counter);
- break;
- }
- }
- if (endGame) {
- break;
- }
- text = scanner.nextLine();
- }
- if (!endGame) {
- int sumPirateShip = 0;
- int enemyShip = 0;
- for (Integer integer : pirateShip) {
- sumPirateShip += integer;
- }
- for (Integer integer : warShip) {
- enemyShip += integer;
- }
- System.out.printf("Pirate ship status: %d%n", sumPirateShip);
- System.out.printf("Warship status: %d%n", enemyShip);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement