Browse Source

Dateien hochladen nach „“

master
Isabella Nawratil 3 months ago
parent
commit
64f5e67470
1 changed files with 67 additions and 13 deletions
  1. 67
    13
      RumbleBot.java

+ 67
- 13
RumbleBot.java View File

package bot; package bot;




public class RumbleBot extends Bot { public class RumbleBot extends Bot {


private boolean shouldFire; // wichtig um den Feuerstatus des Bots zu verfolgen
private int currentDirection = 1; // Variable, um die aktuelle Bewegungsrichtung des Rovers zu halten
// 0 - oben, 1 - rechts, 2 - unten, 3 - links


private boolean shouldFire; // wichtig um den Feuerstatus des Bots zu verfolgen


// Konstruktor für RumbleBot // Konstruktor für RumbleBot
public RumbleBot(String[] args) { public RumbleBot(String[] args) {
// Logik für den RumbleBot, der in Fahrtrichtung schießt // Logik für den RumbleBot, der in Fahrtrichtung schießt
@Override @Override
protected char nextMove(View view) throws Exception { protected char nextMove(View view) throws Exception {
// Logik für den RumbleBot muss hier dann noch implementiert werden



// Wenn andere Bots in Sicht sind, wird gefeuert
// Wenn andere Bots in Sicht sind, wird abgefeuert
if (isOtherBotInSight(view.data)) { if (isOtherBotInSight(view.data)) {
shouldFire = true; shouldFire = true;
} }


if (shouldFire) { if (shouldFire) {
shouldFire = false; // Zurücksetzen, damit nicht mehrmals hintereinander geschossen wird
return 'f'; // Feuerbefehl
shouldFire = false;
return 'f';
}
// Bewegungsbefehl für die nächste Runde generieren
char moveCommand = getNextMove(view.data, view.width);

// Überprüfen, ob der Rover am Rand des Spielfelds ist und die Richtung ändern muss, um im Spielfeld zu bleiben
int nextPosition = getNextPosition(view.data.indexOf('A'), view.width, moveCommand);
if (nextPosition < 0 || nextPosition >= view.data.length() || view.data.charAt(nextPosition) == '#') {
currentDirection++;
moveCommand = getNextMove(view.data, view.width); // Neue Richtung erneut berechnen
}

return moveCommand;
}

// Methode zur Berechnung des nächsten Bewegungsbefehls
private char getNextMove(String data, int width) {
char moveCommand;

// Aktuelle Bewegungsrichtung des Roboters festlegen
int moveDirection = currentDirection % 4; // Modulo 4, um innerhalb des Bereichs von 0 bis 3 zu bleiben

// Bewegungsbefehl entsprechend der aktuellen Richtung generieren
switch (moveDirection) {
case 0: // Hoch
moveCommand = 'w';
break;
case 1: // Rechts
moveCommand = 'd';
break;
case 2: // Runter
moveCommand = 's';
break;
case 3: // Links
moveCommand = 'a';
break;
default:
moveCommand = ' ';
break;
} }
return 'w'; // nur als Notloesung gedacht fuer den Anfang

return moveCommand;
} }

// Methode zur Berechnung der nächsten Position basierend auf der aktuellen Position und dem Bewegungsbefehl
private int getNextPosition(int roverPosition, int width, char moveCommand) {
switch (moveCommand) {
case 'w': // Hoch
return roverPosition - width;
case 'd': // Rechts
return roverPosition + 1;
case 's': // Runter
return roverPosition + width;
case 'a': // Links
return roverPosition - 1;
default:
return -1; // Ungültige Position
}
}

// Methode zur Überprüfung, ob andere Bots in Sicht sind
private boolean isOtherBotInSight(String data) { private boolean isOtherBotInSight(String data) {
// Überprüft, ob anderer Bot in Sicht sind (z.B., "^", "<", ">", "v" in der Karte)
// Überprüft, ob andere Bots in Sicht sind (z.B., "^", "<", ">", "v" in der Karte)
return data.contains("^") || data.contains("<") || data.contains(">") || data.contains("v"); return data.contains("^") || data.contains("<") || data.contains(">") || data.contains("v");
} }


// main Methode um den Bot zu starten // main Methode um den Bot zu starten
public static void main(String[] args) { public static void main(String[] args) {
RumbleBot rumbleBot = new RumbleBot(args);
rumbleBot.run();
new RumbleBot(args).run();
} }
}
}

Loading…
Cancel
Save