@@ -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 | |||
} | |||
} | |||
} |
@@ -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 | |||
} | |||
} | |||
} |