Added task descriptions and removed walkByColumns and walkByCircles
This commit is contained in:
parent
0b5ff137e4
commit
0f5db8bb66
@ -1,7 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* EscapeBot.
|
||||||
|
* Eine wichtige Funktion des Rovers ist es, wieder zurück zur Rakete zu finden, damit er dort seine gesammelten Daten speichern kann.
|
||||||
|
* Die Rakete wird in den Scans als o angezeigt.
|
||||||
|
* Implementieren Sie eine neue Unterklasse von Bot mit dem Namen EscapeBot, die die Oberfläche nach der Rakete absucht und den Rover dorthin fahren lässt.
|
||||||
|
* Sie können davon ausgehen, dass bei dieser Aufgabenstellung keine Hindernisse (Wälder, Wasser, Felsen) auftreten.
|
||||||
|
* Allerdings kennen Sie die Abmessung von Torus III nicht und müssen versuchen, nicht ewig im Kreis zu fahren.
|
||||||
|
* Natürlich ist Energie auf Torus III knapp. Daher sollten Sie die Rakete mit möglichst wenigen Schritten finden.
|
||||||
|
* Um Ihre Implementierung zu testen, müssen Sie den Docker-Container mit einem leicht abgewandelten Befehl starten:
|
||||||
|
* docker run --rm -p 63187:63187 mediaeng/bots escape
|
||||||
|
* Sie sind mit Ihrem Programm zufrieden? Wie wäre es, einmal im Vergleich zu anderen Teams anzutreten?
|
||||||
|
* Sie müssen dazu aber entweder auf einem Hochschulrechner arbeiten oder ins VPN gehen.
|
||||||
|
* Melden Sie sich beim Praktikumsbetreuer, nennen Sie ihm Ihren Teamnamen und die IP-Nummer Ihres teilnehmenden Rechners.
|
||||||
|
* Lassen Sie sich vom Betreuer Ihres Praktikums die IP-Nummer der gemeinsamen Testumgebung geben und sorgen Sie dafür,
|
||||||
|
* dass sich Ihr Bot mit dieser Adresse verbinden kann. Warten Sie bitte mit dem Start, bis Sie dazu aufgefordert werden.
|
||||||
|
* Sobald alle Teams fertig sind, kann der Wettkampf beginnen.
|
||||||
|
*/
|
||||||
public class EscapeBot extends Bot{
|
public class EscapeBot extends Bot{
|
||||||
String moves = "";
|
String moves = "";
|
||||||
private boolean goesForward = true;
|
|
||||||
private int circleNumber = 0;
|
|
||||||
private int spiralNumber = 0;
|
private int spiralNumber = 0;
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
@ -25,33 +40,6 @@ public class EscapeBot extends Bot{
|
|||||||
private int findRocketRow(View view) {
|
private int findRocketRow(View view) {
|
||||||
return view.data.indexOf('o') / 5;
|
return view.data.indexOf('o') / 5;
|
||||||
}
|
}
|
||||||
private char walkByColumns() {
|
|
||||||
if(moves.isEmpty()){
|
|
||||||
moves = "^".repeat(28);
|
|
||||||
moves += (goesForward ? ">^^^^^>" : "<^^^^^<");
|
|
||||||
goesForward = !goesForward;
|
|
||||||
}
|
|
||||||
char nextMove = moves.charAt(0);
|
|
||||||
moves = moves.substring(1);
|
|
||||||
return nextMove;
|
|
||||||
}
|
|
||||||
|
|
||||||
private char walkByCircles(){
|
|
||||||
if (moves.isEmpty()) {
|
|
||||||
circleNumber++;
|
|
||||||
moves += "^".repeat(5) + ">";
|
|
||||||
int[] steps = {5, 10, 10, 10};
|
|
||||||
|
|
||||||
for (int step : steps) {
|
|
||||||
moves += "^".repeat(step * circleNumber) + ">";
|
|
||||||
}
|
|
||||||
|
|
||||||
moves += "^".repeat(5 * circleNumber) + "<";
|
|
||||||
}
|
|
||||||
char nextMove = moves.charAt(0);
|
|
||||||
moves = moves.substring(1);
|
|
||||||
return nextMove;
|
|
||||||
}
|
|
||||||
|
|
||||||
private char walkBySpiral(){
|
private char walkBySpiral(){
|
||||||
if (moves.isEmpty()) {
|
if (moves.isEmpty()) {
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* 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 RumbleBot extends Bot{
|
public class RumbleBot extends Bot{
|
||||||
private String moves = "";
|
private String moves = "";
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -1,7 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* SnakeBot.
|
||||||
|
* Eine weitere wichtige Funktion des Rovers ist es, Gesteinsproben zu sammeln.
|
||||||
|
* Interessante Steine sind im Scan mit einem @ gekennzeichnet.
|
||||||
|
* Mit jeder aufgesammelten Gesteinsprobe wird an den Rover ein Wagen angehängt, der zukünftig hinter dem Rover mitgezogen wird.
|
||||||
|
* Die Wagen sind im Scan mit * zu identifizieren.
|
||||||
|
* Vorsicht: fährt der Rover in einen Wagen, ist er schwer beschädigt und kann keine weiteren Steine mehr sammeln.
|
||||||
|
* Sie können Ihre Implementierung wieder testen mit:
|
||||||
|
* docker run --rm -p 63187:63187 mediaeng/bots snakes
|
||||||
|
* Für diese Funktion wird am 7.2.24 in einer gemeinsamen Arena mit allen Teams des Jahrgangs ein Wettbewerb durchgeführt.
|
||||||
|
* Die besten acht Teams qualifizieren sich für die Königsdisziplin „Rumble“.
|
||||||
|
*/
|
||||||
public class SnakeBot extends Bot{
|
public class SnakeBot extends Bot{
|
||||||
String moves = "";
|
String moves = "";
|
||||||
private boolean goesForward = true;
|
|
||||||
private int circleNumber = 0;
|
|
||||||
private int spiralNumber = 0;
|
private int spiralNumber = 0;
|
||||||
private boolean ignoreStone = false;
|
private boolean ignoreStone = false;
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
@ -12,7 +22,7 @@ public class SnakeBot extends Bot{
|
|||||||
protected SnakeBot(String[] args) {
|
protected SnakeBot(String[] args) {
|
||||||
super(args);
|
super(args);
|
||||||
}
|
}
|
||||||
//@TODO
|
//@TODO Find a better way to avoid collectedStones
|
||||||
protected char nextMove(View view){
|
protected char nextMove(View view){
|
||||||
boolean stoneDetected = view.data.contains("@");
|
boolean stoneDetected = view.data.contains("@");
|
||||||
char nextMove;
|
char nextMove;
|
||||||
@ -68,34 +78,6 @@ public class SnakeBot extends Bot{
|
|||||||
return view.data.indexOf('@') / 5;
|
return view.data.indexOf('@') / 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
private char walkByColumns() {
|
|
||||||
if(moves.isEmpty()){
|
|
||||||
moves = "^".repeat(28);
|
|
||||||
moves += (goesForward ? ">^^^^^>" : "<^^^^^<");
|
|
||||||
goesForward = !goesForward;
|
|
||||||
}
|
|
||||||
char nextMove = moves.charAt(0);
|
|
||||||
moves = moves.substring(1);
|
|
||||||
return nextMove;
|
|
||||||
}
|
|
||||||
|
|
||||||
private char walkByCircles(){
|
|
||||||
if (moves.isEmpty()) {
|
|
||||||
circleNumber++;
|
|
||||||
moves += "^".repeat(5) + ">";
|
|
||||||
int[] steps = {5, 10, 10, 10};
|
|
||||||
|
|
||||||
for (int step : steps) {
|
|
||||||
moves += "^".repeat(step * circleNumber) + ">";
|
|
||||||
}
|
|
||||||
|
|
||||||
moves += "^".repeat(5 * circleNumber) + "<";
|
|
||||||
}
|
|
||||||
char nextMove = moves.charAt(0);
|
|
||||||
moves = moves.substring(1);
|
|
||||||
return nextMove;
|
|
||||||
}
|
|
||||||
|
|
||||||
private char walkBySpiral(){
|
private char walkBySpiral(){
|
||||||
if (moves.isEmpty()) {
|
if (moves.isEmpty()) {
|
||||||
spiralNumber++;
|
spiralNumber++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user