Sonderzug (Push Henne) dazu

pull/5/head
robinschumann 2022-12-05 09:57:14 +01:00
parent a4ed62cf8d
commit f1a94b7b96
3 changed files with 242 additions and 116 deletions

View File

@ -40,9 +40,9 @@ public class Spiel {
spielbrettArray[1][1] = ' '; spielbrettArray[1][1] = ' ';
spielbrettArray[1][2] = ' '; spielbrettArray[1][2] = ' ';
spielbrettArray[1][3] = ' '; spielbrettArray[1][3] = ' ';
spielbrettArray[1][4] = '\u25A1'; spielbrettArray[1][4] = 'O';
spielbrettArray[1][5] = '\u25A1'; spielbrettArray[1][5] = '\u25A1';
spielbrettArray[1][6] = '\u25A1'; spielbrettArray[1][6] = 'O';
spielbrettArray[1][7] = ' '; spielbrettArray[1][7] = ' ';
spielbrettArray[1][8] = ' '; spielbrettArray[1][8] = ' ';
spielbrettArray[1][9] = ' '; spielbrettArray[1][9] = ' ';
@ -210,7 +210,7 @@ public class Spiel {
umgewandelt[1] = umwandeln2; umgewandelt[1] = umwandeln2;
return umgewandelt; return umgewandelt;
} }
if (umwandeln1 == 4 && umwandeln2 == 1 ) { if (umwandeln1 == 5 && umwandeln2 == 1 ) {
umwandeln1 = 7 ; umwandeln1 = 7 ;
umwandeln2 = 6 ; umwandeln2 = 6 ;

View File

@ -298,4 +298,71 @@ public class Spielsystem {
// UI.start(werBeginnt, kiLevel); // UI.start(werBeginnt, kiLevel);
} }
public boolean findeHenne(String henneGewählt) {
char[][] spielbrett = spiel.getSpielbrettArray();
char startKoordinate1 = henneGewählt.charAt(0);
char startKoordinate2 = henneGewählt.charAt(2);
// Werte als int
int koordX = Character.getNumericValue(startKoordinate1);
int koordY = Character.getNumericValue(startKoordinate2);
int[] neueKoordinaten = spiel.wandelPassendUm(koordX, koordY);
int neuesX = neueKoordinaten[1];
int neuesY = neueKoordinaten[0];
if (spielbrett[neuesY][neuesX] == 'X') {
System.out.println("Henne gefunden");
return true;
} else {
System.out.println("Keine Henne an der gewählten Stelle");
return false;
}
}
public boolean findeFreiesFeld(String pushHenne) {
char[][] spielbrett = spiel.getSpielbrettArray();
char startKoordinate1 = pushHenne.charAt(0);
char startKoordinate2 = pushHenne.charAt(2);
// Werte als int
int koordX = Character.getNumericValue(startKoordinate1);
int koordY = Character.getNumericValue(startKoordinate2);
int[] neueKoordinaten = spiel.wandelPassendUm(koordX, koordY);
int neuesX = neueKoordinaten[1];
int neuesY = neueKoordinaten[0];
if (spielbrett[neuesY][neuesX] == '\u25A1') {
System.out.println("freies Feld gefunden");
return true;
} else {
System.out.println("Keine kein freies Feld an der gewählten Stelle");
return false;
}
}
public boolean pushHenne(String zugPushHenne) {
char[][] spielbrett = spiel.getSpielbrettArray();
int[] neueKoordinaten = berechneRichtigeKoordinaten(zugPushHenne);
int neueStartY = neueKoordinaten[0];
int neueStartX = neueKoordinaten[1];
int neueZielY = neueKoordinaten[2];
int neueZielX = neueKoordinaten[3];
spiel.ändereWertImArray(neueZielY, neueZielX, 'X');
spiel.ändereWertImArray(neueStartY, neueStartX, '\u25A1');
return true;
}
} }

View File

