76 lines
1.7 KiB
Java
76 lines
1.7 KiB
Java
package praktikum05;
|
|
|
|
import java.util.Random;
|
|
|
|
public class SnakeBot extends Bot{
|
|
|
|
public SnakeBot(String[] args) {
|
|
super(args);
|
|
}
|
|
|
|
@Override
|
|
protected char nextMove(View view) throws Exception {
|
|
|
|
char[][] grid = parseView(view);
|
|
|
|
if (containsSymbol(grid, '@')) {
|
|
return moveTowardsSymbol(grid, '@');
|
|
}
|
|
|
|
|
|
if (containsSymbol(grid, '*')) {
|
|
return moveTowardsSymbol(grid, '*');
|
|
}
|
|
|
|
return performRandomMove();
|
|
}
|
|
|
|
char[][] parseView(View view) {
|
|
char[][] grid = new char[view.width][view.width];
|
|
|
|
int index = 0;
|
|
for (int i = 0; i < view.width; i++) {
|
|
for (int j = 0; j < view.width; j++) {
|
|
grid[i][j] = view.data.charAt(index++);
|
|
}
|
|
}
|
|
|
|
return grid;
|
|
}
|
|
|
|
private boolean containsSymbol(char[][] grid, char symbol) {
|
|
for (char[] row : grid) {
|
|
for (char cell : row) {
|
|
if (cell == symbol) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private char moveTowardsSymbol(char[][] grid, char symbol) throws Exception {
|
|
|
|
return performRandomMove();
|
|
}
|
|
|
|
private char performRandomMove() throws Exception {
|
|
Random random = new Random();
|
|
int move = random.nextInt(4);
|
|
|
|
return switch (move) {
|
|
case 0 -> '^';
|
|
case 1 -> 'v';
|
|
case 2 -> '<';
|
|
case 3 -> '>';
|
|
default -> throw new Exception("Ungültiger Zug");
|
|
};
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
Bot bot = new SnakeBot(args);
|
|
bot.run();
|
|
}
|
|
}
|