Advertisement
desislava_topuzakova

02. Book Worm

Jun 10th, 2023
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.68 KB | None | 0 0
  1. package examPreparation;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Task2 {
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(System.in);
  8.  
  9. String startText = scanner.nextLine(); //първоначалния текст
  10. StringBuilder textBuilder = new StringBuilder(startText);
  11. int size = Integer.parseInt(scanner.nextLine()); //размер на матрицата: бр. редове = бр. колоните = size
  12.  
  13. String [][] matrix = new String[size][size];
  14. fillMatrix(matrix, scanner);
  15.  
  16. //намираме местоположението на играча
  17. int playerRow = -1; //на кой ред се намира играча
  18. int playerCol = -1; //на коя колона се намира играча
  19.  
  20. for (int row = 0; row < size; row++) {
  21. for (int col = 0; col < size; col++) {
  22. if (matrix[row][col].equals("P")) {
  23. playerRow = row;
  24. playerCol = col;
  25. }
  26. }
  27. }
  28.  
  29.  
  30. String command = scanner.nextLine();
  31. while (!command.equals("end")) {
  32. //запазвам от къде тръгвам
  33. int startRow = playerRow; //ред, от който тръгва
  34. int startCol = playerCol; //колона, от която тръгва
  35. //command = "up", "down", "left", "right"
  36. //преместване
  37. boolean isOutside = false;
  38. switch (command) {
  39. case "up":
  40. //нагоре
  41. playerRow--;
  42. //проверка дали сме отвън
  43. if (playerRow < 0) {
  44. playerRow++;
  45. isOutside = true;
  46. }
  47. break;
  48. case "down":
  49. //надолу
  50. playerRow++;
  51. //проверка дали сме отвън
  52. if (playerRow >= size) {
  53. playerRow--;
  54. isOutside = true;
  55. }
  56. break;
  57. case "left":
  58. //ляво
  59. playerCol--;
  60. //проверка дали сме отвън
  61. if (playerCol < 0) {
  62. playerCol++;
  63. isOutside = true;
  64. }
  65. break;
  66. case "right":
  67. //дясно
  68. playerCol++;
  69. //проверка дали сме отвън
  70. if (playerCol >= size) {
  71. playerCol--;
  72. isOutside = true;
  73. }
  74. break;
  75. }
  76.  
  77. //извършено движение -> вътре или отвън
  78. //проверка какво има на мястото където е отишъл, само ако не е извън
  79. if (!isOutside) {
  80. String currentText = matrix[playerRow][playerCol]; //текстът, който е на мястото, на което отива
  81. if (!currentText.equals("-")) {
  82. //буква
  83. textBuilder.append(currentText);
  84. }
  85. matrix[playerRow][playerCol] = "P"; //мястото, на което се е преместил
  86. matrix[startRow][startCol] = "-"; //мястото, от което си тръгнал
  87. } else {
  88. if (textBuilder.length() > 0) {
  89. //премахвам неговата последна буква
  90. textBuilder.deleteCharAt(textBuilder.length() - 1);
  91. }
  92. }
  93.  
  94. command = scanner.nextLine();
  95. }
  96.  
  97. System.out.println(textBuilder);
  98. printMatrix(matrix);
  99. }
  100.  
  101. private static void printMatrix(String[][] matrix) {
  102. for (int row = 0; row < matrix.length; row++) {
  103. for (int col = 0; col < matrix.length; col++) {
  104. System.out.print(matrix[row][col]);
  105. }
  106. System.out.println(); //преминаваме на нов ред
  107. }
  108. }
  109.  
  110. private static void fillMatrix(String[][] matrix, Scanner scanner) {
  111. //бр. редове = matrix.length
  112. //бр. колони = matrix.length
  113. for (int row = 0; row <= matrix.length - 1; row++) {
  114. matrix[row] = scanner.nextLine().split("");
  115. }
  116. }
  117. }
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement