HennenRespawn dazu, Abfrage ob respawn möglich in myMove Spielsystem

pull/5/head
robinschumann 2022-12-04 12:37:54 +01:00
parent 864effdfc2
commit a4ed62cf8d
2 changed files with 149 additions and 68 deletions

View File

@ -5,7 +5,7 @@ public class Hennen extends Spielfigur {
public Hennen() { public Hennen() {
} }
public void moveSpielfigur(int neueStartY, int neueStartX, int neueZielY, int neueZielX, Spiel spiel) { public void moveSpielfigur(int neueStartY, int neueStartX, int neueZielY, int neueZielX, Spiel spiel) {
spiel.ändereWertImArray(neueStartY, neueStartX, '\u25A1'); spiel.ändereWertImArray(neueStartY, neueStartX, '\u25A1');
spiel.ändereWertImArray(neueZielY, neueZielX, 'X'); 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 // generell sehr fehleranfällig, mit Regex Filter Struktur vom String vorgeben
public boolean isValidMove(int neueStartY, int neueStartX, int neueZielY, int neueZielX, Spiel spiel) { public boolean isValidMove(int neueStartY, int neueStartX, int neueZielY, int neueZielX, Spiel spiel) {
// Zug fehleingabe // Zug fehleingabe
if (neueStartY == 1000 || neueStartX == 1000 || neueZielY == 1000 || neueZielX == 1000) { if (neueStartY == 1000 || neueStartX == 1000 || neueZielY == 1000 || neueZielX == 1000) {
System.out.println("Fehleingabe"); System.out.println("Fehleingabe");
System.out.println(neueStartY + " " + neueStartX +" "+neueZielY+" "+neueZielX); System.out.println(neueStartY + " " + neueStartX + " " + neueZielY + " " + neueZielX);
return false; return false;
// Fehler Spielsymbol beim Start oder Ziel falsch // Fehler Spielsymbol beim Start oder Ziel falsch
@ -70,5 +70,62 @@ public class Hennen extends Spielfigur {
System.out.println("Hennenmethode aufgerufen"); System.out.println("Hennenmethode aufgerufen");
return true; 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;
} }
} }

View File

@ -29,41 +29,41 @@ public class Spielsystem {
} }
public void spielerBestimmen(int spielerwahl) { public void spielerBestimmen(int spielerwahl) {
if(spielerwahl == 1) { if (spielerwahl == 1) {
spieler = new Fuchs(); spieler = new Fuchs();
} else if(spielerwahl == 2) { } else if (spielerwahl == 2) {
spieler = new Hennen(); spieler = new Hennen();
} else { } else {
//Scheiße // Scheiße
} }
} }
public void computerBestimmen(int spielerwahl) { public void computerBestimmen(int spielerwahl) {
if(spielerwahl == 2) { if (spielerwahl == 2) {
computer = new Fuchs(); computer = new Fuchs();
} else if(spielerwahl == 1) { } else if (spielerwahl == 1) {
computer = new Hennen(); computer = new Hennen();
} else { } else {
//Scheiße // Scheiße
} }
} }
public void setAktivenSpieler(boolean überprüfung) { public void setAktivenSpieler(boolean überprüfung) {
if(überprüfung == true) { if (überprüfung == true) {
// aktiverSpieler ist der Spieler // aktiverSpieler ist der Spieler
aktiverSpieler = true; aktiverSpieler = true;
} else { } else {
// aktiverSpieler ist der Computer // aktiverSpieler ist der Computer
aktiverSpieler = false; aktiverSpieler = false;
} }
} }
public String getSpielname() { public String getSpielname() {
return spielname; return spielname;
} }
public boolean getSpielfigurComputer() { public boolean getSpielfigurComputer() {
if(computer instanceof Hennen) { if (computer instanceof Hennen) {
return true; return true;
} else { } else {
return false; return false;
@ -71,25 +71,25 @@ public class Spielsystem {
} }
public boolean getSpielfigurSpieler() { public boolean getSpielfigurSpieler() {
if(spieler instanceof Hennen) { if (spieler instanceof Hennen) {
return true; return true;
} else { } else {
return false; return false;
} }
} }
public Spielfigur getHenne() { public Spielfigur getHenne() {
return henne; return henne;
} }
public Spielfigur getFuchs() { public Spielfigur getFuchs() {
return fuchs; return fuchs;
} }
public Bot getBot() { public Bot getBot() {
return ki; return ki;
} }
public void printBoard() { public void printBoard() {
spiel.printBoard(); spiel.printBoard();
} }
@ -97,27 +97,26 @@ public class Spielsystem {
public boolean gewinnBedingungHennen() { public boolean gewinnBedingungHennen() {
char[][] spielbrettArray = spiel.getSpielbrettArray(); char[][] spielbrettArray = spiel.getSpielbrettArray();
if(spielbrettArray[0][4] == 'X' && spielbrettArray[0][5] == 'X' && spielbrettArray[0][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[1][4] == 'X' && spielbrettArray[1][5] == 'X' && spielbrettArray[1][6] == 'X'
spielbrettArray[2][4] == 'X' && spielbrettArray[2][5] == 'X' && spielbrettArray[2][6] == 'X') { && spielbrettArray[2][4] == 'X' && spielbrettArray[2][5] == 'X' && spielbrettArray[2][6] == 'X') {
return true; return true;
} }
int spielfigurExistiert = 0; int spielfigurExistiert = 0;
for(int i = 0; i < spielbrettArray.length; i++ ) for (int i = 0; i < spielbrettArray.length; i++) {
{ for (int k = 0; k < spielbrettArray[i].length; k++) {
for(int k = 0; k < spielbrettArray[i].length; k++ ){ if (spielbrettArray[i][k] == 'O') {
if(spielbrettArray[i][k] == 'O') { spielfigurExistiert++;
spielfigurExistiert++; }
}
if (spielfigurExistiert >= 1) {
break;
} }
}
if(spielfigurExistiert >= 1) {
break;
}
} }
if(spielfigurExistiert == 0) { if (spielfigurExistiert == 0) {
return true; return true;
} }
return false; return false;
@ -127,23 +126,22 @@ public class Spielsystem {
char[][] spielbrettArray = spiel.getSpielbrettArray(); char[][] spielbrettArray = spiel.getSpielbrettArray();
int spielfigurExistiert = 0; int spielfigurExistiert = 0;
for(int i = 0; i < spielbrettArray.length; i++ ) for (int i = 0; i < spielbrettArray.length; i++) {
{ for (int k = 0; k < spielbrettArray[i].length; k++) {
for(int k = 0; k < spielbrettArray[i].length; k++ ){ if (spielbrettArray[i][k] == 'X') {
if(spielbrettArray[i][k] == 'X') { spielfigurExistiert++;
spielfigurExistiert++; }
} }
}
} }
if(spielfigurExistiert <= 8) { if (spielfigurExistiert <= 8) {
return true; return true;
} }
return false; return false;
} }
public boolean isWon() { public boolean isWon() {
if(gewinnBedingungHennen() == true) { if (gewinnBedingungHennen() == true) {
System.out.println("Hennen haben gewonnen"); System.out.println("Hennen haben gewonnen");
whoWon(); whoWon();
return true; return true;
@ -154,50 +152,50 @@ public class Spielsystem {
} }
return false; return false;
} }
public boolean isRunning() { public boolean isRunning() {
if(isWon() == false) { if (isWon() == false) {
return true; return true;
} }
return false; return false;
} }
public boolean whoWon() { public boolean whoWon() {
if(gewinnBedingungFuchs() == true) { if (gewinnBedingungFuchs() == true) {
if(spieler instanceof Fuchs) { if (spieler instanceof Fuchs) {
System.out.println("Spieler 1 gewinnt"); System.out.println("Spieler 1 gewinnt");
return true; return true;
} else { } else {
System.out.println("Spieler 2 gewinnt"); System.out.println("Spieler 2 gewinnt");
return false; return false;
} }
} else { } else {
if(spieler instanceof Hennen) { if (spieler instanceof Hennen) {
System.out.println("Spieler 1 gewinnt"); System.out.println("Spieler 1 gewinnt");
return true; return true;
} else { } else {
System.out.println("Spieler 2 gewinnt"); System.out.println("Spieler 2 gewinnt");
return false; return false;
} }
} }
} }
public boolean isValidMove(String zug) { public boolean isValidMove(String zug) {
int[] neueKoordinaten = berechneRichtigeKoordinaten(zug); int[] neueKoordinaten = berechneRichtigeKoordinaten(zug);
int neueStartY = neueKoordinaten[0]; int neueStartY = neueKoordinaten[0];
int neueStartX = neueKoordinaten[1]; int neueStartX = neueKoordinaten[1];
int neueZielY = neueKoordinaten[2]; int neueZielY = neueKoordinaten[2];
int neueZielX = neueKoordinaten[3]; int neueZielX = neueKoordinaten[3];
if(aktiverSpieler == true) { if (aktiverSpieler == true) {
return spieler.isValidMove(neueStartY, neueStartX, neueZielY, neueZielX, spiel); return spieler.isValidMove(neueStartY, neueStartX, neueZielY, neueZielX, spiel);
} else { } else {
return computer.isValidMove(neueStartY, neueStartX, neueZielY, neueZielX, spiel); return computer.isValidMove(neueStartY, neueStartX, neueZielY, neueZielX, spiel);
} }
} }
public int[] berechneRichtigeKoordinaten(String zug) { public int[] berechneRichtigeKoordinaten(String zug) {
// Form vom Zug: "5,5 4,5" // 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 // Werte angepasst auf unser Board, die Form des Zuges hat sich geändert von X,Y
// auf Y,X // 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; 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() { public String yourMove() {
String zug = ki.zugBestimmen(spiel, computer); String zug = ki.zugBestimmen(spiel, computer);
@ -238,40 +237,65 @@ public class Spielsystem {
return zug; return zug;
} }
public void myMove(String zug) { public void myMove(String zug) {
char[][] spielbrettArray = spiel.getSpielbrettArray();
int counterObersteReihe = 0;
int counterMittlereReihe = 0;
int counterUntereReihe = 0;
int[] neueKoordinaten = berechneRichtigeKoordinaten(zug); int[] neueKoordinaten = berechneRichtigeKoordinaten(zug);
int neueStartY = neueKoordinaten[0]; int neueStartY = neueKoordinaten[0];
int neueStartX = neueKoordinaten[1]; int neueStartX = neueKoordinaten[1];
int neueZielY = neueKoordinaten[2]; int neueZielY = neueKoordinaten[2];
int neueZielX = neueKoordinaten[3]; int neueZielX = neueKoordinaten[3];
if(aktiverSpieler == true) { if (aktiverSpieler == true) {
spieler.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); 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 { } else {
computer.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); 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) { if (kiLevel == 0 && computer instanceof Hennen) {
ki = new BotEasyHenne(); ki = new BotEasyHenne();
} else if ( kiLevel == 1 && computer instanceof Hennen) { } else if (kiLevel == 1 && computer instanceof Hennen) {
ki = new BotMediumHenne(); ki = new BotMediumHenne();
} else if (kiLevel == 2 && computer instanceof Hennen) { } else if (kiLevel == 2 && computer instanceof Hennen) {
ki = new BotHardHenne(); ki = new BotHardHenne();
} else if (kiLevel == 0 && computer instanceof Fuchs) { } else if (kiLevel == 0 && computer instanceof Fuchs) {
ki = new BotEasyFuchs(); ki = new BotEasyFuchs();
} else if ( kiLevel == 1 && computer instanceof Fuchs) { } else if (kiLevel == 1 && computer instanceof Fuchs) {
ki = new BotMediumFuchs(); ki = new BotMediumFuchs();
} else if (kiLevel == 2 && computer instanceof Fuchs) { } else if (kiLevel == 2 && computer instanceof Fuchs) {
ki = new BotHardFuchs(); ki = new BotHardFuchs();
}else { } else {
//Fehleingabe // Fehleingabe
} }
// UI.start(werBeginnt, kiLevel); // UI.start(werBeginnt, kiLevel);
} }
} }