Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Advance.Exams.JavaAdvancedExam.December2022;
- import java.util.Scanner;
- public class NavyBattle {
- private static final char SUBMARINE = 'S';
- private static final char BOMB = '*';
- private static final char CRUISER = 'C';
- private static final char EMPTY_SPOT = '-';
- private static int submarineLives = 3;
- private static int cruisers = 3;
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int size = Integer.parseInt(scanner.nextLine());
- char[][] battlefield = new char[size][size];
- fullFillBattlefield(scanner, battlefield);
- int[] currentPosition = getCurrentPosition(battlefield);
- while (submarineLives > 0 && cruisers > 0) {
- String command = scanner.nextLine();
- int row = currentPosition[0];
- int col = currentPosition[1];
- switch (command) {
- case "right":
- if (battlefield[row][col + 1] == BOMB) {
- submarineLives--;
- } else if (battlefield[row][col + 1] == CRUISER) {
- cruisers--;
- }
- currentPosition[1] = col + 1;
- battlefield[row][col] = EMPTY_SPOT;
- battlefield[row][col + 1] = SUBMARINE;
- break;
- case "down":
- if (battlefield[row + 1][col] == BOMB) {
- submarineLives--;
- } else if (battlefield[row + 1][col] == CRUISER) {
- cruisers--;
- }
- currentPosition[0] = row + 1;
- battlefield[row][col] = EMPTY_SPOT;
- battlefield[row + 1][col] = SUBMARINE;
- break;
- case "left":
- if (battlefield[row][col - 1] == BOMB) {
- submarineLives--;
- } else if (battlefield[row][col - 1] == CRUISER) {
- cruisers--;
- }
- currentPosition[1] = col - 1;
- battlefield[row][col] = EMPTY_SPOT;
- battlefield[row][col - 1] = SUBMARINE;
- break;
- case "up":
- if (battlefield[row - 1][col] == BOMB) {
- submarineLives--;
- } else if (battlefield[row - 1][col] == CRUISER) {
- cruisers--;
- }
- currentPosition[0] = row - 1;
- battlefield[row][col] = EMPTY_SPOT;
- battlefield[row - 1][col] = SUBMARINE;
- break;
- }
- }
- if (submarineLives < 1) {
- System.out.printf("Mission failed, U-9 disappeared! Last known coordinates [%d, %d]!\n", currentPosition[0], currentPosition[1]);
- } else {
- System.out.println("Mission accomplished, U-9 has destroyed all battle cruisers of the enemy!");
- }
- printBattlefield(battlefield);
- }
- private static void fullFillBattlefield(Scanner scanner, char[][] battlefield) {
- for (int i = 0; i < battlefield.length; i++) {
- String currentInput = scanner.nextLine();
- for (int j = 0; j < currentInput.length(); j++) {
- battlefield[i][j] = currentInput.charAt(j);
- }
- }
- }
- private static void printBattlefield(char[][] battlefield) {
- for (int row = 0; row < battlefield.length; row++) {
- for (int col = 0; col < battlefield.length; col++) {
- System.out.print(battlefield[row][col]);
- }
- System.out.println();
- }
- }
- private static int[] getCurrentPosition(char[][] battlefield) {
- int[] position = new int[2];
- for (int row = 0; row < battlefield.length; row++) {
- for (int col = 0; col < battlefield[row].length; col++) {
- if (battlefield[row][col] == 'S') {
- return position = new int[] {row, col};
- }
- }
- }
- return position;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment