Aylin, Isabella, Edasu, Jasmin
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CollectBot.java 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package bot;
  2. public class CollectBot extends Bot {
  3. public CollectBot(String[] args) {
  4. super(args);
  5. }
  6. @Override
  7. protected char nextMove(View view) throws Exception {
  8. String data = view.data;
  9. int width = view.width;
  10. // Position des Rovers finden
  11. int roverPosition = data.indexOf('R');
  12. // Überprüfen, ob eine Gesteinsprobe vorhanden ist
  13. boolean hasRock = data.charAt(roverPosition) == '@';
  14. // Bewegungsbefehl, um zur nächsten Gesteinsprobe zu gelangen
  15. if (hasRock) {
  16. return 'C'; // Beispielhaftes Zeichen für "Sammeln"
  17. }
  18. // Richtung für die nächste Bewegung berechnen, um das Spielfeld systematisch zu erkunden
  19. int nextPosition = getNextPosition(roverPosition, width, data);
  20. // Bewegungsbefehl generieren, um zur nächsten Position zu gelangen
  21. char moveCommand = generateMoveCommand(roverPosition, nextPosition, width);
  22. return moveCommand;
  23. }
  24. // Hilfsmethode, um die nächste Position zu berechnen, um das Spielfeld systematisch zu erkunden
  25. private int getNextPosition(int roverPosition, int width, String data) {
  26. int nextPosition;
  27. // Wenn der Rover sich am unteren Rand des Spielfelds befindet, bewege ihn eine Position nach rechts
  28. if (roverPosition / width % 2 == 1) {
  29. nextPosition = roverPosition + 1;
  30. } else {
  31. // Andernfalls bewege den Rover eine Position nach links
  32. nextPosition = roverPosition - 1;
  33. }
  34. // Überprüfen, ob die nächste Position gültig ist, sonst bewege den Rover eine Reihe nach unten
  35. if (nextPosition >= data.length() || nextPosition < 0 || data.charAt(nextPosition) == '*') {
  36. nextPosition = roverPosition + width;
  37. }
  38. return nextPosition;
  39. }
  40. // Hilfsmethode, um den Bewegungsbefehl basierend auf der aktuellen und nächsten Position zu generieren
  41. private char generateMoveCommand(int roverPosition, int nextPosition, int width) {
  42. if (nextPosition == roverPosition + 1) {
  43. return 'R'; // Bewegung nach rechts
  44. } else if (nextPosition == roverPosition - 1) {
  45. return 'L'; // Bewegung nach links
  46. } else if (nextPosition == roverPosition + width) {
  47. return 'D'; // Bewegung nach unten
  48. } else {
  49. return 'U'; // Bewegung nach oben
  50. }
  51. }
  52. public static void main(String[] args) {
  53. new CollectBot(args).run();
  54. }
  55. }