Advertisement
Tsuki11

Untitled

Jun 24th, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.86 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. public class B2_BookWorm2 {
  6. private static final int[] rowMovement = {-1, 1, 0, 0};
  7. private static final int[] colMovement = {0, 0, -1, 1};
  8. private static StringBuilder print;
  9.  
  10. public static void main(String[] args) throws IOException {
  11. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  12.  
  13. print = new StringBuilder();
  14. print.append(reader.readLine());
  15.  
  16. int sizeOfMatrix = Integer.parseInt(reader.readLine());
  17.  
  18. char[][] matrix = new char[sizeOfMatrix][sizeOfMatrix];
  19.  
  20. int[] playerCurrentPosition = new int[2];
  21.  
  22.  
  23. for (int row = 0; row < matrix.length; row++) {
  24. char[] innerArray = reader.readLine().toCharArray();
  25. for (int col = 0; col < innerArray.length; col++) {
  26. matrix[row][col] = innerArray[col];
  27. if (innerArray[col] == 'P') {
  28. playerCurrentPosition[0] = row;
  29. playerCurrentPosition[1] = col;
  30. }
  31. }
  32. }
  33.  
  34. String line;
  35. int moveToRow;
  36. int moveToCol;
  37. while (!(line = reader.readLine()).equals("end")) {
  38. String command = line;
  39.  
  40. switch (command) {
  41.  
  42. case "up":
  43. moveToRow = playerCurrentPosition[0] + rowMovement[0];
  44. moveToCol = playerCurrentPosition[1] + colMovement[0];
  45. movePlayer(playerCurrentPosition, matrix,moveToRow,moveToCol);
  46. break;
  47. case "down":
  48. moveToRow = playerCurrentPosition[0] + rowMovement[1];
  49. moveToCol = playerCurrentPosition[1] + colMovement[1];
  50. movePlayer(playerCurrentPosition, matrix,moveToRow,moveToCol);
  51. break;
  52. case "left":
  53. moveToRow = playerCurrentPosition[0] + rowMovement[2];
  54. moveToCol = playerCurrentPosition[1] + colMovement[2];
  55. movePlayer(playerCurrentPosition, matrix,moveToRow,moveToCol);
  56. break;
  57. case "right":
  58. moveToRow = playerCurrentPosition[0] + rowMovement[3];
  59. moveToCol = playerCurrentPosition[1] + colMovement[3];
  60. movePlayer(playerCurrentPosition, matrix,moveToRow,moveToCol);
  61. break;
  62.  
  63.  
  64. }
  65. }
  66.  
  67. System.out.println(print.toString());
  68.  
  69. printCharMatrix(matrix);
  70. }
  71.  
  72.  
  73. private static void printCharMatrix(char[][] finalMatrix) {
  74. for (char[] matrix : finalMatrix) {
  75. for (char symbol : matrix) {
  76. System.out.print(symbol);
  77. }
  78. System.out.println();
  79. }
  80. }
  81.  
  82. private static void movePlayer(int[] playerCurrentPosition, char[][] matrix, int moveToRow, int moveToCol) {
  83. boolean hasToDoSomething = canMoveOrPutRestriction (moveToRow,moveToCol,matrix);
  84.  
  85. if(!hasToDoSomething){
  86. return;
  87. }
  88.  
  89. matrix[playerCurrentPosition[0]][playerCurrentPosition[1]] = '-';
  90. if(matrix[moveToRow][moveToCol] != '-'){
  91. print.append(matrix[moveToRow][moveToCol]);
  92. }
  93.  
  94. matrix[moveToRow][moveToCol] = 'P';
  95. playerCurrentPosition[0] = moveToRow;
  96. playerCurrentPosition[1] = moveToCol;
  97. }
  98.  
  99. private static boolean canMoveOrPutRestriction(int moveToRow, int moveToCol, char[][] matrix) {
  100. if(moveToRow >= 0 && moveToRow < matrix.length && moveToCol >= 0 && moveToCol < matrix[moveToRow].length){
  101. return true;
  102. }else{
  103. if(print.length() > 0){
  104. print.deleteCharAt(print.length() -1);
  105. }
  106. return false;
  107. }
  108. }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement