You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

EnemyBot.java 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import java.util.Random;
  2. public class EnemyBot extends Bot {
  3. protected final Random random = new Random();
  4. protected EnemyBot(String[] args) {
  5. super(args);
  6. }
  7. @Override
  8. protected char nextMove(View view) {
  9. int size = view.width;
  10. String data = view.data
  11. .replace('^', '*')
  12. .replace('<', '*')
  13. .replace('>', '*')
  14. .replace('v', '*');
  15. char[][] grid = dataToGrid(data, size);
  16. if (data.contains("*") && isInLineOfSight(grid))
  17. return 'f';
  18. return switch (random.nextInt(10)) {
  19. case 1 -> '<';
  20. case 2 -> '>';
  21. case 3 -> 'v';
  22. default -> '^';
  23. };
  24. }
  25. @Override
  26. protected void print(View view) {
  27. }
  28. protected char[][] dataToGrid(String data, int size) {
  29. char[][] grid = new char[size][size];
  30. for (int i = 0; i < data.length(); i++) {
  31. grid[i % size][i / size] = data.charAt(i);
  32. }
  33. return grid;
  34. }
  35. protected boolean isInLineOfSight(char[][] grid) {
  36. int size = grid.length;
  37. for (int y = size / 2; y > 0; y--) {
  38. if (grid[size / 2][y] == '*')
  39. return true;
  40. }
  41. return false;
  42. }
  43. }