„SnakeBot.java“ ändern

This commit is contained in:
Jasmin Zieroth 2024-02-06 21:38:32 +00:00
parent e917165fa8
commit d7f85e7568

View File

@ -1,16 +1,16 @@
package praktikum05; package bot;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class SnakeBotMimi extends Bot{ public class SnakeBot extends Bot{
boolean lastMoveWasTurn = false; // Merker, ob der letzte Zug eine Drehung war boolean lastMoveWasTurn = false; // Merker, ob der letzte Zug eine Drehung war
public static void main(String[] args) { public static void main(String[] args) {
Bot snakeBot = new SnakeBotMimi(args); Bot snakeBot = new SnakeBot(args);
snakeBot.run(); snakeBot.run();
} }
protected SnakeBotMimi(String[] args) { protected SnakeBot(String[] args) {
super(args); super(args);
} }
@ -23,9 +23,9 @@ public class SnakeBotMimi extends Bot{
System.out.println(view.data + " xxx: "); System.out.println(view.data + " xxx: ");
// Das ist nur fuer debug // Das ist nur fuer debug
// List<Integer> positions = positionsOfRock(view.data); // List<Integer> positions = positionsOfRock(view.data);
// for (Integer i : positions) // for (Integer i : positions)
// System.out.println("Position: " + i); // System.out.println("Position: " + i);
if (lastMoveWasTurn) { if (lastMoveWasTurn) {
lastMoveWasTurn = false; // Merker fuer die letzte Drehung zuruecksetzen lastMoveWasTurn = false; // Merker fuer die letzte Drehung zuruecksetzen
@ -46,40 +46,40 @@ public class SnakeBotMimi extends Bot{
* @param view * @param view
* @return * @return
*/ */
private char calculateNextMove(View view){ private char calculateNextMove(View view){
List<Integer> positions = positionsOfRock(view.data); List<Integer> positions = positionsOfRock(view.data);
int firstPostion = positions.get(0); int firstPostion = positions.get(0);
// Wenn das @Zeichen an Position kleiner 11, dann ist es oberhalb von uns // Wenn das @Zeichen an Position kleiner 11, dann ist es oberhalb von uns
if (firstPostion < 11 ) if (firstPostion < 11 )
return '^'; return '^';
// Ist die Position vom @Zeichen zwischn 11 und 12, dann links von uns // Ist die Position vom @Zeichen zwischn 11 und 12, dann links von uns
// wir muessen uns nach links drehen // wir muessen uns nach links drehen
else if (firstPostion >= 11 && firstPostion < 13) { else if (firstPostion >= 11 && firstPostion < 13) {
lastMoveWasTurn = true; // Merker auf true, da wir uns gedreht haben lastMoveWasTurn = true; // Merker auf true, da wir uns gedreht haben
return '<'; return '<';
} }
// Bei allen anderen Positionen drehen wir uns nach rechts drehen // Bei allen anderen Positionen drehen wir uns nach rechts drehen
else { else {
lastMoveWasTurn = true; // Merker auf true, da wir uns gedreht haben lastMoveWasTurn = true; // Merker auf true, da wir uns gedreht haben
return '>'; return '>';
}
} }
}
/** /**
* Ermittle alle Positionen der Steine innerhalb des flachen Scans * Ermittle alle Positionen der Steine innerhalb des flachen Scans
* @param row das Ergebnis von View.data (der Scan als String) * @param row das Ergebnis von View.data (der Scan als String)
* @return eine Liste mit den Positionen * @return eine Liste mit den Positionen
*/ */
private List<Integer> positionsOfRock (String row){ private List<Integer> positionsOfRock (String row){
int index = row.indexOf('@'); int index = row.indexOf('@');
ArrayList<Integer> positions = new ArrayList<>(); ArrayList<Integer> positions = new ArrayList<>();
while (index >= 0) { while (index >= 0) {
positions.add(index); positions.add(index);
index = row.indexOf('@', index + 1); index = row.indexOf('@', index + 1);
}
return positions;
} }
return positions;
}
} }