diff --git a/src/Bot.java b/src/Bot.java index 9131cd0..67bad06 100644 --- a/src/Bot.java +++ b/src/Bot.java @@ -46,6 +46,7 @@ public abstract class Bot implements Runnable { protected void print(View view) { view.print(); + System.out.println(); } // Diese Methode ermittelt den nächsten Zug des Bots. Sie wird von der diff --git a/src/RumbleBot.java b/src/RumbleBot.java index fd1c7be..195c27d 100644 --- a/src/RumbleBot.java +++ b/src/RumbleBot.java @@ -28,18 +28,14 @@ public class RumbleBot extends Bot { @Override protected char nextMove(View view) { - System.out.println(); - int size = view.width; String data = view.data; char[][] grid = dataToGrid(data, size); - if (data.contains("v") || data.contains("^") || data.contains("<") || data.contains(">")) { - if (isInLineOfSight(grid)) { - return 'f'; - } else { - return breadthFirstSearch(grid); - } + if (isInLineOfSight(grid)) { + return 'f'; + } else if (data.contains("v") || data.contains("^") || data.contains("<") || data.contains(">")) { + return breadthFirstSearch(grid); } else { return walkAround(grid); } @@ -96,34 +92,23 @@ public class RumbleBot extends Bot { protected boolean isInLineOfSight(char[][] grid) { int size = grid.length; for (int y = size / 2; y >= 0; y--) { - if (obstacles.contains("" + grid[size / 2][y])) - break; - if (players.contains("" + grid[size / 2][y])) return true; + + if (obstacles.contains("" + grid[size / 2][y])) + break; } return false; } protected char walkAround(char[][] grid) { + int size = grid.length; if (steps == 0) { steps = random.nextInt(20); - if(random.nextBoolean()) - return '<'; - else - return '>'; + return random.nextBoolean() ? '<' : '>'; } else { steps--; - return safeMove(grid); - } - } - - protected char safeMove(char[][] grid) { - int size = grid.length; - if (obstacles.contains("" + grid[size / 2][size / 2 - 1])) { - return '<'; - } else { - return '^'; + return obstacles.contains("" + grid[size / 2][size / 2 - 1]) ? '<' : '^'; } } @@ -159,7 +144,7 @@ public class RumbleBot extends Bot { } System.err.println("No path found"); - return safeMove(grid); + return walkAround(grid); } protected record Move(int x, int y, char direction) {