Advertisement
Tsuki11

Untitled

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