Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class ThroneConquering {
- private static final char PARIS = 'P';
- private static final char ENEMY = 'S';
- private static final char HELEN = 'H';
- private static final char DEAD = 'X';
- private static final char EMPTY_SPOT = '-';
- public static void main(String[] args) throws IOException {
- BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in));
- int power = Integer.parseInt(scanner.readLine());
- int rows = Integer.parseInt(scanner.readLine());
- char[][] field = new char[rows][];
- for (int i = 0; i < field.length; i++) {
- field[i] = scanner.readLine().toCharArray();
- }
- int[] currentPosition = getCurrentPosition(field);
- boolean finished = false;
- while (power > 0 && !finished) {
- String[] tokens = scanner.readLine().split("\\s");
- field[Integer.parseInt(tokens[1])][Integer.parseInt(tokens[2])] = ENEMY;
- String move = tokens[0];
- power--;
- switch (move) {
- case "up":
- if (currentPosition[0] - 1 >= 0) {
- if (field[currentPosition[0] - 1][currentPosition[1]] == ENEMY) {
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- power -= 2;
- if (power <= 0) {
- field[currentPosition[0] - 1][currentPosition[1]] = DEAD;
- currentPosition[0] = currentPosition[0] - 1;
- } else {
- field[currentPosition[0] - 1][currentPosition[1]] = PARIS;
- currentPosition[0] = currentPosition[0] - 1;
- }
- } else if (field[currentPosition[0] - 1][currentPosition[1]] == HELEN) {
- field[currentPosition[0] - 1][currentPosition[1]] = EMPTY_SPOT;
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- finished = true;
- } else {
- field[currentPosition[0] - 1][currentPosition[1]] = PARIS;
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- currentPosition[0] = currentPosition[0] - 1;
- if (power <= 0) {
- field[currentPosition[0]][currentPosition[1]] = DEAD;
- }
- }
- }
- break;
- case "down":
- if (currentPosition[0] + 1 < field.length) {
- if (field[currentPosition[0] + 1][currentPosition[1]] == ENEMY) {
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- power -= 2;
- if (power <= 0) {
- field[currentPosition[0] + 1][currentPosition[1]] = DEAD;
- currentPosition[0] = currentPosition[0] + 1;
- } else {
- field[currentPosition[0] + 1][currentPosition[1]] = PARIS;
- currentPosition[0] = currentPosition[0] + 1;
- }
- } else if (field[currentPosition[0] + 1][currentPosition[1]] == HELEN) {
- field[currentPosition[0] + 1][currentPosition[1]] = EMPTY_SPOT;
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- finished = true;
- } else {
- field[currentPosition[0] + 1][currentPosition[1]] = PARIS;
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- currentPosition[0] = currentPosition[0] + 1;
- if (power <= 0) {
- field[currentPosition[0]][currentPosition[1]] = DEAD;
- }
- }
- }
- break;
- case "left":
- if (currentPosition[1] - 1 >= 0) {
- if (field[currentPosition[0]][currentPosition[1] - 1] == ENEMY) {
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- power -= 2;
- if (power <= 0) {
- field[currentPosition[0]][currentPosition[1] - 1] = DEAD;
- currentPosition[1] = currentPosition[1] - 1;
- } else {
- field[currentPosition[0]][currentPosition[1] - 1] = PARIS;
- currentPosition[1] = currentPosition[1] - 1;
- }
- } else if (field[currentPosition[0]][currentPosition[1] - 1] == HELEN) {
- field[currentPosition[0]][currentPosition[1] - 1] = EMPTY_SPOT;
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- finished = true;
- } else {
- field[currentPosition[0]][currentPosition[1] - 1] = PARIS;
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- currentPosition[1] = currentPosition[1] - 1;
- if (power <= 0) {
- field[currentPosition[0]][currentPosition[1]] = DEAD;
- }
- }
- }
- break;
- case "right":
- if (currentPosition[1] + 1 < field[currentPosition[0]].length) {
- if (field[currentPosition[0]][currentPosition[1] + 1] == ENEMY) {
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- power -= 2;
- if (power <= 0) {
- field[currentPosition[0]][currentPosition[1] + 1] = DEAD;
- currentPosition[1] = currentPosition[1] + 1;
- } else {
- field[currentPosition[0]][currentPosition[1] + 1] = PARIS;
- currentPosition[1] = currentPosition[1] + 1;
- }
- } else if (field[currentPosition[0]][currentPosition[1] + 1] == HELEN) {
- field[currentPosition[0]][currentPosition[1] + 1] = EMPTY_SPOT;
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- finished = true;
- } else {
- field[currentPosition[0]][currentPosition[1] + 1] = PARIS;
- field[currentPosition[0]][currentPosition[1]] = EMPTY_SPOT;
- currentPosition[1] = currentPosition[1] + 1;
- if (power <= 0) {
- field[currentPosition[0]][currentPosition[1]] = DEAD;
- }
- }
- }
- break;
- }
- }
- if (finished) {
- System.out.println("Paris has successfully abducted Helen! Energy left: " + power);
- } else if (power <= 0) {
- System.out.printf("Paris died at %d;%d.%n", currentPosition[0], currentPosition[1]);
- }
- for (char[] chars : field) {
- for (char aChar : chars) {
- System.out.print(aChar);
- }
- System.out.println();
- }
- }
- private static int[] getCurrentPosition(char[][] field) {
- int[] position = new int[2];
- for (int row = 0; row < field.length; row++) {
- for (int col = 0; col < field[row].length; col++) {
- if (field[row][col] == PARIS) {
- position[0] = row;
- position[1] = col;
- return position;
- }
- }
- }
- return position;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment