From ff21f11182a7849a5270a0344993d4121e76aaf8 Mon Sep 17 00:00:00 2001 From: Oliver Hummel Date: Tue, 21 Nov 2023 14:40:57 +0100 Subject: [PATCH] =?UTF-8?q?Vertikale=20Gewinnerpr=C3=BCfung=20eingebaut.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4Gewinnt/src/VierGewinnt.java | 45 ++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/4Gewinnt/src/VierGewinnt.java b/4Gewinnt/src/VierGewinnt.java index 2affc45..e2746d1 100644 --- a/4Gewinnt/src/VierGewinnt.java +++ b/4Gewinnt/src/VierGewinnt.java @@ -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; + } }