From 4a6cef9fedaf056d4fcef9a33861f42eb82ec343 Mon Sep 17 00:00:00 2001 From: Oliver Hummel Date: Tue, 21 Nov 2023 14:54:37 +0100 Subject: [PATCH] =?UTF-8?q?Horizontale=20Gewinnerpr=C3=BCfung=20hinzugef?= =?UTF-8?q?=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4Gewinnt/src/VierGewinnt.java | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/4Gewinnt/src/VierGewinnt.java b/4Gewinnt/src/VierGewinnt.java index e2746d1..34e7662 100644 --- a/4Gewinnt/src/VierGewinnt.java +++ b/4Gewinnt/src/VierGewinnt.java @@ -25,12 +25,12 @@ public class VierGewinnt { spieler = 'o'; // Spielstein einwerfen - int spalte; + int spalte, zeile; do { System.out.print("Spieler " + spieler + ", bitte wählen Sie eine Spalte aus: "); 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!"); else break; @@ -39,7 +39,7 @@ public class VierGewinnt { spielfeldAusgeben(spielfeld); - gewonnen = gewinnerPrüfung(spielfeld, spalte); + gewonnen = gewinnerPrüfung(spielfeld, zeile, spalte); } while(!gewonnen && steineZähler < 42); if (!gewonnen && steineZähler == 42) { @@ -88,24 +88,26 @@ public class VierGewinnt { 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) - return false; + return -1; for (int z = spielfeld.length - 1; z >= 0 ; z--) { if (spielfeld[z][spalte] != '_' && z == 0) // Spalte voll? - return false; + return -1; if (spielfeld[z][spalte] == '_') { 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++) { if (spielfeld[0 + i][spalte] == spielfeld[1 + i][spalte] && spielfeld[0 + i][spalte] == spielfeld[2 + i][spalte] @@ -114,6 +116,15 @@ public class VierGewinnt { 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; } }