package bot; public class CollectBot extends Bot { public CollectBot(String[] args) { super(args); } @Override protected char nextMove(View view) throws Exception { String data = view.data; int width = view.width; // Position des Rovers finden int roverPosition = data.indexOf('R'); // Überprüfen, ob eine Gesteinsprobe vorhanden ist boolean hasRock = data.charAt(roverPosition) == '@'; // Bewegungsbefehl, um zur nächsten Gesteinsprobe zu gelangen if (hasRock) { return 'C'; // Beispielhaftes Zeichen für "Sammeln" } // Richtung für die nächste Bewegung berechnen, um das Spielfeld systematisch zu erkunden int nextPosition = getNextPosition(roverPosition, width, data); // Bewegungsbefehl generieren, um zur nächsten Position zu gelangen char moveCommand = generateMoveCommand(roverPosition, nextPosition, width); return moveCommand; } // Hilfsmethode, um die nächste Position zu berechnen, um das Spielfeld systematisch zu erkunden private int getNextPosition(int roverPosition, int width, String data) { int nextPosition; // Wenn der Rover sich am unteren Rand des Spielfelds befindet, bewege ihn eine Position nach rechts if (roverPosition / width % 2 == 1) { nextPosition = roverPosition + 1; } else { // Andernfalls bewege den Rover eine Position nach links nextPosition = roverPosition - 1; } // Überprüfen, ob die nächste Position gültig ist, sonst bewege den Rover eine Reihe nach unten if (nextPosition >= data.length() || nextPosition < 0 || data.charAt(nextPosition) == '*') { nextPosition = roverPosition + width; } return nextPosition; } // Hilfsmethode, um den Bewegungsbefehl basierend auf der aktuellen und nächsten Position zu generieren private char generateMoveCommand(int roverPosition, int nextPosition, int width) { if (nextPosition == roverPosition + 1) { return 'R'; // Bewegung nach rechts } else if (nextPosition == roverPosition - 1) { return 'L'; // Bewegung nach links } else if (nextPosition == roverPosition + width) { return 'D'; // Bewegung nach unten } else { return 'U'; // Bewegung nach oben } } public static void main(String[] args) { new CollectBot(args).run(); } }