PvP funktional gemacht, Computer-Klasse als dummy hinzu, weil sonst

null-Pointer Exception
main
robinschumann 2022-12-11 00:31:22 +01:00
parent c5f19d63d5
commit 814ff920b2
4 changed files with 139 additions and 44 deletions

BIN
.DS_Store vendored 100644

Binary file not shown.

View File

@ -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
}
}

View File

@ -7,6 +7,7 @@ import domain.BotHardFuchs;
import domain.BotHardHenne; import domain.BotHardHenne;
import domain.BotMediumFuchs; import domain.BotMediumFuchs;
import domain.BotMediumHenne; import domain.BotMediumHenne;
import domain.Computer;
import domain.Fuchs; import domain.Fuchs;
import domain.Hennen; import domain.Hennen;
import domain.Spiel; import domain.Spiel;
@ -37,16 +38,23 @@ public class Spielsystem {
// Scheiße // Scheiße
} }
} }
public void spielerBestimmen2Spieler(int spielerwahl) { public void spielerBestimmen2Spieler(int spielerwahl) {
if (spielerwahl == 1) { if (spielerwahl == 1) {
spieler = new Fuchs(); spieler = new Fuchs();
spieler2 = new Hennen(); spieler2 = new Hennen();
computer = new Computer();
} else if (spielerwahl == 2) { } else if (spielerwahl == 2) {
spieler = new Hennen(); spieler = new Hennen();
spieler2 = new Fuchs(); spieler2 = new Fuchs();
} else { computer = new Computer();
// Scheiße
} }
}
public void start2Spieler(boolean werBeginnt) {
spiel.generiereSpielbrett();
} }
public void computerBestimmen(int spielerwahl) { 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() { public String getSpielname() {
return spiel.getSpielname(); return spiel.getSpielname();
} }
@ -104,11 +122,11 @@ public class Spielsystem {
public void printBoard() { public void printBoard() {
spiel.printBoard(); spiel.printBoard();
} }
public boolean fuchsUmzingelt() { public boolean fuchsUmzingelt() {
return Fuchs.fuchsUmzingelt(spiel); return Fuchs.fuchsUmzingelt(spiel);
} }
public void killFuchs() { public void killFuchs() {
Fuchs.killFuchs(spiel); Fuchs.killFuchs(spiel);
} }
@ -208,14 +226,24 @@ public class Spielsystem {
return computer.oberIsValidMove(zug, spiel); return computer.oberIsValidMove(zug, spiel);
} }
} }
public boolean isValidMoveHenne(String zug, boolean henne) { public boolean isValidMoveHenne(String zug) {
if (henne == true) { if (spieler instanceof Hennen) {
return spieler.oberIsValidMove(zug, spiel); return spieler.oberIsValidMove(zug, spiel);
} else if (spieler2 instanceof Hennen) {
return spieler2.oberIsValidMove(zug, spiel);
} }
return false; 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) // Noch falsche Ausgabe vom Zug (Array statt wie bei Eingabe vom Spieler)
// <--------------------------------------------------------------------- // <---------------------------------------------------------------------
@ -232,6 +260,39 @@ public class Spielsystem {
return zug; 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) { public void myMove(String zug) {
char[][] spielbrettArray = spiel.getSpielbrettArray(); char[][] spielbrettArray = spiel.getSpielbrettArray();
int counterObersteReihe = 0; int counterObersteReihe = 0;
@ -240,7 +301,7 @@ public class Spielsystem {
String moveZug = moveZugBestimmen(zug); String moveZug = moveZugBestimmen(zug);
System.out.println(moveZug); System.out.println(moveZug);
int[] neueKoordinaten = spiel.berechneRichtigeKoordinaten(moveZug); int[] neueKoordinaten = spiel.berechneRichtigeKoordinaten(moveZug);
int neueStartY = neueKoordinaten[0]; int neueStartY = neueKoordinaten[0];
int neueStartX = neueKoordinaten[1]; int neueStartX = neueKoordinaten[1];
@ -273,10 +334,11 @@ public class Spielsystem {
computer.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); computer.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel);
} }
} }
public String moveZugBestimmen(String zug) { public String moveZugBestimmen(String zug) {
int zugLänge = zug.length(); 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 { } else {
// Fehleingabe // Fehleingabe
} }
spiel.generiereSpielbrett(); spiel.generiereSpielbrett();
// UI.start(werBeginnt, kiLevel); // UI.start(werBeginnt, kiLevel);
} }
public void start2Spieler(boolean werBeginnt) {
spiel.generiereSpielbrett();
}
public boolean findeHenne(String henneGewählt) { public boolean findeHenne(String henneGewählt) {
@ -371,11 +427,36 @@ public class Spielsystem {
spiel.ändereWertImArray(neueZielY, neueZielX, 'X'); spiel.ändereWertImArray(neueZielY, neueZielX, 'X');
spiel.ändereWertImArray(neueStartY, neueStartX, '\u25A1'); spiel.ändereWertImArray(neueStartY, neueStartX, '\u25A1');
return true; 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++;
}
}
} }

View File

@ -128,7 +128,7 @@ public class UI {
System.out.println(); System.out.println();
break; break;
case 2: case 2:
spielsystem.spielerBestimmen(spieler1Spielt); spielsystem.spielerBestimmen2Spieler(spieler1Spielt);
spieler2Spielt = 1; spieler2Spielt = 1;
System.out.println(); System.out.println();
System.out.println("Sie haben sich für die Hennen entschieden."); System.out.println("Sie haben sich für die Hennen entschieden.");
@ -198,35 +198,32 @@ public class UI {
// wenn Henne beginnt // wenn Henne beginnt
if (zugHenne == true) { if (zugHenne == true) {
if (spieler1Wahl == 1) { // spielsystem.setAktivenSpieler(true);
boolean henne = 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); if (erfolgreicherZug == false) {
System.out.println("Die Hennen sind am Zug:"); System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!");
System.out.println("Spieler Sie sind dran"); System.out.println("Sie sind weiterhin am Zug");
do {
System.out.println("Bitte geben Sie Ihren Zug ein:");
System.out.println(); System.out.println();
System.out.print("> "); }
zug = sc.nextLine(); } while (erfolgreicherZug == false);
System.out.println();
erfolgreicherZug = spielsystem.isValidMoveHenne(zug, henne);
if (erfolgreicherZug == false) { spielsystem.myMove2Spieler(zug,"Henne");
System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!"); zugHenne = false;
System.out.println("Sie sind weiterhin am Zug"); zugFuchs = true;
System.out.println();
}
} while (erfolgreicherZug == false);
spielsystem.myMove(zug);
zugHenne = false;
zugFuchs = true;
}
// wenn Fuchs beginnt // wenn Fuchs beginnt
} else if (zugFuchs == true) { } else if (zugFuchs == true) {
spielsystem.setAktivenSpieler(true); // spielsystem.setAktivenSpieler(true);
System.out.println("Die Füchse sind am Zug:"); System.out.println("Die Füchse sind am Zug:");
if (spielsystem.fuchsUmzingelt() == true) { if (spielsystem.fuchsUmzingelt() == true) {
@ -249,7 +246,7 @@ public class UI {
System.out.print("> "); System.out.print("> ");
zug = sc.nextLine(); zug = sc.nextLine();
System.out.println(); System.out.println();
erfolgreicherZug = spielsystem.isValidMove(zug); erfolgreicherZug = spielsystem.isValidMoveFüchse(zug);
if (erfolgreicherZug == false) { if (erfolgreicherZug == false) {
System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!"); System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!");
@ -258,7 +255,7 @@ public class UI {
} }
} while (erfolgreicherZug == false); } while (erfolgreicherZug == false);
spielsystem.myMove(zug); spielsystem.myMove2Spieler(zug, "Fuchs");
zugHenne = true; zugHenne = true;
zugFuchs = false; zugFuchs = false;