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();
} }
@ -209,13 +227,23 @@ public class Spielsystem {
} }
} }
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;
@ -276,7 +337,8 @@ public class Spielsystem {
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);
} }
@ -303,12 +365,6 @@ public class Spielsystem {
// 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) {
char[][] spielbrett = spiel.getSpielbrettArray(); char[][] spielbrett = spiel.getSpielbrettArray();
@ -376,6 +432,31 @@ public class Spielsystem {
} }
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,10 +198,7 @@ public class UI {
// wenn Henne beginnt // wenn Henne beginnt
if (zugHenne == true) { if (zugHenne == true) {
if (spieler1Wahl == 1) { // spielsystem.setAktivenSpieler(true);
boolean henne = true;
spielsystem.setAktivenSpieler(true);
System.out.println("Die Hennen sind am Zug:"); System.out.println("Die Hennen sind am Zug:");
System.out.println("Spieler Sie sind dran"); System.out.println("Spieler Sie sind dran");
do { do {
@ -210,7 +207,7 @@ public class UI {
System.out.print("> "); System.out.print("> ");
zug = sc.nextLine(); zug = sc.nextLine();
System.out.println(); System.out.println();
erfolgreicherZug = spielsystem.isValidMoveHenne(zug, henne); erfolgreicherZug = spielsystem.isValidMoveHenne(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!");
@ -219,14 +216,14 @@ public class UI {
} }
} while (erfolgreicherZug == false); } while (erfolgreicherZug == false);
spielsystem.myMove(zug); spielsystem.myMove2Spieler(zug,"Henne");
zugHenne = false; zugHenne = false;
zugFuchs = true; 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;