1
0
Fork 0

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