Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- public class sneaking {
- private static List<List<String>> board = new ArrayList<>();
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int rows = Integer.parseInt(scanner.nextLine());
- for (int i = 0; i <rows ; i++) {
- String[] tookens = scanner.nextLine().split("");
- board.add(new ArrayList<>());
- for (int j = 0; j <tookens.length ; j++) {
- board.get(i).add(tookens[j]);
- }
- }
- String[] command = scanner.nextLine().split("");
- boolean alive = true;
- int d = 0;
- while (alive){
- movePieces();
- alive =fisrtCheck();
- if (!alive){
- break;
- }
- else {
- moveSam(command[d]);
- d+=1;
- }
- alive = fisrtCheck();
- }
- }
- private static void moveSam(String s) {
- int[] indexOfSam = findIndexOfSam();
- switch (s){
- case "U":
- board.get(indexOfSam[0]).set(indexOfSam[1],".");
- board.get(indexOfSam[0]-1).set(indexOfSam[1],"S");
- break;
- case "D":
- board.get(indexOfSam[0]).set(indexOfSam[1],".");
- board.get(indexOfSam[0]+1).set(indexOfSam[1],"S");
- break;
- case "L":
- board.get(indexOfSam[0]).set(indexOfSam[1],".");
- board.get(indexOfSam[0]).set(indexOfSam[1]-1,"S");
- break;
- case "R":
- board.get(indexOfSam[0]).set(indexOfSam[1],".");
- board.get(indexOfSam[0]).set(indexOfSam[1]+1,"S");
- break;
- case "W":
- break;
- }
- }
- private static boolean fisrtCheck() {
- int[] indexOfSam = findIndexOfSam();
- int[] indexOfNikoladze = findIndexOfNikoladze();
- if (indexOfSam[0]==indexOfNikoladze[0]){
- System.out.println("Nikoladze killed!");
- replaceWithXwhenSomeoneDie(indexOfNikoladze);
- printBoard();
- return false;
- }else if (board.get(indexOfSam[0]).contains("b")){
- if (board.get(indexOfSam[0]).indexOf("b")<indexOfSam[1]){
- System.out.printf("Sam died at %d, %d%n",indexOfSam[0],indexOfSam[1]);
- replaceWithXwhenSomeoneDie(indexOfSam);
- printBoard();
- return false;
- }
- }else if (board.get(indexOfSam[0]).contains("d")){
- if (board.get(indexOfSam[0]).indexOf("d")>indexOfSam[1]){
- System.out.printf("Sam died at %d, %d%n",indexOfSam[0],indexOfSam[1]);
- replaceWithXwhenSomeoneDie(indexOfSam);
- printBoard();
- return false;
- }
- }
- return true;
- }
- private static void printBoard() {
- for (int row = 0; row <board.size() ; row++) {
- for (int i = 0; i <board.get(row).size() ; i++) {
- System.out.printf("%s",board.get(row).get(i));
- }
- System.out.println();
- }
- }
- private static void replaceWithXwhenSomeoneDie(int[] indexOfNikoladze) {
- board.get(indexOfNikoladze[0]).set(indexOfNikoladze[1],"X");
- }
- private static int[] findIndexOfNikoladze() {
- int indexOfNikoladze[] = new int[2];
- for (int row = 0; row <board.size() ; row++) {
- if (board.get(row).contains("N")){
- indexOfNikoladze[0]=row;
- indexOfNikoladze[1]=board.get(row).indexOf("N");
- }
- }
- return indexOfNikoladze;
- }
- private static int[] findIndexOfSam() {
- int indexOfSam[] = new int[2];
- for (int row = 0; row <board.size() ; row++) {
- if (board.get(row).contains("S")){
- indexOfSam[0]=row;
- indexOfSam[1]=board.get(row).indexOf("S");
- }
- }
- return indexOfSam;
- }
- private static void movePieces() {
- for (int row = 0; row <board.size() ; row++) {
- if (board.get(row).contains("b")){
- moveContainsB(row);
- } else if (board.get(row).contains("d")){
- moveContainsD(row);
- }
- }
- }
- private static void moveContainsD(int row) {
- int indexOfB = board.get(row).indexOf("d");
- if (indexOfB==0){
- board.get(row).set(indexOfB,"b");
- }else {
- board.get(row).set(indexOfB - 1, "d");
- board.get(row).set(indexOfB,".");
- }
- }
- private static void moveContainsB(int row) {
- int indexOfB = board.get(row).indexOf("b");
- if (indexOfB==board.get(row).size()){
- board.get(row).set(indexOfB,"d");
- }else {
- board.get(row).set(indexOfB + 1, "b");
- board.get(row).set(indexOfB,".");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement