Horizontale Gewinnerprüfung hinzugefügt.

tryOut
Oliver Hummel 2023-11-21 14:54:37 +01:00
parent ff21f11182
commit 4a6cef9fed
1 changed files with 20 additions and 9 deletions

View File

@ -25,12 +25,12 @@ public class VierGewinnt {
spieler = 'o'; spieler = 'o';
// Spielstein einwerfen // Spielstein einwerfen
int spalte; int spalte, zeile;
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: ");
spalte = kb.nextInt() - 1; // da Spalte eins verschoben spalte = kb.nextInt() - 1; // da Spalte eins verschoben
if (!einwurfVerarbeiten(spielfeld, spalte, spieler)) if ((zeile = einwurfVerarbeiten(spielfeld, spalte, spieler)) == -1)
System.err.println("Ungültige Auswahl!"); System.err.println("Ungültige Auswahl!");
else else
break; break;
@ -39,7 +39,7 @@ public class VierGewinnt {
spielfeldAusgeben(spielfeld); spielfeldAusgeben(spielfeld);
gewonnen = gewinnerPrüfung(spielfeld, spalte); gewonnen = gewinnerPrüfung(spielfeld, zeile, spalte);
} while(!gewonnen && steineZähler < 42); } while(!gewonnen && steineZähler < 42);
if (!gewonnen && steineZähler == 42) { if (!gewonnen && steineZähler == 42) {
@ -88,24 +88,26 @@ public class VierGewinnt {
System.out.println(); System.out.println();
} }
public static boolean einwurfVerarbeiten(char[][] spielfeld, int spalte, char stein) { public static int einwurfVerarbeiten(char[][] spielfeld, int spalte, char stein) {
if (spalte < 0 || spalte > 6) if (spalte < 0 || spalte > 6)
return false; return -1;
for (int z = spielfeld.length - 1; z >= 0 ; z--) { for (int z = spielfeld.length - 1; z >= 0 ; z--) {
if (spielfeld[z][spalte] != '_' && z == 0) // Spalte voll? if (spielfeld[z][spalte] != '_' && z == 0) // Spalte voll?
return false; return -1;
if (spielfeld[z][spalte] == '_') { if (spielfeld[z][spalte] == '_') {
spielfeld[z][spalte] = stein; spielfeld[z][spalte] = stein;
return true; return z;
} }
} }
return false; return -1;
} }
public static boolean gewinnerPrüfung(char[][] spielfeld, int spalte) { public static boolean gewinnerPrüfung(char[][] spielfeld, int zeile, int spalte) {
// vertikale Prüfung
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
if (spielfeld[0 + i][spalte] == spielfeld[1 + i][spalte] if (spielfeld[0 + i][spalte] == spielfeld[1 + i][spalte]
&& spielfeld[0 + i][spalte] == spielfeld[2 + i][spalte] && spielfeld[0 + i][spalte] == spielfeld[2 + i][spalte]
@ -114,6 +116,15 @@ public class VierGewinnt {
return true; return true;
} }
// horizontale Prüfung
for (int i = 0; i < 4; i++) {
if (spielfeld[zeile][0 + i] == spielfeld[zeile][1 + i]
&& spielfeld[zeile][0 + i] == spielfeld[zeile][2 + i]
&& spielfeld[zeile][0 + i] == spielfeld[zeile][3 + i]
&& spielfeld[zeile][0 + i] != '_')
return true;
}
return false; return false;
} }
} }