import java.util.Scanner; public class VierGewinnt { public static char[][] spielfeldInitialisieren() { char[][] spielfeld = new char[6][7]; return spielfeld; } public static void spielfeldAusgeben(char[][] spielfeld) { for (int z = 0; z < spielfeld.length; z++) { for (int s = 0; s < spielfeld[z].length; s++) { System.out.print(spielfeld[z][s] + " "); } System.out.println(); } } public static boolean gewinnpruefung(char[][] spielfeld, char spieler) { // Check for horizontal win for (int z = 0; z < spielfeld.length; z++) { for (int s = 0; s <= spielfeld[z].length - 4; s++) { if (spielfeld[z][s] == spieler && spielfeld[z][s + 1] == spieler && spielfeld[z][s + 2] == spieler && spielfeld[z][s + 3] == spieler) { return true; } } } // Check for vertical win for (int s = 0; s < spielfeld[0].length; s++) { for (int z = 0; z <= spielfeld.length - 4; z++) { if (spielfeld[z][s] == spieler && spielfeld[z + 1][s] == spieler && spielfeld[z + 2][s] == spieler && spielfeld[z + 3][s] == spieler) { return true; } } } // Check for diagonal win (from top-left to bottom-right) for (int z = 0; z <= spielfeld.length - 4; z++) { for (int s = 0; s <= spielfeld[z].length - 4; s++) { if (spielfeld[z][s] == spieler && spielfeld[z + 1][s + 1] == spieler && spielfeld[z + 2][s + 2] == spieler && spielfeld[z + 3][s + 3] == spieler) { return true; } } } // Check for diagonal win (from top-right to bottom-left) for (int z = 0; z <= spielfeld.length - 4; z++) { for (int s = 3; s < spielfeld[z].length; s++) { if (spielfeld[z][s] == spieler && spielfeld[z + 1][s - 1] == spieler && spielfeld[z + 2][s - 2] == spieler && spielfeld[z + 3][s - 3] == spieler) { return true; } } } // No winning condition found return false; } public static void main(String[] args) { System.out.println("Willkommen beim 4 Gewinnt der PR1"); boolean weiter = true; Scanner scanner = new Scanner(System.in); // Game loop do { char[][] spielfeld = spielfeldInitialisieren(); // Gewinner loop boolean gewonnen = false; char aktuellerSpieler = 'X'; // Game loop do { // Spielfeld ausgeben spielfeldAusgeben(spielfeld); // Spielstein einwurf System.out.println("Spieler " + aktuellerSpieler + " ist am Zug. Bitte Spalte wählen (1-7): "); int spalte = scanner.nextInt() - 1; // Überprüfen, ob die gewählte Spalte gültig ist if (spalte < 0 || spalte >= spielfeld[0].length || spielfeld[0][spalte] != ' ') { System.out.println("Ungültige Eingabe. Bitte erneut versuchen."); continue; } // Spielstein setzen for (int z = spielfeld.length - 1; z >= 0; z--) { if (spielfeld[z][spalte] == ' ') { spielfeld[z][spalte] = aktuellerSpieler; break; } } // Gewinnprüfung gewonnen = gewinnpruefung(spielfeld, aktuellerSpieler); // Wechsel zum anderen Spieler aktuellerSpieler = (aktuellerSpieler == 'X') ? 'O' : 'X'; } while (!gewonnen); // Spielfeld am Ende nochmal ausgeben spielfeldAusgeben(spielfeld); // Gewinner ausgabe bzw. Unentschieden System.out.println("Spieler " + aktuellerSpieler + " hat gewonnen!"); // Spiel nochmal spielen? System.out.println("Möchten Sie nochmal spielen? (ja/nein): "); String wiederholen = scanner.next(); weiter = wiederholen.equalsIgnoreCase("ja"); } while (weiter); scanner.close(); } }