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{
|
||||
String moves = "";
|
||||
private boolean goesForward = true;
|
||||
private int circleNumber = 0;
|
||||
private int spiralNumber = 0;
|
||||
|
||||
public static void main(String[] args) {
|
||||
@ -25,33 +40,6 @@ public class EscapeBot extends Bot{
|
||||
private int findRocketRow(View view) {
|
||||
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(){
|
||||
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{
|
||||
private String moves = "";
|
||||
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{
|
||||
String moves = "";
|
||||
private boolean goesForward = true;
|
||||
private int circleNumber = 0;
|
||||
private int spiralNumber = 0;
|
||||
private boolean ignoreStone = false;
|
||||
public static void main(String[] args) {
|
||||
@ -12,7 +22,7 @@ public class SnakeBot extends Bot{
|
||||
protected SnakeBot(String[] args) {
|
||||
super(args);
|
||||
}
|
||||
//@TODO
|
||||
//@TODO Find a better way to avoid collectedStones
|
||||
protected char nextMove(View view){
|
||||
boolean stoneDetected = view.data.contains("@");
|
||||
char nextMove;
|
||||
@ -68,34 +78,6 @@ public class SnakeBot extends Bot{
|
||||
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(){
|
||||
if (moves.isEmpty()) {
|
||||
spiralNumber++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user