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.

RumbleBotTest1.java 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * RumbleBot.
  3. * Der Rover ist auch mit einem Geschütz ausgestattet, dass nur in Fahrrichtung feuern kann.
  4. * Der Feuerbefehl ist „f“. Die Reichweite des Geschützes entspricht der Scanreichweite.
  5. * Wälder, Felsen und Wasser blockieren Schüsse.
  6. * Der Rover ist beim ersten Treffer zerstört. Wer überlebt am längsten?
  7. * docker run --rm -p 63187:63187 mediaeng/bots rumble
  8. */
  9. public class RumbleBotTest1 extends Bot {
  10. private char currentDirection = '^'; // Start-Richtung des Bots
  11. protected RumbleBotTest1(String[] args) {
  12. super(args);
  13. }
  14. public static void main(String[] args) {
  15. Bot rumbleBot = new RumbleBot(args);
  16. rumbleBot.run();
  17. System.out.println("hello");
  18. }
  19. @Override
  20. protected char nextMove(View view) {
  21. // Scanne das Spielfeld nach Gegnern in Fahrtrichtung
  22. if (isEnemyInSight(view)) {
  23. return 'f'; // Feuere, wenn ein Gegner in Reichweite ist
  24. }
  25. // Wenn kein Gegner in Sicht, wähle eine Bewegung
  26. return chooseMove(view);
  27. }
  28. private boolean isEnemyInSight(View view) {
  29. // Prüfe, ob ein Gegner in der aktuellen Fahrtrichtung ist
  30. // Annahme: Gegner sind als ^, <, >, v gekennzeichnet
  31. String enemySymbols = "^<>v";
  32. return view.data.contains(String.valueOf(currentDirection)) && enemySymbols.contains(String.valueOf(currentDirection));
  33. }
  34. private char chooseMove(View view) {
  35. // Wähle eine sichere Bewegung, vermeide Hindernisse und versuche, Gegner zu finden
  36. // Einfache Implementierung: Wechsle die Richtung bei jedem Zug
  37. currentDirection = getNextDirection(currentDirection);
  38. return currentDirection;
  39. }
  40. private char getNextDirection(char currentDirection) {
  41. switch (currentDirection) {
  42. case '^':
  43. return '>';
  44. case '>':
  45. return 'v';
  46. case 'v':
  47. return '<';
  48. case '<':
  49. return '^';
  50. default:
  51. return '^'; // Standardrichtung, falls etwas schiefgeht
  52. }
  53. }
  54. }