|
|
@@ -13,59 +13,83 @@ public class SnakeBot extends Bot { |
|
|
|
public int counter = 0; |
|
|
|
private Random leftOrRight = new Random(); |
|
|
|
@Override |
|
|
|
protected char nextMove(View view) throws Exception{ |
|
|
|
protected char nextMove(View view) throws Exception { |
|
|
|
boolean exit = false; |
|
|
|
while(!exit){ |
|
|
|
System.out.println(counter); |
|
|
|
while (!exit) { |
|
|
|
int rockPosition = findNextRock(view); |
|
|
|
if(rockPosition != -1){ |
|
|
|
testForWagon(view); |
|
|
|
return determineNextStep(rockPosition); |
|
|
|
}else{ |
|
|
|
testForWagon(view); |
|
|
|
if (rockPosition != -1) { |
|
|
|
System.out.println(counter + "| RockPosition: " + rockPosition); |
|
|
|
return testForWagon(view, rockPosition); |
|
|
|
} else { |
|
|
|
++counter; |
|
|
|
if (counter < 8) |
|
|
|
return '^'; |
|
|
|
else{ |
|
|
|
if(leftOrRight.nextBoolean() == true) { |
|
|
|
counter = 0; |
|
|
|
return '<'; |
|
|
|
}else { |
|
|
|
return testForWagon(view, rockPosition); |
|
|
|
else { |
|
|
|
if (view.data.charAt(10) == '*' || view.data.charAt(11) == '*') { |
|
|
|
counter = 0; |
|
|
|
return '>'; |
|
|
|
} else if (view.data.charAt(13) == '*' || view.data.charAt(14) == '*') { |
|
|
|
counter = 0; |
|
|
|
return '<'; |
|
|
|
}else{ |
|
|
|
if(leftOrRight.nextBoolean() == true) { |
|
|
|
counter = 0; |
|
|
|
return '<'; |
|
|
|
}else { |
|
|
|
counter = 0; |
|
|
|
return '>'; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
throw new Exception("Beendet"); |
|
|
|
throw new Exception("Quit"); |
|
|
|
} |
|
|
|
|
|
|
|
private char determineNextStep(int rockPosition) { |
|
|
|
|
|
|
|
private char determineNextStep(int rockPosition,View view) { |
|
|
|
if (rockPosition < 10) |
|
|
|
return '^'; |
|
|
|
else if(rockPosition == 13 || rockPosition == 14 || rockPosition == 18 || rockPosition == 19 || rockPosition == 23 || rockPosition == 24) |
|
|
|
else if(rockPosition == 13 || rockPosition == 14 || rockPosition == 18 || rockPosition == 19 || rockPosition == 23 || rockPosition == 24 && !(view.data.charAt(13) != '*' && view.data.charAt(14) != '*')) |
|
|
|
return '>'; |
|
|
|
else if(rockPosition == 10 || rockPosition == 11 || rockPosition == 15 || rockPosition == 16 || rockPosition == 20 || rockPosition == 21) |
|
|
|
else if((rockPosition == 10 || rockPosition == 11 || rockPosition == 15 || rockPosition == 16 || rockPosition == 20 || rockPosition == 21) && !(view.data.charAt(10) != '*' && view.data.charAt(11) != '*')) |
|
|
|
return '<'; |
|
|
|
else return 0; |
|
|
|
else return '^'; |
|
|
|
} |
|
|
|
|
|
|
|
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){ |
|
|
|
|
|
|
|
private char testForWagon(View view, int rP){ |
|
|
|
char move = ' '; |
|
|
|
if (view.data.charAt(7) == '*'){ |
|
|
|
if (view.data.charAt(11) != '*') { |
|
|
|
return '<'; |
|
|
|
}else { |
|
|
|
if (view.data.charAt(13) == '*') { |
|
|
|
return 'V'; |
|
|
|
} else { |
|
|
|
if(view.data.charAt(11) == '*' || view.data.charAt(13) == '*'){ |
|
|
|
if(view.data.charAt(11) == '*' || view.data.charAt(10) == '*'){ |
|
|
|
return '>'; |
|
|
|
}else if(view.data.charAt(13) == '*' || view.data.charAt(14) == '*'){ |
|
|
|
return '<'; |
|
|
|
} |
|
|
|
}else if(view.data.charAt(11) != '*' && view.data.charAt(13) != '*'){ |
|
|
|
if(view.data.charAt(8) == '*' || view.data.charAt(9) == '*'){ |
|
|
|
if(view.data.charAt(10) == '*'){ |
|
|
|
return '>'; |
|
|
|
}else if(view.data.charAt(14) == '*'){ |
|
|
|
return '<'; |
|
|
|
} |
|
|
|
}else if(view.data.charAt(5) == '+' || view.data.charAt(6) == '*'){ |
|
|
|
if(view.data.charAt(10) == '*'){ |
|
|
|
return '>'; |
|
|
|
}else if(view.data.charAt(14) == '*'){ |
|
|
|
return '<'; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}else return 0; |
|
|
|
}else{ |
|
|
|
move = determineNextStep(rP, view); |
|
|
|
} |
|
|
|
System.out.println(move); |
|
|
|
return move; |
|
|
|
} |
|
|
|
|
|
|
|
public static void main(String args[]){ |