Code weiter aufgeräumt (engl. Refactoring).

main
Oliver Hummel 2023-11-21 17:02:27 +01:00
parent 336965b91e
commit 1453ff4717
1 changed files with 33 additions and 29 deletions

View File

@ -1,41 +1,28 @@
import java.util.Scanner;
public class VierGewinnt {
static Scanner kb = new Scanner(System.in); // sog. Klassenvariable
public static void main(String[] args) {
System.out.println("Willkommen zu 4 Gewinnt!");
// Game Loop
Scanner kb = new Scanner(System.in);
boolean weiter = false;
char spieler = 'x';
do {
char[][] spielfeld = spielfeldInitialisieren();
int steineZähler = 0;
spielfeldAusgeben(spielfeld);
int steineZähler = 0;
// Gewinner Loop
boolean gewonnen = false;
do {
spieler = spielerWechseln(spieler);
// Spielstein einwerfen
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 ((zeile = einwurfVerarbeiten(spielfeld, spalte, spieler)) == -1)
System.err.println("Ungültige Auswahl!");
else
break;
} while(true);
int[] koordinate = spielsteinEinwerfen(spielfeld, spieler);
gewonnen = gewinnerPrüfung(spielfeld, koordinate[0], koordinate[1]);
spielfeldAusgeben(spielfeld);
gewonnen = gewinnerPrüfung(spielfeld, zeile, spalte);
} while(!gewonnen && ++steineZähler < 42);
if (!gewonnen && steineZähler == 42) {
@ -49,13 +36,6 @@ public class VierGewinnt {
System.out.println("Auf Wiedersehen!");
} // main
public static char spielerWechseln(char spieler) {
if (spieler == 'o')
return 'x';
return 'o';
}
public static char[][] spielfeldInitialisieren() {
char[][] spielfeld = new char[6][7];
@ -67,7 +47,7 @@ public class VierGewinnt {
return spielfeld;
}
public static void spielfeldAusgeben(char[][] spielfeld) {
System.out.println();
@ -91,6 +71,29 @@ public class VierGewinnt {
System.out.println();
}
public static char spielerWechseln(char spieler) {
if (spieler == 'o')
return 'x';
return 'o';
}
public static int[] spielsteinEinwerfen(char[][] spielfeld, char spieler) {
int zeile, spalte;
do {
System.out.print("Spieler " + spieler + ", bitte wählen Sie eine Spalte aus: ");
spalte = kb.nextInt() - 1; // da Spalte eins verschoben
if ((zeile = einwurfVerarbeiten(spielfeld, spalte, spieler)) == -1)
System.err.println("Ungültige Auswahl!");
else
break;
} while(true);
return new int[] {zeile, spalte};
}
public static int einwurfVerarbeiten(char[][] spielfeld, int spalte, char stein) {
if (spalte < 0 || spalte > 6)
return -1;
@ -152,4 +155,5 @@ public class VierGewinnt {
return false;
}
}
} // eof