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; import java.util.Scanner;
public class VierGewinnt { public class VierGewinnt {
static Scanner kb = new Scanner(System.in); // sog. Klassenvariable
public static void main(String[] args) { public static void main(String[] args) {
System.out.println("Willkommen zu 4 Gewinnt!"); System.out.println("Willkommen zu 4 Gewinnt!");
// Game Loop // Game Loop
Scanner kb = new Scanner(System.in);
boolean weiter = false; boolean weiter = false;
char spieler = 'x'; char spieler = 'x';
do { do {
char[][] spielfeld = spielfeldInitialisieren(); char[][] spielfeld = spielfeldInitialisieren();
int steineZähler = 0;
spielfeldAusgeben(spielfeld); spielfeldAusgeben(spielfeld);
int steineZähler = 0;
// Gewinner Loop // Gewinner Loop
boolean gewonnen = false; boolean gewonnen = false;
do { do {
spieler = spielerWechseln(spieler); spieler = spielerWechseln(spieler);
// Spielstein einwerfen int[] koordinate = spielsteinEinwerfen(spielfeld, spieler);
int spalte, zeile; gewonnen = gewinnerPrüfung(spielfeld, koordinate[0], koordinate[1]);
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);
spielfeldAusgeben(spielfeld); spielfeldAusgeben(spielfeld);
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) {
@ -49,13 +36,6 @@ public class VierGewinnt {
System.out.println("Auf Wiedersehen!"); System.out.println("Auf Wiedersehen!");
} // main } // main
public static char spielerWechseln(char spieler) {
if (spieler == 'o')
return 'x';
return 'o';
}
public static char[][] spielfeldInitialisieren() { public static char[][] spielfeldInitialisieren() {
char[][] spielfeld = new char[6][7]; char[][] spielfeld = new char[6][7];
@ -67,7 +47,7 @@ public class VierGewinnt {
return spielfeld; return spielfeld;
} }
public static void spielfeldAusgeben(char[][] spielfeld) { public static void spielfeldAusgeben(char[][] spielfeld) {
System.out.println(); System.out.println();
@ -91,6 +71,29 @@ public class VierGewinnt {
System.out.println(); 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) { public static int einwurfVerarbeiten(char[][] spielfeld, int spalte, char stein) {
if (spalte < 0 || spalte > 6) if (spalte < 0 || spalte > 6)
return -1; return -1;
@ -152,4 +155,5 @@ public class VierGewinnt {
return false; return false;
} }
}
} // eof