12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * 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
- }
- }
- }
|