diff --git a/src/RumbleBotTest1.java b/src/RumbleBotTest1.java new file mode 100644 index 0000000..bc3cdf6 --- /dev/null +++ b/src/RumbleBotTest1.java @@ -0,0 +1,64 @@ +/* + * RumbleBot. + * Der Rover ist auch mit einem Geschütz ausgestattet, dass nur in Fahrrichtung feuern kann. + * Der Feuerbefehl ist „f“. Die Reichweite des Geschützes entspricht der Scanreichweite. + * Wälder, Felsen und Wasser blockieren Schüsse. + * Der Rover ist beim ersten Treffer zerstört. Wer überlebt am längsten? + * docker run --rm -p 63187:63187 mediaeng/bots rumble + */ + +public class RumbleBotTest1 extends Bot { + + private char currentDirection = '^'; // Start-Richtung des Bots + + protected RumbleBotTest1(String[] args) { + super(args); + } + + public static void main(String[] args) { + + Bot rumbleBot = new RumbleBot(args); + rumbleBot.run(); + System.out.println("hello"); + } + + @Override + protected char nextMove(View view) { + // Scanne das Spielfeld nach Gegnern in Fahrtrichtung + if (isEnemyInSight(view)) { + return 'f'; // Feuere, wenn ein Gegner in Reichweite ist + } + + // Wenn kein Gegner in Sicht, wähle eine Bewegung + return chooseMove(view); + } + + private boolean isEnemyInSight(View view) { + // Prüfe, ob ein Gegner in der aktuellen Fahrtrichtung ist + // Annahme: Gegner sind als ^, <, >, v gekennzeichnet + String enemySymbols = "^<>v"; + return view.data.contains(String.valueOf(currentDirection)) && enemySymbols.contains(String.valueOf(currentDirection)); + } + + private char chooseMove(View view) { + // Wähle eine sichere Bewegung, vermeide Hindernisse und versuche, Gegner zu finden + // Einfache Implementierung: Wechsle die Richtung bei jedem Zug + currentDirection = getNextDirection(currentDirection); + return currentDirection; + } + + private char getNextDirection(char currentDirection) { + switch (currentDirection) { + case '^': + return '>'; + case '>': + return 'v'; + case 'v': + return '<'; + case '<': + return '^'; + default: + return '^'; // Standardrichtung, falls etwas schiefgeht + } + } +} diff --git a/src/RumbleBotTest2.java b/src/RumbleBotTest2.java new file mode 100644 index 0000000..9ab17ac --- /dev/null +++ b/src/RumbleBotTest2.java @@ -0,0 +1,62 @@ +/* + * RumbleBot. + * Der Rover ist auch mit einem Geschütz ausgestattet, dass nur in Fahrrichtung feuern kann. + * Der Feuerbefehl ist „f“. Die Reichweite des Geschützes entspricht der Scanreichweite. + * Wälder, Felsen und Wasser blockieren Schüsse. + * Der Rover ist beim ersten Treffer zerstört. Wer überlebt am längsten? + * docker run --rm -p 63187:63187 mediaeng/bots rumble + */ + +public class RumbleBotTest2 extends Bot { + + private char currentDirection = '^'; // Start-Richtung des Bots + + protected RumbleBotTest2(String[] args) { + super(args); + } + + public static void main(String[] args) { + Bot rumbleBot = new RumbleBot(args); + rumbleBot.run(); + } + + @Override + protected char nextMove(View view) { + // Scanne das Spielfeld nach Gegnern in Fahrtrichtung + if (isEnemyInSight(view)) { + return 'f'; // Feuere, wenn ein Gegner in Reichweite ist + } + + // Wenn kein Gegner in Sicht, wähle eine Bewegung + return chooseMove(view); + } + + private boolean isEnemyInSight(View view) { + // Prüfe, ob ein Gegner in der aktuellen Fahrtrichtung ist + // Annahme: Gegner sind als ^, <, >, v gekennzeichnet + String enemySymbols = "^<>v"; + return view.data.contains(String.valueOf(currentDirection)) && enemySymbols.contains(String.valueOf(currentDirection)); + } + + private char chooseMove(View view) { + // Wähle eine sichere Bewegung, vermeide Hindernisse und versuche, Gegner zu finden + // Einfache Implementierung: Wechsle die Richtung bei jedem Zug + currentDirection = getNextDirection(currentDirection); + return currentDirection; + } + + private char getNextDirection(char currentDirection) { + switch (currentDirection) { + case '^': + return '>'; + case '>': + return 'v'; + case 'v': + return '<'; + case '<': + return '^'; + default: + return '^'; // Standardrichtung, falls etwas schiefgeht + } + } +}