added beta version of RumbleBot
This commit is contained in:
parent
4c20806d7e
commit
bfc344c9aa
64
src/RumbleBotTest1.java
Normal file
64
src/RumbleBotTest1.java
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* 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
src/RumbleBotTest2.java
Normal file
62
src/RumbleBotTest2.java
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* 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…
x
Reference in New Issue
Block a user