77 lines
1.9 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|