desislava_topuzakova

Untitled

Sep 27th, 2021
1,193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.12 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class FormulaOne_02 {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6. int size = Integer.parseInt(scanner.nextLine()); //брой на редове и брой на колони
  7. int countCommands = Integer.parseInt(scanner.nextLine());
  8. char[][] matrix = new char[size][size];
  9.  
  10. fillMatrix(scanner, size, matrix);
  11. //P -> позиция на играча
  12. //F -> финал
  13. //B -> бонус
  14. //T -> капан
  15.  
  16. //първоначална позиция на играча
  17. int rowPlayer = 0;
  18. int colPlayer = 0;
  19. for (int row = 0; row < size; row++) {
  20. for (int col = 0; col < size; col++) {
  21. char currentElement = matrix[row][col];
  22. if (currentElement == 'P') {
  23. rowPlayer = row;
  24. colPlayer = col;
  25. break;
  26. }
  27. }
  28. }
  29.  
  30. boolean hasWon = false;
  31. for (int commandCount = 1; commandCount <= countCommands; commandCount++) {
  32. String direction = scanner.nextLine();
  33.  
  34. //up, down, left or right
  35. int newRow = 0; //редът след преместване
  36. int newCol = 0; //колоната след преместване
  37. switch (direction) {
  38. case "up":
  39. //row - 1
  40. newRow = checkIsOutside(rowPlayer - 1, size); //TODO: ПРОВЕРКА ДАЛИ РЕДЪТ В МАТРИЦАТА
  41. newCol = checkIsOutside(colPlayer, size); //TODO: ПРОВЕРКА ДАЛИ колоната В МАТРИЦАТА
  42. if (matrix[newRow][newCol] == 'B') {
  43. newRow = checkIsOutside(rowPlayer - 2, size);
  44. newCol = checkIsOutside(colPlayer, size);
  45. }
  46. break;
  47. case "down":
  48. //row + 1
  49. newRow = checkIsOutside(rowPlayer + 1, size);
  50. newCol = checkIsOutside(colPlayer, size);
  51. if (matrix[newRow][newCol] == 'B') {
  52. newRow = checkIsOutside(rowPlayer + 2, size);
  53. newCol = checkIsOutside(colPlayer, size);
  54. }
  55. break;
  56. case "left":
  57. //col - 1
  58. newRow = checkIsOutside(rowPlayer, size);
  59. newCol = checkIsOutside(colPlayer - 1, size);
  60. if (matrix[newRow][newCol] == 'B') {
  61. newRow = checkIsOutside(rowPlayer, size);
  62. newCol = checkIsOutside(colPlayer - 2, size);
  63. }
  64. break;
  65. case "right":
  66. //col + 1
  67. newRow = checkIsOutside(rowPlayer, size);
  68. newCol = checkIsOutside(colPlayer + 1, size);
  69. if (matrix[newRow][newCol] == 'B') {
  70. newRow = checkIsOutside(rowPlayer, size);
  71. newCol = checkIsOutside(colPlayer + 2, size);
  72. }
  73. break;
  74. }
  75. //проверка: на новата позиция имаме ли B, T, F
  76. if (matrix[newRow][newCol] == 'T') {
  77. //нямаме преместване
  78. newRow = rowPlayer;
  79. newCol = colPlayer;
  80. } else {
  81. //има преместаване
  82. if (matrix[newRow][newCol] == 'F') {
  83. hasWon = true;
  84. }
  85. matrix[rowPlayer][colPlayer] = '.';
  86. matrix[newRow][newCol] = 'P';
  87. rowPlayer = newRow;
  88. colPlayer = newCol;
  89.  
  90. }
  91.  
  92.  
  93. }
  94.  
  95.  
  96. if (hasWon) {
  97. System.out.println("Well done, the player won first place!");
  98. } else {
  99. System.out.println("Oh no, the player got lost on the track!");
  100. }
  101.  
  102. printMatrix(matrix);
  103.  
  104.  
  105. }
  106.  
  107. private static int checkIsOutside(int value, int size) {
  108. //ако е вътрев матрицата ред или колона -> връщам стойността
  109. //ако е извън -> връщаме новата стойност
  110. if (value < 0) {
  111. value = size - 1;
  112. } else if (value >= size ) {
  113. value = 0;
  114. }
  115. return value;
  116. }
  117.  
  118. private static void printMatrix(char[][] matrix) {
  119. for (int row = 0; row < matrix.length; row++) {
  120. for (int col = 0; col < matrix.length; col++) {
  121. System.out.print(matrix[row][col]);
  122. }
  123. System.out.println();
  124. }
  125. }
  126.  
  127. private static void fillMatrix(Scanner scanner, int size, char[][] matrix) {
  128. //fillMatrix
  129. for (int row = 0; row < size; row++) {
  130. String line = scanner.nextLine();
  131. matrix[row] = line.toCharArray();
  132. }
  133. }
  134. }
  135.  
Advertisement
Add Comment
Please, Sign In to add comment