Vertikale Gewinnerprüfung eingebaut.

tryOut
Oliver Hummel 2023-11-21 14:40:57 +01:00
parent e11e77001d
commit ff21f11182
1 changed files with 29 additions and 16 deletions

View File

@ -7,42 +7,46 @@ public class VierGewinnt {
// Game Loop // Game Loop
Scanner kb = new Scanner(System.in); Scanner kb = new Scanner(System.in);
boolean weiter = false; boolean weiter = false;
char spieler = 'o'; char spieler = 'x';
do { do {
char[][] spielfeld = spielfeldInitialisieren(); char[][] spielfeld = spielfeldInitialisieren();
int steineZähler = 0;
spielfeldAusgeben(spielfeld); spielfeldAusgeben(spielfeld);
// Gewinner Loop // Gewinner Loop
boolean gewonnen = false; boolean gewonnen = false;
do { do {
// wer ist dran? if (spieler == 'o')
spieler = 'x';
else
spieler = 'o';
// Spielstein einwerfen // Spielstein einwerfen
int spalte;
do { do {
System.out.print("Spieler " + spieler + ", bitte wählen Sie eine Spalte aus: "); System.out.print("Spieler " + spieler + ", bitte wählen Sie eine Spalte aus: ");
int spalte = kb.nextInt(); spalte = kb.nextInt() - 1; // da Spalte eins verschoben
if (!einwurfVerarbeiten(spielfeld, spalte, spieler)) if (!einwurfVerarbeiten(spielfeld, spalte, spieler))
System.err.println("Ungültige Auswahl!"); System.err.println("Ungültige Auswahl!");
else else
break; break;
} while(true); } while(true);
steineZähler++;
spielfeldAusgeben(spielfeld); spielfeldAusgeben(spielfeld);
if (spieler == 'o') gewonnen = gewinnerPrüfung(spielfeld, spalte);
spieler = 'x'; } while(!gewonnen && steineZähler < 42);
else
spieler = 'o';
// Gewinnerprüfung if (!gewonnen && steineZähler == 42) {
System.out.println("Das Spiel endet unentschieden.");
} else {
} while(!gewonnen); System.out.println("Es gewinnt Spieler " + spieler);
}
// Gewinnerausgabe (auch unentschieden)
} while (weiter); } while (weiter);
@ -85,8 +89,6 @@ public class VierGewinnt {
} }
public static boolean einwurfVerarbeiten(char[][] spielfeld, int spalte, char stein) { public static boolean einwurfVerarbeiten(char[][] spielfeld, int spalte, char stein) {
spalte--; // Da die Eingabe von 1 bis 7 war.
if (spalte < 0 || spalte > 6) if (spalte < 0 || spalte > 6)
return false; return false;
@ -103,4 +105,15 @@ public class VierGewinnt {
return false; return false;
} }
public static boolean gewinnerPrüfung(char[][] spielfeld, int spalte) {
for (int i = 0; i < 3; i++) {
if (spielfeld[0 + i][spalte] == spielfeld[1 + i][spalte]
&& spielfeld[0 + i][spalte] == spielfeld[2 + i][spalte]
&& spielfeld[0 + i][spalte] == spielfeld[3 + i][spalte]
&& spielfeld[0 + i][spalte] != '_')
return true;
}
return false;
}
} }