diff --git a/src/domain/BotEasyFuchs.java b/src/domain/BotEasyFuchs.java index ec93b5e..78ac157 100644 --- a/src/domain/BotEasyFuchs.java +++ b/src/domain/BotEasyFuchs.java @@ -11,18 +11,7 @@ public class BotEasyFuchs extends Bot { char[][] spielbrettArray = spiel.getSpielbrettArray(); ArrayList spielfigurExistiert = new ArrayList<>(); - for(int i = 0; i < spielbrettArray.length; i++ ) - { - for(int k = 0; k < spielbrettArray[i].length; k++ ){ - if(spielbrettArray[i][k] == 'O') { - spielfigurExistiert.add(i + "," + k); - } - } - - if(spielfigurExistiert.size() == 2) { - break; - } - } + spielfigurExistiert = spiel.spielfigurExistiert(fuchs); int altY, altX, neuY = 0, neuX = 0; Random rand = new Random(); @@ -34,15 +23,43 @@ public class BotEasyFuchs extends Bot { altX = Character.getNumericValue(random.charAt(2)); do { - // neuY = rand.nextInt(((altY + 1) - (altY - 1)) + 1) + (altY - 1); - // neuX = rand.nextInt(((altX + 1) - (altX - 1)) + 1) + (altX - 1); + do { + neuY = rand.nextInt(((altY + 1) - (altY - 1)) + 1) + (altY - 1); + neuX = rand.nextInt(((altX + 1) - (altX - 1)) + 1) + (altX - 1); + } while(neuY == altY && neuX == altX || neuX == 0 || neuX == 10 || neuY == -1 || neuY == 9); - neuY = rand.nextInt(9); - neuX = rand.nextInt(9) + 1; + if(spielbrettArray[neuY][neuX] == 'X') { + + // noch zu ändern wenn der Fuchs auch diagonal nach Hennen Kill springen kann ---------------------------------------------- + + int neuY2 = neuY; int zähler1 = 0; + do { + if(zähler1 == 6) { + break; + } + neuY2 = rand.nextInt(((neuY + 1) - (neuY - 1)) + 1) + (neuY - 1); + zähler1++; + } while(neuY2 == altY || neuX == 0 || neuX == 10 || neuY == -1 || neuY == 9); + + if(neuY2 == neuY){ + int neuX2 = neuX; int zähler2 = 0; + do { + if(zähler2 == 6) { + break; + } + neuX2 = rand.nextInt(((neuX + 1) - (neuX - 1)) + 1) + (neuX - 1); + zähler2++; + } while(neuX2 == neuX || neuX2 == altX || neuX == 0 || neuX == 10 || neuY == -1 || neuY == 9); + neuX = neuX2; + } + neuY = neuY2; + } } while (neuX == 0 || neuX == 10 || neuY == -1 || neuY == 9); - zug = altY + "," + altX + " " + neuY + "," + neuX; + int[] koordinatenUmgewandelt = spiel.wandelUmgekehrtUm(altY, altX, neuY, neuX); + zug = koordinatenUmgewandelt[0] + "," + koordinatenUmgewandelt[1] + " " + + koordinatenUmgewandelt[2] + "," + koordinatenUmgewandelt[3]; } while(fuchs.oberIsValidMove(zug, spiel) == false); diff --git a/src/domain/BotEasyHenne.java b/src/domain/BotEasyHenne.java index 835406d..185c4c0 100644 --- a/src/domain/BotEasyHenne.java +++ b/src/domain/BotEasyHenne.java @@ -8,17 +8,9 @@ public class BotEasyHenne extends Bot { @Override public String zugBestimmen(Spiel spiel, Spielfigur henne) { String zug; - char[][] spielbrettArray = spiel.getSpielbrettArray(); ArrayList spielfigurExistiert = new ArrayList<>(); - for(int i = 0; i < spielbrettArray.length; i++ ) - { - for(int k = 0; k < spielbrettArray[i].length; k++ ){ - if(spielbrettArray[i][k] == 'X') { - spielfigurExistiert.add(i + "," + k); - } - } - } + spielfigurExistiert = spiel.spielfigurExistiert(henne); int altY, altX, neuY = 0, neuX = 0; Random rand = new Random(); @@ -38,7 +30,9 @@ public class BotEasyHenne extends Bot { } } while (neuX == 0 || neuX == 10 || neuY == -1 || neuY == 9); - zug = altY + "," + altX + " " + neuY + "," + neuX; + int[] koordinatenUmgewandelt = spiel.wandelUmgekehrtUm(altY, altX, neuY, neuX); + zug = koordinatenUmgewandelt[0] + "," + koordinatenUmgewandelt[1] + " " + + koordinatenUmgewandelt[2] + "," + koordinatenUmgewandelt[3]; } while(henne.oberIsValidMove(zug, spiel) == false); diff --git a/src/domain/Spiel.java b/src/domain/Spiel.java index 2e983ca..7b9e949 100644 --- a/src/domain/Spiel.java +++ b/src/domain/Spiel.java @@ -1,5 +1,7 @@ package domain; +import java.util.ArrayList; + public class Spiel { private String spielname; @@ -180,448 +182,555 @@ public class Spiel { public void ändereWertImArray(int y, int x, char symbol) { spielbrettArray[y][x] = symbol; } + + public String yourMove(Spiel spiel, Bot ki, Spielfigur computer) { + String zug = ki.zugBestimmen(spiel, computer); + + int[] neueKoordinaten = spiel.berechneRichtigeKoordinaten(zug); + int neueStartY = neueKoordinaten[0]; + int neueStartX = neueKoordinaten[1]; + int neueZielY = neueKoordinaten[2]; + int neueZielX = neueKoordinaten[3]; + + computer.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); + + return zug; + } + + public boolean gewinnBedingungHennen() { + if (spielbrettArray[0][4] == 'X' && spielbrettArray[0][5] == 'X' && spielbrettArray[0][6] == 'X' + && spielbrettArray[1][4] == 'X' && spielbrettArray[1][5] == 'X' && spielbrettArray[1][6] == 'X' + && spielbrettArray[2][4] == 'X' && spielbrettArray[2][5] == 'X' && spielbrettArray[2][6] == 'X') { + return true; + } + int spielfigurExistiert = 0; + + for (int i = 0; i < spielbrettArray.length; i++) { + for (int k = 0; k < spielbrettArray[i].length; k++) { + if (spielbrettArray[i][k] == 'O') { + spielfigurExistiert++; + } + } + if (spielfigurExistiert >= 1) { + return false; + } + } + if (spielfigurExistiert == 0) { + return true; + } + return false; + } + + public boolean gewinnBedingungFuchs() { + int spielfigurExistiert = 0; + + for (int i = 0; i < spielbrettArray.length; i++) { + for (int k = 0; k < spielbrettArray[i].length; k++) { + if (spielbrettArray[i][k] == 'X') { + spielfigurExistiert++; + } + } + if (spielfigurExistiert > 8) { + return false; + } + } + return false; + } + + public ArrayList spielfigurExistiert(Spielfigur spielfigur) { + ArrayList spielfigurExistiert = new ArrayList<>(); + + if(spielfigur instanceof Fuchs) { + for(int i = 0; i < spielbrettArray.length; i++ ) + { + for(int k = 0; k < spielbrettArray[i].length; k++ ){ + if(spielbrettArray[i][k] == 'O') { + spielfigurExistiert.add(i + "," + k); + } + } + if(spielfigurExistiert.size() == 2) { + break; + } + } + return spielfigurExistiert; + } + + if(spielfigur instanceof Hennen) { + for(int i = 0; i < spielbrettArray.length; i++ ) + { + for(int k = 0; k < spielbrettArray[i].length; k++ ){ + if(spielbrettArray[i][k] == 'X') { + spielfigurExistiert.add(i + "," + k); + } + } + if(spielfigurExistiert.size() == 27) { + break; + } + } + return spielfigurExistiert; + } + return null; + } + + public int[] wandelUmgekehrtUm(int umwandeln1, int umwandeln2, int umwandeln3, int umwandeln4) { + int[] umgewandelt = new int[4]; + umgewandelt[0] = (umwandeln2 - 1); + umgewandelt[1] = (8 - umwandeln1); + umgewandelt[2] = (umwandeln4 - 1); + umgewandelt[3] = (8 - umwandeln3); + + return umgewandelt; + } public int[] wandelPassendUm(int umwandeln1, int umwandeln2) { - // Erlaubte Koordinaten sind: - // 3,0 / 4,0 / 5,0 - 3,1 / 4,1 / 5,1 - 3,2 / 4,2 / 5,2 - // 0,3 / 1,3 / 2,3 / 3,3 / 4,3 / 5,3 / 6,3 / 7,3 / 8,3 - // 0,4 / ... - // 0,5 / ... - // 3,6 / 4,6 / 5,6 - 3,7 / 4,7 / 5,7 - 3,8 / 4,8 / 5,8 - - // Fälle 3,0 / 4,0 / 5,0 - if (umwandeln1 == 3 && umwandeln2 == 0) { - umwandeln1 = 8; - umwandeln2 = 4; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - - } - if (umwandeln1 == 4 && umwandeln2 == 0) { - umwandeln1 = 8; - umwandeln2 = 5; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 0 ) { - umwandeln1 = 8 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - - // Fälle 3,1 / 4,1 / 5,1 - if (umwandeln1 == 3 && umwandeln2 == 1 ) { - umwandeln1 = 7 ; - umwandeln2 = 4 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - - } - if (umwandeln1 == 4 && umwandeln2 == 1 ) { - umwandeln1 = 7 ; - umwandeln2 = 5 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 1 ) { - umwandeln1 = 7 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - - // Fälle 3,2 / 4,2 / 5,2 - if (umwandeln1 == 3 && umwandeln2 == 2 ) { - umwandeln1 = 6 ; - umwandeln2 = 4 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - - } - if (umwandeln1 == 4 && umwandeln2 == 2 ) { - umwandeln1 = 6 ; - umwandeln2 = 5 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 2 ) { - umwandeln1 = 6 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - - // Fälle 0,3 - 8,3 - if (umwandeln1 == 0 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 1 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 1 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 2 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 2 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 3 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 3 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 4 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 4 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 5 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 6 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 7 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 7 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 8 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 8 && umwandeln2 == 3 ) { - umwandeln1 = 5 ; - umwandeln2 = 9 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - // Fälle 0,4 - 8,4 - if (umwandeln1 == 0 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 1 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 1 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 2 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 2 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 3 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 3 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 4 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 4 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 5 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 6 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 7 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 7 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 8 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 8 && umwandeln2 == 4 ) { - umwandeln1 = 4 ; - umwandeln2 = 9 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - - // Fälle 0,5 - 8,5 - if (umwandeln1 == 0 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 1 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 1 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 2 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 2 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 3 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 3 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 4 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 4 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 5 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 6 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 7 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 7 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 8 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 8 && umwandeln2 == 5 ) { - umwandeln1 = 3 ; - umwandeln2 = 9 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - - //Fälle 3,6 - 5,6 - if (umwandeln1 == 3 && umwandeln2 == 6) { - umwandeln1 = 2; - umwandeln2 = 4; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - - } - if (umwandeln1 == 4 && umwandeln2 == 6) { - umwandeln1 = 2; - umwandeln2 = 5; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 6 ) { - umwandeln1 = 2 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - //Fälle 3,7 - 5,7 - if (umwandeln1 == 3 && umwandeln2 == 7) { - umwandeln1 = 1; - umwandeln2 = 4; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - - } - if (umwandeln1 == 4 && umwandeln2 == 7) { - umwandeln1 = 1; - umwandeln2 = 5; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 7 ) { - umwandeln1 = 1 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - //Fälle 3,8 - 5,8 - if (umwandeln1 == 3 && umwandeln2 == 8) { - umwandeln1 = 0; - umwandeln2 = 4; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - - } - if (umwandeln1 == 4 && umwandeln2 == 8) { - umwandeln1 = 0; - umwandeln2 = 5; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - if (umwandeln1 == 5 && umwandeln2 == 8 ) { - umwandeln1 = 0 ; - umwandeln2 = 6 ; - - int[] umgewandelt = new int[2]; - umgewandelt[0] = umwandeln1; - umgewandelt[1] = umwandeln2; - return umgewandelt; - } - - //Fehlerwert ist 1000 int[] umgewandelt = new int[2]; - umgewandelt[0] = 1000; - umgewandelt[1] = 1000; - return umgewandelt; + umgewandelt[0] = (8 - umwandeln2); + umgewandelt[1] = (umwandeln1 + 1); + return umgewandelt; } + + // public int[] wandelPassendUm(int umwandeln1, int umwandeln2) { + // // Erlaubte Koordinaten sind: + // // 3,0 / 4,0 / 5,0 - 3,1 / 4,1 / 5,1 - 3,2 / 4,2 / 5,2 + // // 0,3 / 1,3 / 2,3 / 3,3 / 4,3 / 5,3 / 6,3 / 7,3 / 8,3 + // // 0,4 / ... + // // 0,5 / ... + // // 3,6 / 4,6 / 5,6 - 3,7 / 4,7 / 5,7 - 3,8 / 4,8 / 5,8 + + // // Fälle 3,0 / 4,0 / 5,0 + // if (umwandeln1 == 3 && umwandeln2 == 0) { + // umwandeln1 = 8; + // umwandeln2 = 4; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + + // } + // if (umwandeln1 == 4 && umwandeln2 == 0) { + // umwandeln1 = 8; + // umwandeln2 = 5; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 0 ) { + // umwandeln1 = 8 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + + // // Fälle 3,1 / 4,1 / 5,1 + // if (umwandeln1 == 3 && umwandeln2 == 1 ) { + // umwandeln1 = 7 ; + // umwandeln2 = 4 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + + // } + // if (umwandeln1 == 4 && umwandeln2 == 1 ) { + // umwandeln1 = 7 ; + // umwandeln2 = 5 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 1 ) { + // umwandeln1 = 7 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + + // // Fälle 3,2 / 4,2 / 5,2 + // if (umwandeln1 == 3 && umwandeln2 == 2 ) { + // umwandeln1 = 6 ; + // umwandeln2 = 4 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + + // } + // if (umwandeln1 == 4 && umwandeln2 == 2 ) { + // umwandeln1 = 6 ; + // umwandeln2 = 5 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 2 ) { + // umwandeln1 = 6 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + + // // Fälle 0,3 - 8,3 + // if (umwandeln1 == 0 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 1 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 1 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 2 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 2 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 3 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 3 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 4 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 4 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 5 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 6 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 7 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 7 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 8 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 8 && umwandeln2 == 3 ) { + // umwandeln1 = 5 ; + // umwandeln2 = 9 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // // Fälle 0,4 - 8,4 + // if (umwandeln1 == 0 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 1 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 1 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 2 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 2 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 3 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 3 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 4 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 4 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 5 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 6 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 7 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 7 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 8 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 8 && umwandeln2 == 4 ) { + // umwandeln1 = 4 ; + // umwandeln2 = 9 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + + // // Fälle 0,5 - 8,5 + // if (umwandeln1 == 0 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 1 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 1 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 2 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 2 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 3 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 3 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 4 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 4 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 5 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 6 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 7 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 7 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 8 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 8 && umwandeln2 == 5 ) { + // umwandeln1 = 3 ; + // umwandeln2 = 9 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + + // //Fälle 3,6 - 5,6 + // if (umwandeln1 == 3 && umwandeln2 == 6) { + // umwandeln1 = 2; + // umwandeln2 = 4; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + + // } + // if (umwandeln1 == 4 && umwandeln2 == 6) { + // umwandeln1 = 2; + // umwandeln2 = 5; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 6 ) { + // umwandeln1 = 2 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // //Fälle 3,7 - 5,7 + // if (umwandeln1 == 3 && umwandeln2 == 7) { + // umwandeln1 = 1; + // umwandeln2 = 4; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + + // } + // if (umwandeln1 == 4 && umwandeln2 == 7) { + // umwandeln1 = 1; + // umwandeln2 = 5; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 7 ) { + // umwandeln1 = 1 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // //Fälle 3,8 - 5,8 + // if (umwandeln1 == 3 && umwandeln2 == 8) { + // umwandeln1 = 0; + // umwandeln2 = 4; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + + // } + // if (umwandeln1 == 4 && umwandeln2 == 8) { + // umwandeln1 = 0; + // umwandeln2 = 5; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + // if (umwandeln1 == 5 && umwandeln2 == 8 ) { + // umwandeln1 = 0 ; + // umwandeln2 = 6 ; + + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = umwandeln1; + // umgewandelt[1] = umwandeln2; + // return umgewandelt; + // } + + // //Fehlerwert ist 1000 + // int[] umgewandelt = new int[2]; + // umgewandelt[0] = 1000; + // umgewandelt[1] = 1000; + // return umgewandelt; + + // } } diff --git a/src/facade/Spielsystem.java b/src/facade/Spielsystem.java index d45354d..1df74fc 100644 --- a/src/facade/Spielsystem.java +++ b/src/facade/Spielsystem.java @@ -132,49 +132,11 @@ public class Spielsystem { } public boolean gewinnBedingungHennen() { - char[][] spielbrettArray = spiel.getSpielbrettArray(); - - if (spielbrettArray[0][4] == 'X' && spielbrettArray[0][5] == 'X' && spielbrettArray[0][6] == 'X' - && spielbrettArray[1][4] == 'X' && spielbrettArray[1][5] == 'X' && spielbrettArray[1][6] == 'X' - && spielbrettArray[2][4] == 'X' && spielbrettArray[2][5] == 'X' && spielbrettArray[2][6] == 'X') { - return true; - } - - int spielfigurExistiert = 0; - - for (int i = 0; i < spielbrettArray.length; i++) { - for (int k = 0; k < spielbrettArray[i].length; k++) { - if (spielbrettArray[i][k] == 'O') { - spielfigurExistiert++; - } - } - if (spielfigurExistiert >= 1) { - break; - } - } - - if (spielfigurExistiert == 0) { - return true; - } - return false; + return spiel.gewinnBedingungHennen(); } public boolean gewinnBedingungFuchs() { - char[][] spielbrettArray = spiel.getSpielbrettArray(); - int spielfigurExistiert = 0; - - for (int i = 0; i < spielbrettArray.length; i++) { - for (int k = 0; k < spielbrettArray[i].length; k++) { - if (spielbrettArray[i][k] == 'X') { - spielfigurExistiert++; - } - } - } - - if (spielfigurExistiert <= 8) { - return true; - } - return false; + return spiel.gewinnBedingungFuchs(); } public boolean isWon() { @@ -236,6 +198,7 @@ public class Spielsystem { return false; } + public boolean isValidMoveFüchse(String zug) { if (spieler instanceof Fuchs) { return spieler.oberIsValidMove(zug, spiel); @@ -247,15 +210,9 @@ public class Spielsystem { // Noch falsche Ausgabe vom Zug (Array statt wie bei Eingabe vom Spieler) // <--------------------------------------------------------------------- + public String yourMove() { - String zug = ki.zugBestimmen(spiel, computer); - - int neueStartY = Character.getNumericValue(zug.charAt(0)); - int neueStartX = Character.getNumericValue(zug.charAt(2)); - int neueZielY = Character.getNumericValue(zug.charAt(4)); - int neueZielX = Character.getNumericValue(zug.charAt(6)); - - computer.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); + String zug = spiel.yourMove(spiel, ki, computer); return zug; }