diff --git a/src/domain/Hennen.java b/src/domain/Hennen.java index 89edbba..ef07334 100644 --- a/src/domain/Hennen.java +++ b/src/domain/Hennen.java @@ -5,7 +5,7 @@ public class Hennen extends Spielfigur { public Hennen() { } - + public void moveSpielfigur(int neueStartY, int neueStartX, int neueZielY, int neueZielX, Spiel spiel) { spiel.ändereWertImArray(neueStartY, neueStartX, '\u25A1'); spiel.ändereWertImArray(neueZielY, neueZielX, 'X'); @@ -13,11 +13,11 @@ public class Hennen extends Spielfigur { // generell sehr fehleranfällig, mit Regex Filter Struktur vom String vorgeben public boolean isValidMove(int neueStartY, int neueStartX, int neueZielY, int neueZielX, Spiel spiel) { - + // Zug fehleingabe if (neueStartY == 1000 || neueStartX == 1000 || neueZielY == 1000 || neueZielX == 1000) { System.out.println("Fehleingabe"); - System.out.println(neueStartY + " " + neueStartX +" "+neueZielY+" "+neueZielX); + System.out.println(neueStartY + " " + neueStartX + " " + neueZielY + " " + neueZielX); return false; // Fehler Spielsymbol beim Start oder Ziel falsch @@ -70,5 +70,62 @@ public class Hennen extends Spielfigur { System.out.println("Hennenmethode aufgerufen"); return true; + + } + + public static boolean hennenRespawn(Spiel spiel, int counter) { + char[][] spielbrettArray = spiel.getSpielbrettArray(); + int zähler = counter; + if (zähler >= 1) { + return false; + } + if (spielbrettArray[0][4] == 'X' && spielbrettArray[0][5] == 'X' && spielbrettArray[0][6] == 'X') { + // unten links + if (spielbrettArray[8][4] == '\u25A1') { + spiel.ändereWertImArray(8, 4, 'X'); + System.out.println("an der Stelle 8,4 ist eine neue Henne gespawnt"); + return true; + // unten mitte + } else if (spielbrettArray[8][5] == '\u25A1') { + spiel.ändereWertImArray(8, 5, 'X'); + System.out.println("an der Stelle 8,5 ist eine neue Henne gespawnt"); + return true; + // unten rechts + } else if (spielbrettArray[8][6] == '\u25A1') { + spiel.ändereWertImArray(8, 6, 'X'); + System.out.println("an der Stelle 8,6 ist eine neue Henne gespawnt"); + return true; + // unten mitte links + } else if (spielbrettArray[7][4] == '\u25A1') { + spiel.ändereWertImArray(7, 4, 'X'); + System.out.println("an der Stelle 7,4 ist eine neue Henne gespawnt"); + return true; + // unten mitte mitte + } else if (spielbrettArray[7][5] == '\u25A1') { + spiel.ändereWertImArray(7, 5, 'X'); + System.out.println("an der Stelle 7,5 ist eine neue Henne gespawnt"); + return true; + // unten mitte rechts + } else if (spielbrettArray[7][6] == '\u25A1') { + spiel.ändereWertImArray(7, 6, 'X'); + System.out.println("an der Stelle 7,6 ist eine neue Henne gespawnt"); + return true; + } else if (spielbrettArray[6][4] == '\u25A1') { + spiel.ändereWertImArray(6, 4, 'X'); + System.out.println("an der Stelle 6,4 ist eine neue Henne gespawnt"); + return true; + // unten mitte mitte + } else if (spielbrettArray[6][5] == '\u25A1') { + spiel.ändereWertImArray(6, 5, 'X'); + System.out.println("an der Stelle 6,5 ist eine neue Henne gespawnt"); + return true; + // unten mitte rechts + } else if (spielbrettArray[6][6] == '\u25A1') { + spiel.ändereWertImArray(6, 6, 'X'); + System.out.println("an der Stelle 6,6 ist eine neue Henne gespawnt"); + return true; + } + } + return false; } } diff --git a/src/facade/Spielsystem.java b/src/facade/Spielsystem.java index b2a971a..6f18772 100644 --- a/src/facade/Spielsystem.java +++ b/src/facade/Spielsystem.java @@ -29,41 +29,41 @@ public class Spielsystem { } public void spielerBestimmen(int spielerwahl) { - if(spielerwahl == 1) { + if (spielerwahl == 1) { spieler = new Fuchs(); - } else if(spielerwahl == 2) { + } else if (spielerwahl == 2) { spieler = new Hennen(); } else { - //Scheiße + // Scheiße } } public void computerBestimmen(int spielerwahl) { - if(spielerwahl == 2) { + if (spielerwahl == 2) { computer = new Fuchs(); - } else if(spielerwahl == 1) { + } else if (spielerwahl == 1) { computer = new Hennen(); } else { - //Scheiße + // Scheiße } } public void setAktivenSpieler(boolean überprüfung) { - if(überprüfung == true) { - // aktiverSpieler ist der Spieler + if (überprüfung == true) { + // aktiverSpieler ist der Spieler aktiverSpieler = true; } else { - // aktiverSpieler ist der Computer + // aktiverSpieler ist der Computer aktiverSpieler = false; } } - + public String getSpielname() { return spielname; } public boolean getSpielfigurComputer() { - if(computer instanceof Hennen) { + if (computer instanceof Hennen) { return true; } else { return false; @@ -71,25 +71,25 @@ public class Spielsystem { } public boolean getSpielfigurSpieler() { - if(spieler instanceof Hennen) { + if (spieler instanceof Hennen) { return true; } else { return false; } } - + public Spielfigur getHenne() { return henne; } - + public Spielfigur getFuchs() { return fuchs; } - + public Bot getBot() { return ki; } - + public void printBoard() { spiel.printBoard(); } @@ -97,27 +97,26 @@ 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') { + 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++; + 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 >= 1) { - break; - } } - if(spielfigurExistiert == 0) { + if (spielfigurExistiert == 0) { return true; } return false; @@ -127,23 +126,22 @@ public class Spielsystem { 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++; + 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) { + if (spielfigurExistiert <= 8) { return true; } return false; } - + public boolean isWon() { - if(gewinnBedingungHennen() == true) { + if (gewinnBedingungHennen() == true) { System.out.println("Hennen haben gewonnen"); whoWon(); return true; @@ -154,50 +152,50 @@ public class Spielsystem { } return false; } - + public boolean isRunning() { - if(isWon() == false) { + if (isWon() == false) { return true; } return false; } - + public boolean whoWon() { - if(gewinnBedingungFuchs() == true) { - if(spieler instanceof Fuchs) { + if (gewinnBedingungFuchs() == true) { + if (spieler instanceof Fuchs) { System.out.println("Spieler 1 gewinnt"); return true; } else { System.out.println("Spieler 2 gewinnt"); return false; - } + } } else { - if(spieler instanceof Hennen) { + if (spieler instanceof Hennen) { System.out.println("Spieler 1 gewinnt"); return true; - + } else { System.out.println("Spieler 2 gewinnt"); return false; - } + } } } - + public boolean isValidMove(String zug) { int[] neueKoordinaten = berechneRichtigeKoordinaten(zug); int neueStartY = neueKoordinaten[0]; int neueStartX = neueKoordinaten[1]; int neueZielY = neueKoordinaten[2]; int neueZielX = neueKoordinaten[3]; - - if(aktiverSpieler == true) { + + if (aktiverSpieler == true) { return spieler.isValidMove(neueStartY, neueStartX, neueZielY, neueZielX, spiel); } else { return computer.isValidMove(neueStartY, neueStartX, neueZielY, neueZielX, spiel); } } - + public int[] berechneRichtigeKoordinaten(String zug) { // Form vom Zug: "5,5 4,5" @@ -220,12 +218,13 @@ public class Spielsystem { // Werte angepasst auf unser Board, die Form des Zuges hat sich geändert von X,Y // auf Y,X - int[] neueKoordinaten = {neueStartKoords[0], neueStartKoords[1], neueZielKoords[0], neueZielKoords[1]}; - + int[] neueKoordinaten = { neueStartKoords[0], neueStartKoords[1], neueZielKoords[0], neueZielKoords[1] }; + return neueKoordinaten; } - - // Noch falsche Ausgabe vom Zug (Array statt wie bei Eingabe vom Spieler) <--------------------------------------------------------------------- + + // Noch falsche Ausgabe vom Zug (Array statt wie bei Eingabe vom Spieler) + // <--------------------------------------------------------------------- public String yourMove() { String zug = ki.zugBestimmen(spiel, computer); @@ -238,40 +237,65 @@ public class Spielsystem { return zug; } - + public void myMove(String zug) { + char[][] spielbrettArray = spiel.getSpielbrettArray(); + int counterObersteReihe = 0; + int counterMittlereReihe = 0; + int counterUntereReihe = 0; + int[] neueKoordinaten = berechneRichtigeKoordinaten(zug); int neueStartY = neueKoordinaten[0]; int neueStartX = neueKoordinaten[1]; int neueZielY = neueKoordinaten[2]; int neueZielX = neueKoordinaten[3]; - - if(aktiverSpieler == true) { + + if (aktiverSpieler == true) { spieler.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); + // Check ob eine Henne respawnen kann, nachdem die oberste Reihe gefüllt wurde + if (spielbrettArray[0][4] == 'X' && spielbrettArray[0][5] == 'X' && spielbrettArray[0][6] == 'X') { + Hennen.hennenRespawn(spiel, counterObersteReihe); + counterObersteReihe++; + } + // Check ob die oberere und die mittlere Reihe gefüllt wurden mit dem Zug + 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')) { + Hennen.hennenRespawn(spiel, counterMittlereReihe); + counterMittlereReihe++; + } + // für die Vollständigkeit trotzdem dazu, obwohl der Fall nicht eintreten kann, + // da die Hennen dann gewonnen haben + 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') { + Hennen.hennenRespawn(spiel, counterUntereReihe); + counterUntereReihe++; + } + } else { computer.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); } } - public void start(boolean werBeginnt, int kiLevel) { + public void start(boolean werBeginnt, int kiLevel) { if (kiLevel == 0 && computer instanceof Hennen) { ki = new BotEasyHenne(); - } else if ( kiLevel == 1 && computer instanceof Hennen) { + } else if (kiLevel == 1 && computer instanceof Hennen) { ki = new BotMediumHenne(); } else if (kiLevel == 2 && computer instanceof Hennen) { ki = new BotHardHenne(); } else if (kiLevel == 0 && computer instanceof Fuchs) { ki = new BotEasyFuchs(); - } else if ( kiLevel == 1 && computer instanceof Fuchs) { + } else if (kiLevel == 1 && computer instanceof Fuchs) { ki = new BotMediumFuchs(); } else if (kiLevel == 2 && computer instanceof Fuchs) { ki = new BotHardFuchs(); - }else { - //Fehleingabe + } else { + // Fehleingabe } - + // UI.start(werBeginnt, kiLevel); } - + }