Gpdev

2.Sneaking

Jun 19th, 2019
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.87 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Sneaking {
  4.     public static void main(String[] args) {
  5.         Scanner scanner = new Scanner(System.in);
  6.  
  7.         int numberOfRows = Integer.parseInt(scanner.nextLine());
  8.  
  9.         String[][] matrix = new String[numberOfRows][numberOfRows*2];
  10.  
  11.         for (int i = 0; i < numberOfRows; i++) {
  12.             String[] arr = scanner.nextLine().split("");
  13.  
  14.             matrix[i] = arr;
  15.         }
  16.         int xS = 0;
  17.         int yS = 0;
  18.         int xN = 0;
  19.         int yN = 0;
  20.         for (int i = 0; i < matrix.length; i++) {
  21.             for (int j = 0; j < matrix[i].length; j++) {
  22.                 if (matrix[i][j].equals("N")) {
  23.                     xN = i;
  24.                     yN = j;
  25.                 }
  26.                 if (matrix[i][j].equals("S")) {
  27.                     xS = i;
  28.                     yS = j;
  29.                 }
  30.             }
  31.         }
  32.  
  33.         String[] movementOfSam = scanner.nextLine().split("");
  34.         System.out.println();
  35.  
  36.  
  37.         for (int i = 0; i < movementOfSam.length; i++) {
  38.  
  39.             switch (movementOfSam[i]) {
  40.                 case "U":
  41.                     if (isPositionX(matrix)) {
  42.                         System.out.println(String.format("Sam died at %d, %d", xS, yS));
  43.                         printMatrix(matrix);
  44.                         return;
  45.                     }
  46.                         movementOfEnemies(matrix, xS, yS);
  47.  
  48.                         checkWhoIsKilled(matrix, xS, yS);
  49.                         for (int r = 1; r < matrix.length; r++) {
  50.                             for (int c = 0; c < matrix[r].length; c++) {
  51.  
  52.                                 if (matrix[r][c].equals("S")) {
  53.                                     matrix[r - 1][c] = "S";
  54.                                     matrix[r][c] = ".";
  55.                                     xS = r - 1;
  56.                                     yS = c;
  57.                                 }
  58.                             }
  59.                         }
  60.                         if (xS == xN) {
  61.                             matrix[xN][yN] = "X";
  62.  
  63.                             System.out.println("Nikoladze killed!");
  64.                             printMatrix(matrix);
  65.                             return;
  66.                         }
  67.  
  68.                     break;
  69.  
  70.                 case "D":
  71.                     if (isPositionX(matrix)) {
  72.                         System.out.println(String.format("Sam died at %d, %d", xS, yS));
  73.                         printMatrix(matrix);
  74.                         return;
  75.                     }else {
  76.                         movementOfEnemies(matrix, xS, yS);
  77.                     }
  78.  
  79.                     checkWhoIsKilled(matrix, xS, yS);
  80.  
  81.                     for (int p = matrix.length - 1; p > 0; p--) {
  82.                         for (int q = 0; q < matrix[p].length; q++) {
  83.  
  84.                             if (matrix[p][q].equals("S")) {
  85.                                 matrix[p + 1][q] = "S";
  86.                                 matrix[p][q] = ".";
  87.                                 xS = p + 1;
  88.                                 yS = q;
  89.  
  90.                             }
  91.                         }
  92.                     }
  93.                     if (xS == xN) {
  94.                         matrix[xN][yN] = "X";
  95.  
  96.                         System.out.println("Nikoladze killed!");
  97.                         printMatrix(matrix);
  98.                         return;
  99.                     }
  100.  
  101.                     break;
  102.                 case "R":
  103.                     if (isPositionX(matrix)) {
  104.                         System.out.println(String.format("Sam died at %d, %d", xS, yS));
  105.                         printMatrix(matrix);
  106.                         return;
  107.                     }else {
  108.                         movementOfEnemies(matrix, xS, yS);
  109.                     }
  110.  
  111.                     checkWhoIsKilled(matrix, xS, yS);
  112.                     for (int r = 0; r < matrix.length; r++) {
  113.                         for (int c = matrix[r].length - 1; c > 0; c--) {
  114.  
  115.                             if (matrix[r][c].equals("S")) {
  116.                                 matrix[r][c + 1] = "S";
  117.                                 matrix[r][c] = ".";
  118.                                 xS = r;
  119.                                 yS = c + 1;
  120.  
  121.                             }
  122.                         }
  123.                     }
  124.                     if (xS == xN) {
  125.                         matrix[xN][yN] = "X";
  126.  
  127.                         System.out.println("Nikoladze killed!");
  128.                         printMatrix(matrix);
  129.                         return;
  130.                     }
  131.                     break;
  132.                 case "L":
  133.                     if (isPositionX(matrix)) {
  134.                         System.out.println(String.format("Sam died at %d, %d", xS, yS));
  135.                         printMatrix(matrix);
  136.                         return;
  137.                     }else {
  138.                         movementOfEnemies(matrix, xS, yS);
  139.                     }
  140.  
  141.                     checkWhoIsKilled(matrix, xS, yS);
  142.                     for (int r = 0; r < matrix.length; r++) {
  143.                         for (int c = 1; c < matrix[r].length; c++) {
  144.  
  145.                             if (matrix[r][c].equals("S")) {
  146.                                 matrix[r][c - 1] = "S";
  147.                                 matrix[r][c] = ".";
  148.                                 xS = r;
  149.                                 yS = c - 1;
  150.                             }
  151.                         }
  152.                     }
  153.  
  154.                     if (xS == xN) {
  155.                         matrix[xN][yN] = "X";
  156.  
  157.                         System.out.println("Nikoladze killed!");
  158.                         printMatrix(matrix);
  159.                         return;
  160.                     }
  161.                     break;
  162.                 case "W":
  163.                     movementOfEnemies(matrix, xS, yS);
  164.                     break;
  165.             }
  166.         }
  167.  
  168.     }
  169.  
  170.     public static String[][] movementOfEnemies(String[][] matrix, int x, int y) {
  171.  
  172.         for (int r = 0; r < matrix.length; r++) {
  173.             for (int c = 0; c < matrix[r].length - 1; c++) {
  174.                 if (matrix[r][c].equals("b")) {
  175.                     if (c == matrix[r].length - 1) {
  176.                         matrix[r][c] = "d";
  177.  
  178.                     } else {
  179.                         matrix[r][c] = ".";
  180.                         matrix[r][++c] = "b";
  181.                     }
  182.                 }
  183.                 if (matrix[r][c].equals("d")) {
  184.                     if (c == 0) {
  185.                         matrix[r][c] = "b";
  186.  
  187.                     }else {
  188.  
  189.                         matrix[r][c] = ".";
  190.                         matrix[r][c - 1] = "d";
  191.                     }
  192.                 }
  193.             }
  194.         }
  195.  
  196.         return matrix;
  197.     }
  198.  
  199.     public static boolean checkWhoIsKilled(String[][] matrix, int x, int y) {
  200.         for (int j = 0; j < matrix.length; j++) {
  201.             for (int k = 0; k < matrix[j].length; k++) {
  202.                 if (matrix[j][k].equals("b") && x == j && y > k) {
  203.  
  204.                     matrix[x][y] = "X";
  205.  
  206.                     return false;
  207.                 } else if (matrix[j][k].equals("d") && x == j && y < k) {
  208.  
  209.                     matrix[x][y] = "X";
  210.  
  211.                     return false;
  212.                 }
  213.             }
  214.         }
  215.         return true;
  216.     }
  217.  
  218.     public static void printMatrix(String[][] matrix) {
  219.         for (int i = 0; i < matrix.length; i++) {
  220.             for (int l = 0; l < matrix[i].length; l++) {
  221.                 System.out.print(matrix[i][l]);
  222.             }
  223.             System.out.println();
  224.         }
  225.     }
  226.  
  227.     public static boolean isPositionX(String[][] matrix) {
  228.         for (int i = 0; i < matrix.length; i++) {
  229.             for (int j = 0; j < matrix[i].length; j++) {
  230.                 if (matrix[i][j].equals("X")) {
  231.                     return true;
  232.                 }
  233.             }
  234.         }
  235.  
  236.         return false;
  237.     }
  238. }
Advertisement
Add Comment
Please, Sign In to add comment