@ -4,7 +4,6 @@ import java.util.Scanner;
import facade.Spielsystem; import facade.Spielsystem;
public class UI { public class UI {
private Spielsystem spielsystem; private Spielsystem spielsystem;
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
@ -17,98 +16,105 @@ public class UI {
private void hauptmenü() { private void hauptmenü() {
System.out.println("Willkommen beim Spiel des Jahres: " + spielsystem.getSpielname() + "!"); System.out.println("Willkommen beim Spiel des Jahres: " + spielsystem.getSpielname() + "!");
mainloop: mainloop: while (true) {
while (true) { System.out.println();
System.out.println(); System.out.println("--------");
System.out.println("--------"); System.out.println("Hauptmenü:");
System.out.println("Hauptmenü:"); System.out.println("1 -> Neues Spiel starten");
System.out.println("1 -> Neues Spiel starten"); System.out.println("2 -> Regeln anzeigen");
System.out.println("2 -> Regeln anzeigen"); System.out.println("8 -> Credits anzeigen");
System.out.println("8 -> Credits anzeigen");
System.out.println("9 -> Beenden"); System.out.println("9 -> Beenden");
System.out.println(); System.out.println();
System.out.print("> "); System.out.print("> ");
int input = 0;
try {
input = Integer.parseInt(sc.nextLine());
System.out.println();
} catch (NumberFormatException nfe) {
System.out.println("\nLeider haben Sie keine Zahl eingegeben. Bitte geben Sie eine Zahl ein:");
}
try { int input = 0;
switch(input) { try {
case 1: gameloop(); break; input = Integer.parseInt(sc.nextLine());
//case 2: spielstandLaden(); break; System.out.println();
case 2: regelnAnzeigen(); break; } catch (NumberFormatException nfe) {
//case 7: highscoreAnzeigen(); break; System.out.println("\nLeider haben Sie keine Zahl eingegeben. Bitte geben Sie eine Zahl ein:");
case 8: creditsAnzeigen(); break;
case 9: break mainloop;
}
} catch (Exception e) {
System.err.println(e.getLocalizedMessage());
}
} }
try {
switch (input) {
case 1:
gameloop();
break;
// case 2: spielstandLaden(); break;
case 2:
regelnAnzeigen();
break;
// case 7: highscoreAnzeigen(); break;
case 8:
creditsAnzeigen();
break;
case 9:
break mainloop;
}
} catch (Exception e) {
System.err.println(e.getLocalizedMessage());
}
}
System.out.println("Auf Wiedersehen!"); System.out.println("Auf Wiedersehen!");
} }
// hauptmenü // hauptmenü
// case 1: // case 1:
private void gameloop() { private void gameloop() {
gameloop: gameloop: while (true) {
while(true) { System.out.println();
System.out.println("--------");
System.out.println("Spielmenü:");
System.out.println("1 -> Player vs. Player");
System.out.println("2 -> Player vs. KI");
System.out.println("9 -> Zurück");
System.out.println();
System.out.print("> ");
int input = 0;
try {
input = Integer.parseInt(sc.nextLine());
System.out.println(); System.out.println();
System.out.println("--------"); } catch (NumberFormatException nfe) {
System.out.println("Spielmenü:"); System.out.println("\nLeider haben Sie keine Zahl eingegeben. Bitte geben Sie eine Zahl ein:");
System.out.println("1 -> Player vs. Player");
System.out.println("2 -> Player vs. KI");
System.out.println("9 -> Zurück");
System.out.println();
System.out.print("> ");
int input = 0;
try {
input = Integer.parseInt(sc.nextLine());
System.out.println();
} catch(NumberFormatException nfe){
System.out.println("\nLeider haben Sie keine Zahl eingegeben. Bitte geben Sie eine Zahl ein:");
}
try {
switch(input) {
case 1: pVP(); break;
case 2: pVE(); break;
case 9: break gameloop;
}
} catch(Exception e) {
System.err.println(e.getLocalizedMessage());
}
} }
try {
switch (input) {
case 1:
pVP();
break;
case 2:
pVE();
break;
case 9:
break gameloop;
}
} catch (Exception e) {
System.err.println(e.getLocalizedMessage());
}
}
} }
// case 2: // case 2:
private void regelnAnzeigen() { private void regelnAnzeigen() {
} }
// case 8: // case 8:
private void creditsAnzeigen() { private void creditsAnzeigen() {
} }
// gameloop // gameloop
// case 1: // case 1:
private void pVP() { private void pVP() {
boolean werBeginnt = werBeginnt(); boolean werBeginnt = werBeginnt();
} }
// case 2: // case 2:
private void pVE() { private void pVE() {
System.out.println("Wollen Sie als Spieler die Füchse oder Hennen spielen?"); System.out.println("Wollen Sie als Spieler die Füchse oder Hennen spielen?");
@ -121,9 +127,9 @@ public class UI {
spielsystem.spielerBestimmen(spielerwahl); spielsystem.spielerBestimmen(spielerwahl);
spielsystem.computerBestimmen(spielerwahl); spielsystem.computerBestimmen(spielerwahl);
boolean werBeginnt = werBeginnt(); boolean werBeginnt = werBeginnt();
System.out.println("Auf welchen Schwierigkeitsgrad wollen Sie spielen?"); System.out.println("Auf welchen Schwierigkeitsgrad wollen Sie spielen?");
System.out.println("0 -> easy"); System.out.println("0 -> easy");
System.out.println("1 -> medium"); System.out.println("1 -> medium");
@ -132,26 +138,31 @@ public class UI {
System.out.print("> "); System.out.print("> ");
int kiLevel = Integer.parseInt(sc.nextLine()); int kiLevel = Integer.parseInt(sc.nextLine());
System.out.println(); System.out.println();
spielsystem.start(werBeginnt, kiLevel); spielsystem.start(werBeginnt, kiLevel);
start(werBeginnt, kiLevel); start(werBeginnt, kiLevel);
} }
public void start(boolean werBeginnt, int kiLevel) { public void start(boolean werBeginnt, int kiLevel) {
boolean zugFuchs = false; boolean zugFuchs = false;
boolean zugHenne = false; boolean zugHenne = false;
boolean spielfigurComputer = spielsystem.getSpielfigurComputer(); boolean spielfigurComputer = spielsystem.getSpielfigurComputer();
boolean spielfigurSpieler = spielsystem.getSpielfigurSpieler(); boolean spielfigurSpieler = spielsystem.getSpielfigurSpieler();
boolean erfolgreicherZug; boolean erfolgreicherZug;
boolean erfolgreich;
boolean freiesFeld;
boolean erfolgreichGepusht;
String zugPushHenne = "";
int counter = 0;
String zug; String zug;
if (werBeginnt == true) { if (werBeginnt == true) {
zugHenne = true; zugHenne = true;
} else { } else {
zugFuchs = true; zugFuchs = true;
} }
System.out.println("Das Spiel wurde gestartet!"); System.out.println("Das Spiel wurde gestartet!");
if (kiLevel == 0) { if (kiLevel == 0) {
System.out.println("Sie haben den Schwierigkeitsgrad -easy- ausgewählt"); System.out.println("Sie haben den Schwierigkeitsgrad -easy- ausgewählt");
@ -160,13 +171,13 @@ public class UI {
} else if (kiLevel == 2) { } else if (kiLevel == 2) {
System.out.println("Sie haben den Schwierigkeitsgrad -hard- ausgewählt"); System.out.println("Sie haben den Schwierigkeitsgrad -hard- ausgewählt");
} }
System.out.println(); System.out.println();
System.out.println("Das Startspielbrett sieht wie folgt aus:"); System.out.println("Das Startspielbrett sieht wie folgt aus:");
System.out.println(); System.out.println();
spielsystem.printBoard(); spielsystem.printBoard();
System.out.println(); System.out.println();
do { do {
// Zug Henne KI // Zug Henne KI
if (zugHenne == true && spielfigurComputer == true) { if (zugHenne == true && spielfigurComputer == true) {
@ -177,11 +188,11 @@ public class UI {
zug = spielsystem.yourMove(); zug = spielsystem.yourMove();
System.out.println(); System.out.println();
System.out.println("Die KI hat folgenden Zug gemacht: " + zug); System.out.println("Die KI hat folgenden Zug gemacht: " + zug);
zugHenne = false; zugHenne = false;
zugFuchs = true; zugFuchs = true;
} }
// Zug Henne Spieler // Zug Henne Spieler
else if (zugHenne == true && spielfigurSpieler == true) { else if (zugHenne == true && spielfigurSpieler == true) {
spielsystem.setAktivenSpieler(true); spielsystem.setAktivenSpieler(true);
@ -194,45 +205,94 @@ public class UI {
zug = sc.nextLine(); zug = sc.nextLine();
System.out.println(); System.out.println();
erfolgreicherZug = spielsystem.isValidMove(zug); erfolgreicherZug = spielsystem.isValidMove(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!");
System.out.println("Sie sind weiterhin am Zug"); System.out.println("Sie sind weiterhin am Zug");
System.out.println(); System.out.println();
} }
} while (erfolgreicherZug == false); } while (erfolgreicherZug == false);
spielsystem.myMove(zug); spielsystem.myMove(zug);
zugHenne = false; zugHenne = false;
zugFuchs = true; zugFuchs = true;
} }
// Zug Fuchs Spieler // Zug Fuchs Spieler
else if (zugFuchs == true && spielfigurSpieler == false) { else if (zugFuchs == true && spielfigurSpieler == false) {
spielsystem.setAktivenSpieler(true); spielsystem.setAktivenSpieler(true);
System.out.println("Die Füchse sind am Zug:"); System.out.println("Die Füchse sind am Zug:");
System.out.println("Spieler Sie sind dran"); System.out.println("Bitte wählen Sie entweder (1) normaler Zug oder (2) Sonderzug Push Henne");
do { System.out.println("Denken Sie daran, dass Sie den Sonderzug nur - 1x - benutzen können!");
System.out.println("Bitte geben Sie Ihren Zug ein:"); int eingabe = Integer.parseInt(sc.nextLine());
System.out.println(); switch (eingabe) {
System.out.print("> "); case 1:
zug = sc.nextLine(); System.out.println("Spieler Sie sind dran");
System.out.println(); do {
erfolgreicherZug = spielsystem.isValidMove(zug); 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.println();
} System.out.print("> ");
} while (erfolgreicherZug == false); zug = sc.nextLine();
System.out.println();
spielsystem.myMove(zug); erfolgreicherZug = spielsystem.isValidMove(zug);
zugHenne = true; if (erfolgreicherZug == false) {
zugFuchs = 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. ");
break;
}
} }
// Zug Fuchs KI // Zug Fuchs KI
else if (zugFuchs == true && spielfigurComputer == false) { else if (zugFuchs == true && spielfigurComputer == false) {
spielsystem.setAktivenSpieler(false); spielsystem.setAktivenSpieler(false);
@ -246,15 +306,14 @@ public class UI {
zugHenne = true; zugHenne = true;
zugFuchs = false; zugFuchs = false;
} }
//nach jedem Zug das Spielbrett ausgeben // nach jedem Zug das Spielbrett ausgeben
spielsystem.printBoard(); spielsystem.printBoard();
} while (spielsystem.isRunning() == true); } while (spielsystem.isRunning() == true);
} }
private boolean werBeginnt() { private boolean werBeginnt() {
System.out.println("Sollen die Füchse oder Hennen beginnen?"); System.out.println("Sollen die Füchse oder Hennen beginnen?");
System.out.println("1 -> Füchse beginnen"); System.out.println("1 -> Füchse beginnen");
@ -263,14 +322,14 @@ public class UI {
System.out.print("> "); System.out.print("> ");
int werBeginnt = Integer.parseInt(sc.nextLine()); int werBeginnt = Integer.parseInt(sc.nextLine());
System.out.println(); System.out.println();
if (werBeginnt == 1) { if (werBeginnt == 1) {
//Füchse starten // Füchse starten
return false; return false;
} else { } else {
//Hennen starten // Hennen starten
return true; return true;
} }
} }
} }