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) { int rockPosition = findNextRock(view); if (rockPosition != -1) { System.out.println(counter + "| RockPosition: " + rockPosition); return testForWagon(view, rockPosition); } else { ++counter; if (counter < 8) 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("Quit"); } 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 && !(view.data.charAt(13) != '*' && view.data.charAt(14) != '*')) return '>'; 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 '^'; } private int findNextRock(View view) { return view.data.indexOf('@'); } private char testForWagon(View view, int rP){ char move = ' '; if (view.data.charAt(7) == '*'){ 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{ move = determineNextStep(rP, view); } System.out.println(move); return move; } public static void main(String args[]){ Bot sbot = new SnakeBot(args); sbot.run(); } }