Browse Source

added beta version of RumbleBot

main
Illia Soloviov 11 months ago
parent
commit
bfc344c9aa
2 changed files with 126 additions and 0 deletions
  1. 64
    0
      src/RumbleBotTest1.java
  2. 62
    0
      src/RumbleBotTest2.java

+ 64
- 0
src/RumbleBotTest1.java View File

/*
* RumbleBot.
* Der Rover ist auch mit einem Geschütz ausgestattet, dass nur in Fahrrichtung feuern kann.
* Der Feuerbefehl ist „f“. Die Reichweite des Geschützes entspricht der Scanreichweite.
* Wälder, Felsen und Wasser blockieren Schüsse.
* Der Rover ist beim ersten Treffer zerstört. Wer überlebt am längsten?
* docker run --rm -p 63187:63187 mediaeng/bots rumble
*/

public class RumbleBotTest1 extends Bot {

private char currentDirection = '^'; // Start-Richtung des Bots

protected RumbleBotTest1(String[] args) {
super(args);
}

public static void main(String[] args) {

Bot rumbleBot = new RumbleBot(args);
rumbleBot.run();
System.out.println("hello");
}

@Override
protected char nextMove(View view) {
// Scanne das Spielfeld nach Gegnern in Fahrtrichtung
if (isEnemyInSight(view)) {
return 'f'; // Feuere, wenn ein Gegner in Reichweite ist
}

// Wenn kein Gegner in Sicht, wähle eine Bewegung
return chooseMove(view);
}

private boolean isEnemyInSight(View view) {
// Prüfe, ob ein Gegner in der aktuellen Fahrtrichtung ist
// Annahme: Gegner sind als ^, <, >, v gekennzeichnet
String enemySymbols = "^<>v";
return view.data.contains(String.valueOf(currentDirection)) && enemySymbols.contains(String.valueOf(currentDirection));
}

private char chooseMove(View view) {
// Wähle eine sichere Bewegung, vermeide Hindernisse und versuche, Gegner zu finden
// Einfache Implementierung: Wechsle die Richtung bei jedem Zug
currentDirection = getNextDirection(currentDirection);
return currentDirection;
}

private char getNextDirection(char currentDirection) {
switch (currentDirection) {
case '^':
return '>';
case '>':
return 'v';
case 'v':
return '<';
case '<':
return '^';
default:
return '^'; // Standardrichtung, falls etwas schiefgeht
}
}
}

+ 62
- 0
src/RumbleBotTest2.java View File

/*
* RumbleBot.
* Der Rover ist auch mit einem Geschütz ausgestattet, dass nur in Fahrrichtung feuern kann.
* Der Feuerbefehl ist „f“. Die Reichweite des Geschützes entspricht der Scanreichweite.
* Wälder, Felsen und Wasser blockieren Schüsse.
* Der Rover ist beim ersten Treffer zerstört. Wer überlebt am längsten?
* docker run --rm -p 63187:63187 mediaeng/bots rumble
*/

public class RumbleBotTest2 extends Bot {

private char currentDirection = '^'; // Start-Richtung des Bots

protected RumbleBotTest2(String[] args) {
super(args);
}

public static void main(String[] args) {
Bot rumbleBot = new RumbleBot(args);
rumbleBot.run();
}

@Override
protected char nextMove(View view) {
// Scanne das Spielfeld nach Gegnern in Fahrtrichtung
if (isEnemyInSight(view)) {
return 'f'; // Feuere, wenn ein Gegner in Reichweite ist
}

// Wenn kein Gegner in Sicht, wähle eine Bewegung
return chooseMove(view);
}

private boolean isEnemyInSight(View view) {
// Prüfe, ob ein Gegner in der aktuellen Fahrtrichtung ist
// Annahme: Gegner sind als ^, <, >, v gekennzeichnet
String enemySymbols = "^<>v";
return view.data.contains(String.valueOf(currentDirection)) && enemySymbols.contains(String.valueOf(currentDirection));
}

private char chooseMove(View view) {
// Wähle eine sichere Bewegung, vermeide Hindernisse und versuche, Gegner zu finden
// Einfache Implementierung: Wechsle die Richtung bei jedem Zug
currentDirection = getNextDirection(currentDirection);
return currentDirection;
}

private char getNextDirection(char currentDirection) {
switch (currentDirection) {
case '^':
return '>';
case '>':
return 'v';
case 'v':
return '<';
case '<':
return '^';
default:
return '^'; // Standardrichtung, falls etwas schiefgeht
}
}
}

Loading…
Cancel
Save