|
|
|
|
|
|
|
|
|
|
|
package Praktikum05; |
|
|
|
|
|
|
|
|
|
|
|
import java.util.Random; |
|
|
|
|
|
import java.util.Scanner; |
|
|
|
|
|
|
|
|
|
|
|
public class SnakeBot extends Bot { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected SnakeBot(String[] args) { |
|
|
|
|
|
super(args); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public int counter = 0; |
|
|
|
|
|
private Random leftOrRight = new Random(); |
|
|
|
|
|
@Override |
|
|
|
|
|
protected char nextMove(View view) throws Exception{ |
|
|
|
|
|
boolean exit = false; |
|
|
|
|
|
while(!exit){ |
|
|
|
|
|
System.out.println(counter); |
|
|
|
|
|
int rockPosition = findNextRock(view); |
|
|
|
|
|
if(rockPosition != -1){ |
|
|
|
|
|
testForWagon(view); |
|
|
|
|
|
return determineNextStep(rockPosition); |
|
|
|
|
|
}else{ |
|
|
|
|
|
testForWagon(view); |
|
|
|
|
|
++counter; |
|
|
|
|
|
if (counter < 8) |
|
|
|
|
|
return '^'; |
|
|
|
|
|
else{ |
|
|
|
|
|
if(leftOrRight.nextBoolean() == true) { |
|
|
|
|
|
counter = 0; |
|
|
|
|
|
return '<'; |
|
|
|
|
|
}else { |
|
|
|
|
|
counter = 0; |
|
|
|
|
|
return '>'; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
throw new Exception("Beendet"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private char determineNextStep(int rockPosition) { |
|
|
|
|
|
if (rockPosition < 10) |
|
|
|
|
|
return '^'; |
|
|
|
|
|
else if(rockPosition == 13 || rockPosition == 14 || rockPosition == 18 || rockPosition == 19 || rockPosition == 23 || rockPosition == 24) |
|
|
|
|
|
return '>'; |
|
|
|
|
|
else if(rockPosition == 10 || rockPosition == 11 || rockPosition == 15 || rockPosition == 16 || rockPosition == 20 || rockPosition == 21) |
|
|
|
|
|
return '<'; |
|
|
|
|
|
else return 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private int findNextRock(View view) { |
|
|
|
|
|
return view.data.indexOf('@'); |
|
|
|
|
|
} |
|
|
|
|
|
// test funktioniert nicht muss angepasst werden vielleicht als boolean oder so |
|
|
|
|
|
private char testForWagon(View view){ |
|
|
|
|
|
if (view.data.charAt(7) == '*'){ |
|
|
|
|
|
if (view.data.charAt(11) != '*') { |
|
|
|
|
|
return '<'; |
|
|
|
|
|
}else { |
|
|
|
|
|
if (view.data.charAt(13) == '*') { |
|
|
|
|
|
return 'V'; |
|
|
|
|
|
} else { |
|
|
|
|
|
return '>'; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}else return 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static void main(String args[]){ |
|
|
|
|
|
Bot sbot = new SnakeBot(args); |
|
|
|
|
|
sbot.run(); |
|
|
|
|
|
} |
|
|
|
|
|
} |