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.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++;
}
}
}

View File

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