Prog3A-Studientag-Bot/src/RumbleBot.java
2025-02-11 14:06:40 +01:00

77 lines
1.9 KiB
Java

public class RumbleBot extends Bot {
private int game_state = 0;
public static void main(String[] args) {
RumbleBot eb = new RumbleBot(args);
eb.run();
}
public RumbleBot(String[] args) {
super(args);
}
protected char nextMove(View view) throws Exception {
String scan = view.data;
//if (Gegner in Schusslinie) --> Feuer
if (checkFireLane(scan)) {
return 'f';
}
//if (Gegner links, oder rechts) --> drehen
switch (checkLeftAndRight(scan)) {
case 0:
return '<';
case 1:
return '>';
default:
break;
}
//if Hindernis --> drehen
if (checkForCollission(scan)) {
return '<';
}
//else --> laufen
return '^';
}
private boolean checkFireLane(String scan) {
String notEnemy = ".~#XA@";
char c1 = scan.charAt(2);
char c2 = scan.charAt(7);
if (notEnemy.indexOf(c1) == -1 || notEnemy.indexOf(c2) == -1) { //wenn true, dann Gegner vor uns
return true;
} else {
return false;
}
}
private int checkLeftAndRight(String scan) {
String notEnemy = ".~#XA@";
char l1 = scan.charAt(10);
char l2 = scan.charAt(11);
char r1 = scan.charAt(13);
char r2 = scan.charAt(14);
if (notEnemy.indexOf(l1) == -1 || notEnemy.indexOf(l2) == -1) { //wenn true, dann Gegner vor uns
return 0;
}
if (notEnemy.indexOf(r1) == -1 || notEnemy.indexOf(r2) == -1) { //wenn true, dann Gegner vor uns
return 1;
}
return 2;
}
private boolean checkForCollission(String scan) {
char c = scan.charAt(7);
if (c != '.') {
return true;
} else {
return false;
}
}
}