From c5f19d63d51e187e42c5effee9fa55209f543af8 Mon Sep 17 00:00:00 2001 From: robinschumann Date: Fri, 9 Dec 2022 13:29:21 +0100 Subject: [PATCH] PvP angefangen, funktioniert noch nicht wie es soll --- src/domain/Spiel.java | 34 +++---- src/facade/Spielsystem.java | 27 +++++ src/ui/UI.java | 193 +++++++++++++++++++++++++++++++++++- 3 files changed, 232 insertions(+), 22 deletions(-) diff --git a/src/domain/Spiel.java b/src/domain/Spiel.java index 5dbe2db..2e983ca 100644 --- a/src/domain/Spiel.java +++ b/src/domain/Spiel.java @@ -58,8 +58,8 @@ public class Spiel { spielbrettArray[0][1] = ' '; spielbrettArray[0][2] = ' '; spielbrettArray[0][3] = ' '; - spielbrettArray[0][4] = 'X'; - spielbrettArray[0][5] = 'X'; + spielbrettArray[0][4] = '\u25A1'; + spielbrettArray[0][5] = '\u25A1'; spielbrettArray[0][6] = '\u25A1'; spielbrettArray[0][7] = ' '; spielbrettArray[0][8] = ' '; @@ -69,9 +69,9 @@ public class Spiel { spielbrettArray[1][1] = ' '; spielbrettArray[1][2] = ' '; spielbrettArray[1][3] = ' '; - spielbrettArray[1][4] = '\u25A1'; - spielbrettArray[1][5] = 'X'; - spielbrettArray[1][6] = 'X'; + spielbrettArray[1][4] = 'O'; + spielbrettArray[1][5] = '\u25A1'; + spielbrettArray[1][6] = 'O'; spielbrettArray[1][7] = ' '; spielbrettArray[1][8] = ' '; spielbrettArray[1][9] = ' '; @@ -80,15 +80,15 @@ public class Spiel { spielbrettArray[2][1] = ' '; spielbrettArray[2][2] = ' '; spielbrettArray[2][3] = ' '; - spielbrettArray[2][4] = 'X'; + spielbrettArray[2][4] = '\u25A1'; spielbrettArray[2][5] = '\u25A1'; - spielbrettArray[2][6] = 'X'; + spielbrettArray[2][6] = '\u25A1'; spielbrettArray[2][7] = ' '; spielbrettArray[2][8] = ' '; spielbrettArray[2][9] = ' '; spielbrettArray[3][0] = '5'; - spielbrettArray[3][1] = 'O'; + spielbrettArray[3][1] = '\u25A1'; spielbrettArray[3][2] = '\u25A1'; spielbrettArray[3][3] = '\u25A1'; spielbrettArray[3][4] = '\u25A1'; @@ -96,18 +96,18 @@ public class Spiel { spielbrettArray[3][6] = '\u25A1'; spielbrettArray[3][7] = '\u25A1'; spielbrettArray[3][8] = '\u25A1'; - spielbrettArray[3][9] = 'O'; + spielbrettArray[3][9] = '\u25A1'; spielbrettArray[4][0] = '4'; spielbrettArray[4][1] = 'X'; - spielbrettArray[4][2] = '\u25A1'; - spielbrettArray[4][3] = '\u25A1'; - spielbrettArray[4][4] = '\u25A1'; - spielbrettArray[4][5] = '\u25A1'; - spielbrettArray[4][6] = '\u25A1'; - spielbrettArray[4][7] = '\u25A1'; - spielbrettArray[4][8] = '\u25A1'; - spielbrettArray[4][9] = '\u25A1'; + spielbrettArray[4][2] = 'X'; + spielbrettArray[4][3] = 'X'; + spielbrettArray[4][4] = 'X'; + spielbrettArray[4][5] = 'X'; + spielbrettArray[4][6] = 'X'; + spielbrettArray[4][7] = 'X'; + spielbrettArray[4][8] = 'X'; + spielbrettArray[4][9] = 'X'; spielbrettArray[5][0] = '3'; spielbrettArray[5][1] = 'X'; diff --git a/src/facade/Spielsystem.java b/src/facade/Spielsystem.java index b14251b..5b44c36 100644 --- a/src/facade/Spielsystem.java +++ b/src/facade/Spielsystem.java @@ -17,6 +17,7 @@ public class Spielsystem { private Spielfigur henne; private Spielfigur fuchs; private Spielfigur spieler; + private Spielfigur spieler2; private Spielfigur computer; private Bot ki; private boolean aktiverSpieler; @@ -36,6 +37,17 @@ public class Spielsystem { // Scheiße } } + public void spielerBestimmen2Spieler(int spielerwahl) { + if (spielerwahl == 1) { + spieler = new Fuchs(); + spieler2 = new Hennen(); + } else if (spielerwahl == 2) { + spieler = new Hennen(); + spieler2 = new Fuchs(); + } else { + // Scheiße + } + } public void computerBestimmen(int spielerwahl) { if (spielerwahl == 2) { @@ -196,6 +208,13 @@ public class Spielsystem { return computer.oberIsValidMove(zug, spiel); } } + + public boolean isValidMoveHenne(String zug, boolean henne) { + if (henne == true) { + return spieler.oberIsValidMove(zug, spiel); + } + return false; + } // Noch falsche Ausgabe vom Zug (Array statt wie bei Eingabe vom Spieler) @@ -283,6 +302,12 @@ public class Spielsystem { // UI.start(werBeginnt, kiLevel); } + + public void start2Spieler(boolean werBeginnt) { + spiel.generiereSpielbrett(); + + } + public boolean findeHenne(String henneGewählt) { @@ -351,4 +376,6 @@ public class Spielsystem { } + + } diff --git a/src/ui/UI.java b/src/ui/UI.java index 54da4a1..d3d8dc5 100644 --- a/src/ui/UI.java +++ b/src/ui/UI.java @@ -111,7 +111,34 @@ public class UI { // gameloop // case 1: private void pVP() { + System.out.println("Spieler 1, wollen Sie als die Füchse oder Hennen spielen?"); + System.out.println("1 -> Füchse spielen"); + System.out.println("2 -> Hennen spielen"); + System.out.println(); + System.out.print("> "); + int spieler1Spielt = Integer.parseInt(sc.nextLine()); + int spieler2Spielt = 0; + switch (spieler1Spielt) { + case 1: + spielsystem.spielerBestimmen2Spieler(spieler1Spielt); + spieler2Spielt = 2; + System.out.println(); + System.out.println("Sie haben sich für die Füchse entschieden."); + System.out.println("Spieler 2 spielt somit die Hennen. "); + System.out.println(); + break; + case 2: + spielsystem.spielerBestimmen(spieler1Spielt); + spieler2Spielt = 1; + System.out.println(); + System.out.println("Sie haben sich für die Hennen entschieden."); + System.out.println("Spieler 2 spielt somit die Füchse. "); + System.out.println(); + break; + } boolean werBeginnt = werBeginnt(); + spielsystem.start2Spieler(werBeginnt); + start2Spieler(werBeginnt, spieler1Spielt, spieler2Spielt); } @@ -143,6 +170,159 @@ public class UI { start(werBeginnt, kiLevel); } + public void start2Spieler(boolean werBeginnt, int spieler1Wahl, int spieler2Wahl) { + int counter = 0; + boolean zugFuchs = false; + boolean zugHenne = false; + boolean erfolgreicherZug; + boolean erfolgreich; + boolean freiesFeld; + boolean erfolgreichGepusht; + String zugPushHenne = ""; + String zug; + + if (werBeginnt == true) { + zugHenne = true; + } else { + zugFuchs = true; + } + + System.out.println("Das Spiel wurde gestartet!"); + System.out.println(); + System.out.println("Das Startspielbrett sieht wie folgt aus:"); + System.out.println(); + spielsystem.printBoard(); + System.out.println(); + + do { + // 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, henne); + + 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.myMove(zug); + zugHenne = false; + zugFuchs = true; + } + + // wenn Fuchs beginnt + } else if (zugFuchs == true) { + spielsystem.setAktivenSpieler(true); + System.out.println("Die Füchse sind am Zug:"); + + if (spielsystem.fuchsUmzingelt() == true) { + System.out.println(); + System.out.println("Mindestens einer Ihrer Füchse in umzingelt!"); + System.out.println( + "Wenn Sie nichts dagegen tun können, wird dieser Fuchs am Ende des Zuges eliminiert."); + System.out.println(); + } + + System.out.println("Bitte wählen Sie entweder (1) normaler Zug oder (2) Sonderzug Push Henne"); + System.out.println("Denken Sie daran, dass Sie den Sonderzug nur - 1x - benutzen können!"); + int eingabe = Integer.parseInt(sc.nextLine()); + switch (eingabe) { + case 1: + 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.isValidMove(zug); + + 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.myMove(zug); + + zugHenne = true; + zugFuchs = false; + break; + case 2: + if (counter == 1) { + System.out.println("Sonderzug wurde schon verbraucht. "); + break; + } + do { + System.out.println("Sonderzug gewählt. "); + System.out.println("Bitte wählen Sie die Henne, die Sie bewegen möchten: "); + String henneGewählt = sc.nextLine(); + erfolgreich = spielsystem.findeHenne(henneGewählt); + + if (erfolgreich == false) { + System.out.println("Ihre Zugeingabe -" + henneGewählt + "- war leider kein valider Zug!"); + System.out.println("Sie sind weiterhin am Zug"); + System.out.println(); + + } else if (erfolgreich == true) { + zugPushHenne += henneGewählt; + + } + + } while (erfolgreich == false); + do { + System.out.println("Henne wurde erfolgreich gewählt. Wo soll sie hingeschoben werden? "); + String pushHenne = sc.nextLine(); + freiesFeld = spielsystem.findeFreiesFeld(pushHenne); + + if (freiesFeld == false) { + System.out.println("Ihre Zugeingabe -" + pushHenne + "- war leider kein valider Zug!"); + System.out.println("Sie sind weiterhin am Zug"); + System.out.println(); + + } else if (freiesFeld == true) { + zugPushHenne += " " + pushHenne; + counter++; + } + + } while (freiesFeld == false); + erfolgreichGepusht = spielsystem.pushHenne(zugPushHenne); + System.out.println("Henne wurde erfolgreich geschoben. "); + zugHenne = true; + zugFuchs = false; + break; + + } + if (spielsystem.fuchsUmzingelt() == true) { + System.out.println(); + System.out.println("Leider ist noch ein Fuchs umzingelt!"); + System.out.println("Dieser wird nun ausgelöscht."); + System.out.println(); + spielsystem.killFuchs(); + } + } + + // nach jedem Zug das Spielbrett ausgeben + spielsystem.printBoard(); + + } while (spielsystem.isRunning() == true); + } + public void start(boolean werBeginnt, int kiLevel) { boolean zugFuchs = false; boolean zugHenne = false; @@ -222,14 +402,15 @@ public class UI { else if (zugFuchs == true && spielfigurSpieler == false) { spielsystem.setAktivenSpieler(true); System.out.println("Die Füchse sind am Zug:"); - + if (spielsystem.fuchsUmzingelt() == true) { System.out.println(); System.out.println("Mindestens einer Ihrer Füchse in umzingelt!"); - System.out.println("Wenn Sie nichts dagegen tun können, wird dieser Fuchs am Ende des Zuges eliminiert."); + System.out.println( + "Wenn Sie nichts dagegen tun können, wird dieser Fuchs am Ende des Zuges eliminiert."); System.out.println(); } - + System.out.println("Bitte wählen Sie entweder (1) normaler Zug oder (2) Sonderzug Push Henne"); System.out.println("Denken Sie daran, dass Sie den Sonderzug nur - 1x - benutzen können!"); int eingabe = Integer.parseInt(sc.nextLine()); @@ -299,7 +480,7 @@ public class UI { zugHenne = true; zugFuchs = false; break; - + } if (spielsystem.fuchsUmzingelt() == true) { System.out.println(); @@ -322,7 +503,7 @@ public class UI { zugHenne = true; zugFuchs = false; - + if (spielsystem.fuchsUmzingelt() == true) { spielsystem.killFuchs(); } @@ -345,9 +526,11 @@ public class UI { System.out.println(); if (werBeginnt == 1) { + System.out.println("Füchse beginnen."); // Füchse starten return false; } else { + System.out.println("Hennen beginnen."); // Hennen starten return true; }