From 814ff920b2a6924c4b7bd0d7b4ec148e5e0547c7 Mon Sep 17 00:00:00 2001 From: robinschumann Date: Sun, 11 Dec 2022 00:31:22 +0100 Subject: [PATCH] PvP funktional gemacht, Computer-Klasse als dummy hinzu, weil sonst null-Pointer Exception --- .DS_Store | Bin 0 -> 6148 bytes src/domain/Computer.java | 17 ++++++ src/facade/Spielsystem.java | 119 ++++++++++++++++++++++++++++++------ src/ui/UI.java | 47 +++++++------- 4 files changed, 139 insertions(+), 44 deletions(-) create mode 100644 .DS_Store create mode 100644 src/domain/Computer.java diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3b9cdeaeb02ba0d06b1e08851a90e3f21449f83d GIT binary patch literal 6148 zcmeHK!AiqG5Z!I7O({YS3OxqA7Ok}{ikBGc!K)EHsMMw@8jRVJq~=fxIqMJkCH{`i z>~4foy?78TGcfx$vojm!ZP>{$#<(-}_ZTx7V+JTk+H5? zFlt6^U^Zs6cBj*{_IvGl)0!Q24w_cC+ndj8#@6=k(fQype2T=2BA&xHDP==r0k1I8 z**v>(6pH8`EQNRBMMw+~1H{1UGN5lfqrSQ+Qf9;eG4M+U@P4pB5p9jRLV0z-AX@;y z3Yew9T>kt6T4(^YHRcMz0>V`&pbF)>#o)Sk;3^!}ZS9{cRN;)vH^V;q&0KdVT(=(F zlJ1P#3TY$;h=D~0u=fKovHqX_-2Y1_8i)a6U^N-wmA>0|AU9oGm$JlKYk}T@qM%={ m@GAr+vJ`_amf{Ae6tG)30kk#d3c&(GKLU~l8i;{EW#ALe=Th?k literal 0 HcmV?d00001 diff --git a/src/domain/Computer.java b/src/domain/Computer.java new file mode 100644 index 0000000..df03c63 --- /dev/null +++ b/src/domain/Computer.java @@ -0,0 +1,17 @@ +package domain; + +public class Computer extends Spielfigur { + + @Override + public boolean oberIsValidMove(String zug, Spiel spiel) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void moveSpielfigur(int neueStartY, int neueStartX, int neueZielY, int neueZielX, Spiel spiel) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/facade/Spielsystem.java b/src/facade/Spielsystem.java index 5b44c36..d45354d 100644 --- a/src/facade/Spielsystem.java +++ b/src/facade/Spielsystem.java @@ -7,6 +7,7 @@ import domain.BotHardFuchs; import domain.BotHardHenne; import domain.BotMediumFuchs; import domain.BotMediumHenne; +import domain.Computer; import domain.Fuchs; import domain.Hennen; import domain.Spiel; @@ -37,16 +38,23 @@ public class Spielsystem { // Scheiße } } + public void spielerBestimmen2Spieler(int spielerwahl) { if (spielerwahl == 1) { spieler = new Fuchs(); spieler2 = new Hennen(); + computer = new Computer(); } else if (spielerwahl == 2) { spieler = new Hennen(); spieler2 = new Fuchs(); - } else { - // Scheiße + computer = new Computer(); } + + } + + public void start2Spieler(boolean werBeginnt) { + spiel.generiereSpielbrett(); + } public void computerBestimmen(int spielerwahl) { @@ -69,6 +77,16 @@ public class Spielsystem { } } + public void setAktivenSpieler2Spieler(boolean überprüfung) { + if (überprüfung == true) { + // aktiverSpieler ist der Spieler + aktiverSpieler = true; + } else { + // aktiverSpieler ist der Computer + aktiverSpieler = false; + } + } + public String getSpielname() { return spiel.getSpielname(); } @@ -104,11 +122,11 @@ public class Spielsystem { public void printBoard() { spiel.printBoard(); } - + public boolean fuchsUmzingelt() { return Fuchs.fuchsUmzingelt(spiel); } - + public void killFuchs() { Fuchs.killFuchs(spiel); } @@ -208,14 +226,24 @@ public class Spielsystem { return computer.oberIsValidMove(zug, spiel); } } - - public boolean isValidMoveHenne(String zug, boolean henne) { - if (henne == true) { - return spieler.oberIsValidMove(zug, spiel); + + public boolean isValidMoveHenne(String zug) { + if (spieler instanceof Hennen) { + return spieler.oberIsValidMove(zug, spiel); + } else if (spieler2 instanceof Hennen) { + return spieler2.oberIsValidMove(zug, spiel); } return false; } + public boolean isValidMoveFüchse(String zug) { + if (spieler instanceof Fuchs) { + return spieler.oberIsValidMove(zug, spiel); + } else if (spieler2 instanceof Fuchs) { + return spieler2.oberIsValidMove(zug, spiel); + } + return false; + } // Noch falsche Ausgabe vom Zug (Array statt wie bei Eingabe vom Spieler) // <--------------------------------------------------------------------- @@ -232,6 +260,39 @@ public class Spielsystem { return zug; } + public void myMove2Spieler(String zug, String figur) { + char[][] spielbrettArray = spiel.getSpielbrettArray(); + + String moveZug = moveZugBestimmen(zug); + System.out.println(moveZug); + + int[] neueKoordinaten = spiel.berechneRichtigeKoordinaten(moveZug); + int neueStartY = neueKoordinaten[0]; + int neueStartX = neueKoordinaten[1]; + int neueZielY = neueKoordinaten[2]; + int neueZielX = neueKoordinaten[3]; + + if (figur.equals("Fuchs")) { + if (spieler instanceof Fuchs) { + spieler.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); + } else if (spieler2 instanceof Fuchs) { + spieler2.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); + } + } else if (figur.equals("Henne")) { + if (spieler instanceof Hennen) { + spieler.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); + checkRespawn(); + + } + if (spieler2 instanceof Hennen) { + spieler2.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); + checkRespawn(); + + } + } + + } + public void myMove(String zug) { char[][] spielbrettArray = spiel.getSpielbrettArray(); int counterObersteReihe = 0; @@ -240,7 +301,7 @@ public class Spielsystem { String moveZug = moveZugBestimmen(zug); System.out.println(moveZug); - + int[] neueKoordinaten = spiel.berechneRichtigeKoordinaten(moveZug); int neueStartY = neueKoordinaten[0]; int neueStartX = neueKoordinaten[1]; @@ -273,10 +334,11 @@ public class Spielsystem { computer.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); } } - + public String moveZugBestimmen(String zug) { int zugLänge = zug.length(); - return "" + zug.charAt(0) + zug.charAt(1) + zug.charAt(2) + " " + zug.charAt(zugLänge - 3) + zug.charAt(zugLänge - 2) + zug.charAt(zugLänge - 1); + return "" + zug.charAt(0) + zug.charAt(1) + zug.charAt(2) + " " + zug.charAt(zugLänge - 3) + + zug.charAt(zugLänge - 2) + zug.charAt(zugLänge - 1); } @@ -297,17 +359,11 @@ public class Spielsystem { } else { // Fehleingabe } - + spiel.generiereSpielbrett(); // UI.start(werBeginnt, kiLevel); } - - public void start2Spieler(boolean werBeginnt) { - spiel.generiereSpielbrett(); - - } - public boolean findeHenne(String henneGewählt) { @@ -371,11 +427,36 @@ public class Spielsystem { spiel.ändereWertImArray(neueZielY, neueZielX, 'X'); spiel.ändereWertImArray(neueStartY, neueStartX, '\u25A1'); - + return true; } + public void checkRespawn() { + char[][] spielbrettArray = spiel.getSpielbrettArray(); + int counterObersteReihe = 0; + int counterMittlereReihe = 0; + int counterUntereReihe = 0; + // 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++; + } + } } diff --git a/src/ui/UI.java b/src/ui/UI.java index d3d8dc5..b2bad5d 100644 --- a/src/ui/UI.java +++ b/src/ui/UI.java @@ -128,7 +128,7 @@ public class UI { System.out.println(); break; case 2: - spielsystem.spielerBestimmen(spieler1Spielt); + spielsystem.spielerBestimmen2Spieler(spieler1Spielt); spieler2Spielt = 1; System.out.println(); System.out.println("Sie haben sich für die Hennen entschieden."); @@ -198,35 +198,32 @@ public class UI { // wenn Henne beginnt if (zugHenne == true) { - if (spieler1Wahl == 1) { - boolean henne = true; + // spielsystem.setAktivenSpieler(true); + System.out.println("Die Hennen sind am Zug:"); + System.out.println("Spieler Sie sind dran"); + do { + System.out.println("Bitte geben Sie Ihren Zug ein:"); + System.out.println(); + System.out.print("> "); + zug = sc.nextLine(); + System.out.println(); + erfolgreicherZug = spielsystem.isValidMoveHenne(zug); - spielsystem.setAktivenSpieler(true); - System.out.println("Die Hennen sind am Zug:"); - System.out.println("Spieler Sie sind dran"); - do { - System.out.println("Bitte geben Sie Ihren Zug ein:"); + if (erfolgreicherZug == false) { + System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!"); + System.out.println("Sie sind weiterhin am Zug"); System.out.println(); - System.out.print("> "); - zug = sc.nextLine(); - System.out.println(); - erfolgreicherZug = spielsystem.isValidMoveHenne(zug, henne); + } + } while (erfolgreicherZug == false); - if (erfolgreicherZug == false) { - System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!"); - System.out.println("Sie sind weiterhin am Zug"); - System.out.println(); - } - } while (erfolgreicherZug == false); + spielsystem.myMove2Spieler(zug,"Henne"); + zugHenne = false; + zugFuchs = true; - spielsystem.myMove(zug); - zugHenne = false; - zugFuchs = true; - } // wenn Fuchs beginnt } else if (zugFuchs == true) { - spielsystem.setAktivenSpieler(true); + // spielsystem.setAktivenSpieler(true); System.out.println("Die Füchse sind am Zug:"); if (spielsystem.fuchsUmzingelt() == true) { @@ -249,7 +246,7 @@ public class UI { System.out.print("> "); zug = sc.nextLine(); System.out.println(); - erfolgreicherZug = spielsystem.isValidMove(zug); + erfolgreicherZug = spielsystem.isValidMoveFüchse(zug); if (erfolgreicherZug == false) { System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!"); @@ -258,7 +255,7 @@ public class UI { } } while (erfolgreicherZug == false); - spielsystem.myMove(zug); + spielsystem.myMove2Spieler(zug, "Fuchs"); zugHenne = true; zugFuchs = false;