package trips; public class JaagupiLaud implements LauaLiides{ StringBuffer sisu=new StringBuffer("........."); char eelmine='?'; //kes viimati käis, alguses määramata int k2igunr; public void tyhjenda() { sisu=new StringBuffer("........."); eelmine='?'; k2igunr=0; } public boolean kasVaba(int rida, int veerg) { return symbol(rida, veerg)=='.'; } public char symbol(int rida, int veerg){ return sisu.charAt(kohanumber(rida, veerg)); } public int k2ik(int rida, int veerg, char symbol) { if(symbol != '0' && symbol!='X'){ throw new RuntimeException("Lubamatu sümbol"); } if(symbol==eelmine){ throw new RuntimeException("Sama mängija järjestikune käik"); } if(rida<1){throw new IndexOutOfBoundsException("Liiga väike rea number");} if(veerg<1){throw new IndexOutOfBoundsException("Liiga väike veeru number");} if(rida>3){throw new IndexOutOfBoundsException("Liiga suur rea number");} if(veerg>3){throw new IndexOutOfBoundsException("Liiga suur veeru number");} if(!kasVaba(rida, veerg)){ throw new RuntimeException("Pole vaba"); } sisu.setCharAt(kohanumber(rida, veerg), symbol); k2igunr++; eelmine=symbol; if(kasV6it(symbol)){ if(symbol=='0'){return 1;} return 2; } if(k2igunr==9){return 3;} return 0; } int kohanumber(int rida, int veerg){ return (rida-1)*3+(veerg-1); } protected boolean kasVordub(int[][] kohad, char symbol){ if(symbol(kohad[0][0], kohad[0][1])!=symbol){return false;} if(symbol(kohad[1][0], kohad[1][1])!=symbol){return false;} if(symbol(kohad[2][0], kohad[2][1])!=symbol){return false;} return true; } protected boolean kasV6it(char symbol){ if(kasVordub(new int[][]{{1, 1}, {2, 1}, {3, 1}}, symbol)){return true;} if(kasVordub(new int[][]{{1, 2}, {2, 2}, {3, 2}}, symbol)){return true;} if(kasVordub(new int[][]{{1, 3}, {2, 3}, {3, 3}}, symbol)){return true;} if(kasVordub(new int[][]{{1, 1}, {1, 2}, {1, 3}}, symbol)){return true;} if(kasVordub(new int[][]{{2, 1}, {2, 2}, {2, 3}}, symbol)){return true;} if(kasVordub(new int[][]{{3, 1}, {3, 2}, {3, 3}}, symbol)){return true;} if(kasVordub(new int[][]{{1, 1}, {2, 2}, {3, 3}}, symbol)){return true;} if(kasVordub(new int[][]{{1, 3}, {2, 2}, {3, 1}}, symbol)){return true;} return false; } }