53 lines
1.3 KiB
Java
53 lines
1.3 KiB
Java
import java.util.Random;
|
|
|
|
public class EnemyBot extends Bot {
|
|
protected final Random random = new Random();
|
|
|
|
protected EnemyBot(String[] args) {
|
|
super(args);
|
|
}
|
|
|
|
@Override
|
|
protected char nextMove(View view) {
|
|
int size = view.width;
|
|
String data = view.data
|
|
.replace('^', '*')
|
|
.replace('<', '*')
|
|
.replace('>', '*')
|
|
.replace('v', '*');
|
|
|
|
char[][] grid = dataToGrid(data, size);
|
|
|
|
if (data.contains("*") && isInLineOfSight(grid))
|
|
return 'f';
|
|
|
|
return switch (random.nextInt(10)) {
|
|
case 1 -> '<';
|
|
case 2 -> '>';
|
|
case 3 -> 'v';
|
|
default -> '^';
|
|
};
|
|
}
|
|
|
|
@Override
|
|
protected void print(View view) {
|
|
}
|
|
|
|
protected char[][] dataToGrid(String data, int size) {
|
|
char[][] grid = new char[size][size];
|
|
for (int i = 0; i < data.length(); i++) {
|
|
grid[i % size][i / size] = data.charAt(i);
|
|
}
|
|
return grid;
|
|
}
|
|
|
|
protected boolean isInLineOfSight(char[][] grid) {
|
|
int size = grid.length;
|
|
for (int y = size / 2; y > 0; y--) {
|
|
if (grid[size / 2][y] == '*')
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|