Advertisement
Guest User

sneaking

a guest
Feb 21st, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.12 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. public class sneaking {
  6.     private static List<List<String>> board = new ArrayList<>();
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.         int rows = Integer.parseInt(scanner.nextLine());
  10.  
  11.         for (int i = 0; i <rows ; i++) {
  12.            String[] tookens = scanner.nextLine().split("");
  13.            board.add(new ArrayList<>());
  14.             for (int j = 0; j <tookens.length ; j++) {
  15.                 board.get(i).add(tookens[j]);
  16.             }
  17.  
  18.  
  19.         }
  20.         String[] command = scanner.nextLine().split("");
  21.  
  22.         boolean alive = true;
  23.         int d = 0;
  24.         while (alive){
  25.  
  26.  
  27.             movePieces();
  28.            
  29.            
  30.             alive =fisrtCheck();
  31.             if (!alive){
  32.                 break;
  33.             }
  34.  
  35.          else  {
  36.              moveSam(command[d]);
  37.              d+=1;
  38.          }
  39.             alive = fisrtCheck();
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.         }
  47.  
  48.     }
  49.  
  50.     private static void moveSam(String s) {
  51.         int[] indexOfSam = findIndexOfSam();
  52.         switch (s){
  53.             case "U":
  54.                 board.get(indexOfSam[0]).set(indexOfSam[1],".");
  55.                 board.get(indexOfSam[0]-1).set(indexOfSam[1],"S");
  56.                 break;
  57.             case "D":
  58.                 board.get(indexOfSam[0]).set(indexOfSam[1],".");
  59.                 board.get(indexOfSam[0]+1).set(indexOfSam[1],"S");
  60.                 break;
  61.             case "L":
  62.                 board.get(indexOfSam[0]).set(indexOfSam[1],".");
  63.                 board.get(indexOfSam[0]).set(indexOfSam[1]-1,"S");
  64.                 break;
  65.             case "R":
  66.                 board.get(indexOfSam[0]).set(indexOfSam[1],".");
  67.                 board.get(indexOfSam[0]).set(indexOfSam[1]+1,"S");
  68.                 break;
  69.             case "W":
  70.                 break;
  71.         }
  72.     }
  73.  
  74.     private static boolean fisrtCheck() {
  75.         int[] indexOfSam = findIndexOfSam();
  76.         int[] indexOfNikoladze = findIndexOfNikoladze();
  77.  
  78.         if (indexOfSam[0]==indexOfNikoladze[0]){
  79.  
  80.             System.out.println("Nikoladze killed!");
  81.             replaceWithXwhenSomeoneDie(indexOfNikoladze);
  82.             printBoard();
  83.             return false;
  84.  
  85.         }else if (board.get(indexOfSam[0]).contains("b")){
  86.  
  87.             if (board.get(indexOfSam[0]).indexOf("b")<indexOfSam[1]){
  88.                 System.out.printf("Sam died at %d, %d%n",indexOfSam[0],indexOfSam[1]);
  89.                 replaceWithXwhenSomeoneDie(indexOfSam);
  90.                 printBoard();
  91.                 return false;
  92.             }
  93.         }else if (board.get(indexOfSam[0]).contains("d")){
  94.  
  95.             if (board.get(indexOfSam[0]).indexOf("d")>indexOfSam[1]){
  96.                 System.out.printf("Sam died at %d, %d%n",indexOfSam[0],indexOfSam[1]);
  97.                 replaceWithXwhenSomeoneDie(indexOfSam);
  98.                 printBoard();
  99.                 return false;
  100.             }
  101.         }
  102.         return true;
  103.     }
  104.  
  105.     private static void printBoard() {
  106.         for (int row = 0; row <board.size() ; row++) {
  107.             for (int i = 0; i <board.get(row).size() ; i++) {
  108.                 System.out.printf("%s",board.get(row).get(i));
  109.             }
  110.             System.out.println();
  111.         }
  112.     }
  113.  
  114.     private static void replaceWithXwhenSomeoneDie(int[] indexOfNikoladze) {
  115.         board.get(indexOfNikoladze[0]).set(indexOfNikoladze[1],"X");
  116.     }
  117.  
  118.     private static int[] findIndexOfNikoladze() {
  119.  
  120.         int indexOfNikoladze[] = new int[2];
  121.         for (int row = 0; row <board.size() ; row++) {
  122.             if (board.get(row).contains("N")){
  123.                 indexOfNikoladze[0]=row;
  124.                 indexOfNikoladze[1]=board.get(row).indexOf("N");
  125.             }
  126.  
  127.         }
  128.         return indexOfNikoladze;
  129.     }
  130.  
  131.     private static int[] findIndexOfSam() {
  132.         int indexOfSam[] = new int[2];
  133.         for (int row = 0; row <board.size() ; row++) {
  134.             if (board.get(row).contains("S")){
  135.                 indexOfSam[0]=row;
  136.                 indexOfSam[1]=board.get(row).indexOf("S");
  137.             }
  138.  
  139.         }
  140.         return indexOfSam;
  141.  
  142.     }
  143.  
  144.     private static void movePieces() {
  145.         for (int row = 0; row <board.size() ; row++) {
  146.             if (board.get(row).contains("b")){
  147.  
  148.                 moveContainsB(row);
  149.  
  150.             } else if (board.get(row).contains("d")){
  151.                 moveContainsD(row);
  152.             }
  153.         }
  154.     }
  155.  
  156.     private static void moveContainsD(int row) {
  157.         int indexOfB = board.get(row).indexOf("d");
  158.         if (indexOfB==0){
  159.  
  160.             board.get(row).set(indexOfB,"b");
  161.  
  162.         }else {
  163.             board.get(row).set(indexOfB - 1, "d");
  164.             board.get(row).set(indexOfB,".");
  165.         }
  166.  
  167.     }
  168.  
  169.     private static void moveContainsB(int row) {
  170.         int indexOfB = board.get(row).indexOf("b");
  171.  
  172.         if (indexOfB==board.get(row).size()){
  173.  
  174.             board.get(row).set(indexOfB,"d");
  175.  
  176.         }else {
  177.             board.get(row).set(indexOfB + 1, "b");
  178.             board.get(row).set(indexOfB,".");
  179.         }
  180.  
  181.  
  182.     }
  183.  
  184.  
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement