competition tommorrow
This commit is contained in:
commit
a426cd3a57
90
src/EscapeBot.java
Normal file
90
src/EscapeBot.java
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
package praktikum05;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class EscapeBot extends Bot {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private boolean rocketFound = false;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
EscapeBot escapeBot = new EscapeBot(args);
|
||||||
|
escapeBot.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected EscapeBot(String[] args) {
|
||||||
|
super(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected char nextMove(View view) throws Exception {
|
||||||
|
if (!rocketFound) {
|
||||||
|
return findRocket(view);
|
||||||
|
} else {
|
||||||
|
return 'q'; // Stoppe die Bewegung, nachdem die Rakete gefunden wurde
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private char findRocket(View view) {
|
||||||
|
int positionRocket = view.data.indexOf('o');
|
||||||
|
int positionRover = view.data.indexOf('A');
|
||||||
|
|
||||||
|
if (positionRover == positionRocket) {
|
||||||
|
rocketFound = true;
|
||||||
|
return 'q'; // Wenn der Rover bereits auf der Rakete steht, stoppe die Bewegung
|
||||||
|
}
|
||||||
|
|
||||||
|
// Überprüfe, ob die Rakete im Sichtfeld ist
|
||||||
|
if (positionRocket > -1) {
|
||||||
|
int width = view.width;
|
||||||
|
int rowRover = positionRover / width;
|
||||||
|
int colRover = positionRover % width;
|
||||||
|
int rowRocket = positionRocket / width;
|
||||||
|
int colRocket = positionRocket % width;
|
||||||
|
|
||||||
|
// Wenn die Rakete auf der gleichen Zeile ist
|
||||||
|
if (rowRover == rowRocket) {
|
||||||
|
if (colRocket > colRover) {
|
||||||
|
return '>'; // Bewege dich nach rechts
|
||||||
|
} else if (colRocket < colRover) {
|
||||||
|
return '<'; // Bewege dich nach links
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wenn die Rakete auf der gleichen Spalte ist
|
||||||
|
if (colRover == colRocket) {
|
||||||
|
if (rowRocket > rowRover) {
|
||||||
|
return 'v'; // Bewege dich nach unten
|
||||||
|
} else if (rowRocket < rowRover) {
|
||||||
|
return '^'; // Bewege dich nach oben
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ansonsten, benutze eine zufällige Bewegung
|
||||||
|
return moveRandomly();
|
||||||
|
}
|
||||||
|
|
||||||
|
private char moveRandomly() {
|
||||||
|
Random random = new Random();
|
||||||
|
int randomDirection = random.nextInt(4);
|
||||||
|
|
||||||
|
switch (randomDirection) {
|
||||||
|
case 0:
|
||||||
|
return '^'; // Vorwärts
|
||||||
|
case 1:
|
||||||
|
return 'v'; // Rückwärts
|
||||||
|
case 2:
|
||||||
|
return '<'; // Linksdrehung
|
||||||
|
case 3:
|
||||||
|
return '>'; // Rechtsdrehung
|
||||||
|
default:
|
||||||
|
return 'q'; // Abbruch der Verbindung
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
56
src/RumbleBot.java
Normal file
56
src/RumbleBot.java
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
package praktikum05;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class RumbleBot extends Bot {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
RumbleBot rumbleBot = new RumbleBot(args);
|
||||||
|
rumbleBot.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected RumbleBot(String[] args) {
|
||||||
|
super(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected char nextMove(View view) throws Exception {
|
||||||
|
if (view.data.indexOf('*') > -1) {
|
||||||
|
return shootIfEnemyInRange(view);
|
||||||
|
} else {
|
||||||
|
return moveRandomly();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected char moveRandomly() {
|
||||||
|
Random random = new Random();
|
||||||
|
int randomDirection = random.nextInt(4);
|
||||||
|
|
||||||
|
switch (randomDirection) {
|
||||||
|
case 0:
|
||||||
|
return '^'; // Vorwärts
|
||||||
|
case 1:
|
||||||
|
return 'v'; // Rückwärts
|
||||||
|
case 2:
|
||||||
|
return '<'; // Linksdrehung
|
||||||
|
case 3:
|
||||||
|
return '>'; // Rechtsdrehung
|
||||||
|
default:
|
||||||
|
return 'q'; // Abbruch der Verbindung
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected char shootIfEnemyInRange(View view) {
|
||||||
|
int positionEnemy = view.data.indexOf('B');
|
||||||
|
int positionRover = view.data.indexOf('A');
|
||||||
|
|
||||||
|
// Überprüfen, ob der Feind in derselben Zeile istdocker run --rm -p 63187:63187 mediaeng/bots escape
|
||||||
|
if (positionRover / 5 == positionEnemy / 5) {
|
||||||
|
return 'f'; // Feuerbefehl
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ansonsten zufällig bewegen
|
||||||
|
return moveRandomly();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
107
src/SnakeBot.java
Normal file
107
src/SnakeBot.java
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
package praktikum05;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class SnakeBot extends Bot {
|
||||||
|
|
||||||
|
private int wagonsCollected = 0;
|
||||||
|
int countMoves = 1;
|
||||||
|
// private boolean damaged = false;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SnakeBot snakeBot = new SnakeBot(args);
|
||||||
|
snakeBot.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected SnakeBot(String[] args) {
|
||||||
|
super(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected char nextMove(View view) throws Exception {
|
||||||
|
/*if (damaged) {
|
||||||
|
return 'q'; // Wenn der Rover beschädigt ist, stoppe die Bewegung
|
||||||
|
}*/
|
||||||
|
|
||||||
|
if (view.data.charAt(7) == '*') {
|
||||||
|
outWalkWagon(view);
|
||||||
|
} else if (view.data.indexOf('@') > -1) {
|
||||||
|
return goToRock(view);
|
||||||
|
} else {
|
||||||
|
return findRock(view);
|
||||||
|
}
|
||||||
|
return '^';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected char findRock(View view) {
|
||||||
|
Random random = new Random();
|
||||||
|
int randomDirection = random.nextInt(2);
|
||||||
|
|
||||||
|
|
||||||
|
if (countMoves <= 10) {
|
||||||
|
countMoves ++;
|
||||||
|
return '^';
|
||||||
|
} else if (countMoves > 10) {
|
||||||
|
switch (randomDirection) {
|
||||||
|
case 1:
|
||||||
|
countMoves = 0;
|
||||||
|
return '>'; // Rechtsdrehung
|
||||||
|
case 2:
|
||||||
|
countMoves = 0;
|
||||||
|
return '<'; // Linksdrehung
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '<';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected char goToRock(View view) {
|
||||||
|
int positionRock = view.data.indexOf('@');
|
||||||
|
int positionRover = view.data.indexOf('A');
|
||||||
|
if (positionRover / 5 != positionRock / 5) {
|
||||||
|
if (positionRover / 5 > positionRock / 5) {
|
||||||
|
if (view.data.charAt(7) == '*') {
|
||||||
|
return outWalkWagon(view);
|
||||||
|
} else {
|
||||||
|
return '^';
|
||||||
|
}
|
||||||
|
} else if (positionRover / 5 < positionRock / 5) {
|
||||||
|
if (view.data.charAt(17) == '*') {
|
||||||
|
return outWalkWagon(view);
|
||||||
|
} else {
|
||||||
|
return 'v';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (positionRover % 5 != positionRock % 5) {
|
||||||
|
if (positionRover % 5 > positionRock % 5) {
|
||||||
|
return '<';
|
||||||
|
} else if (positionRover % 5 < positionRock % 5) {
|
||||||
|
return '>';
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected char outWalkWagon(View view) {
|
||||||
|
return '<';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*protected char collectSample(View view) {
|
||||||
|
int positionSample = view.data.indexOf('*');
|
||||||
|
int positionRover = view.data.indexOf('A');
|
||||||
|
|
||||||
|
// Überprüfen, ob die Gesteinsprobe im selben Feld ist
|
||||||
|
if (positionRover == positionSample) {
|
||||||
|
wagonsCollected++;
|
||||||
|
if (wagonsCollected > 1) {
|
||||||
|
damaged = true; // Der Rover wird beschädigt, wenn er in mehr als einen Wagen fährt
|
||||||
|
}
|
||||||
|
return 'C'; // Aufsammeln der Gesteinsprobe und Hinzufügen eines Wagens
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ansonsten zufällig bewegen
|
||||||
|
return findRock(view);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user