Java :: Aufgabe #41 :: Lösung #2
2 Lösungen
#41
4 Gewinnt für die Konsole
Anfänger - Java
von Gustl
- 05.01.2013 um 16:57 Uhr
Es soll 4 Gewinnt für die Konsole programmiert werden.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.
Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.
Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
#2
von paddlboot (3970 Punkte)
- 09.07.2019 um 09:15 Uhr
import java.util.*;
public class gewinnt {
static String[] [] spielfeld = new String[6] [7];
static Scanner scanner = new Scanner(System.in);
public static void main (String[] args) {
boolean sp = true;
//Spielfeld mit leeren Strings füllen
for(int i = 0; i < 6; i++) {
for(int j = 0; j < 7; j++) {
spielfeld[i][j] = "";
}
}
do
{
spielfeldausgeben();
if(sp == true) {
einwurf(1);
} else {
einwurf(2);
}
//Spielerwechsel nach Zug
sp = !sp;
if(feldVoll() == true) break;
}while(gewonnen() == false);
spielfeldausgeben();
}
public static String diagonal() {
int var = 0;
String spieler = "";
int counter = 0;
//untenlinks nach oben rechts + verschiebung nach rechts
//4 Möglichkeiten
for(int mögl = 0; mögl < 4; mögl++) {
//5 Felder
for(int felder = 5; felder >= 0; felder--) {
//damit keine OutOfRangeException
if((mögl + var) > 6) break;
//setze counter auf 1, wenn kein leeres Feld
if(spieler != spielfeld[felder][mögl+var]) {
spieler = spielfeld[felder][mögl + var];
counter = 1;
} else counter++; //wenn spieler mit dem Eintrag im Spielfeld übereinstimmt, soll der Counter hochgezählt werden
//wenn 4 aufeinander folgen, soll der Spieler zurückgegeben werden
if((counter == 4) && (spieler != "")) return spieler;
//Variable hochzählen für die richtigen Felder
var++;
}
//alles zurücksetzen für den neuen Durchgang
var = 0;
counter = 0;
spieler = "";
}
//untenlinks nach oben rechts + verschiebung nach oben
//3 Möglichkeiten
for(int mögl = 0; mögl < 3; mögl++) {
int zahl = 0;
for(int felder = 5; felder >= 0; felder--) {
//damit keine OutOfRangeException
if((felder - var) < 0 ) break;
//setze counter auf 1, wenn kein leeres Feld
if(spieler != spielfeld[felder - var][zahl]) {
spieler = spielfeld[felder - var][zahl];
counter = 1;
} else counter++; //wenn spieler mit dem Eintrag im Spielfeld übereinstimmt, soll der Counter hochgezählt werden
//wenn 4 aufeinander folgen, soll der Spieler zurückgegeben werden
if((counter == 4) && (spieler != "")) return spieler;
//Zahl hochzählen für die richtigen Felder
zahl++;
}
//Variable hochzählen für die richtigen Felder
var++;
//alles zurücksetzen für den neuen Durchgang
counter = 0;
spieler = "";
}
//Var zurücksetzen
var = 1;
//untenrechts nach oben links + verschiebung nach links
//4 Möglichkeiten
for(int mögl = 0; mögl < 4; mögl++) {
//5 Felder
for(int reihe = 5; reihe >= 0; reihe--) {
//damit keine OutOfRangeException
if((reihe+var) < 0) break;
//setze counter auf 1, wenn kein leeres Feld
if(spieler != spielfeld[reihe][reihe+var]) {
spieler = spielfeld[reihe][reihe+var];
counter = 1;
} else counter++; //wenn spieler mit dem Eintrag im Spielfeld übereinstimmt, soll der Counter hochgezählt werden
//wenn 4 aufeinander folgen, soll der Spieler zurückgegeben werden
if((counter == 4) &&(spieler != "")) return spieler;
}
//Variable runterzählen für die richtigen Felder
var--;
//alles zurücksetzen für den neuen Durchgang
counter = 0;
spieler = "";
}
//Variable zurücksetzen
var = 0;
//untenrechts nach oben links + verschiebung nach oben
//3 Möglichkeiten
for(int mögl = 0; mögl < 3; mögl++) {
//Variable für die richtigen Felder
int zahl = 6;
//5 Felder
for(int reihe = 5; reihe >= 0; reihe--) {
//damit keine OutOfRangeException
if((reihe-var) < 0) break;
//setze counter auf 1, wenn kein leeres Feld
if(spieler != spielfeld[reihe-var][zahl]) {
spieler = spielfeld[reihe-var][zahl];
counter = 1;
}else counter++; //wenn spieler mit dem Eintrag im Spielfeld übereinstimmt, soll der Counter hochgezählt werden
//wenn 4 aufeinander folgen, soll der Spieler zurückgegeben werden
if((counter == 4) && (spieler != "")) return spieler;
//Variable runterzählen für die richtigen Felder
zahl--;
}
//Variable hochzählen für die richtigen Felder
var++;
}
//nichts zurückgeben, wenn nichts davon zutrifft
return "";
}
public static String horizontal() {
int counter = 0;
String spieler = "";
for(int reihe = 5; reihe >= 0; reihe--) {
for(int spalte = 0; spalte < 7; spalte++) {
if(spieler != spielfeld[reihe][spalte]) {
spieler = spielfeld[reihe][spalte];
counter = 1;
} else counter++;
if(counter == 4 && spieler != "") {
return spieler;
}
}
counter = 0;
spieler = "";
}
return "";
}
public static String vertikal() {
int counter = 0;
String spieler = "";
for(int spalte = 0; spalte < 7; spalte++) {
for(int reihe = 5; reihe >= 0; reihe--) {
if(spieler != spielfeld[reihe][spalte]) {
spieler = spielfeld[reihe][spalte];
counter = 1;
} else counter++;
if((counter == 4) && (spieler != "")) {
return spieler;
}
}
counter = 0;
spieler = "";
}
return "";
}
public static boolean gewonnen() {
if(vertikal() != "") return true;
else if(horizontal() != "") return true;
else if(diagonal() != "") return true;
else return false;
}
public static boolean feldVoll() {
int counter = 0;
for(int i = 0; i < 7; i++) {
if(spielfeld[0][i] != "") {
counter++;
}
}
if(counter == 7) {
System.out.println("Das Spielfeld ist voll! Unentschieden!");
return true;
}
else return false;
}
public static boolean spalteVoll(int spalte) {
if(spielfeld[0][spalte] != "") {
return true;
} else return false;
}
public static void einwurf(int spieler) {
int spalte;
boolean gilt = false;
do
{
System.out.println("Spieler " + spieler + " ist dran!");
System.out.print("Spalte:\t");
spalte = scanner.nextInt() - 1;
if(spalteVoll(spalte) == false) {
for(int i = 5; i >= 0; i--) {
if(spielfeld[i][spalte] == "") {
if(spieler == 1) {
spielfeld [i][spalte] = "1";
} else {
spielfeld [i][spalte] = "2";
}
gilt = true;
break;
}
}
} else System.out.println("Spalte voll!");
}while(gilt == false);
}
public static void spielfeldausgeben() {
for(int i = 0; i < 6; i++) {
for(int j = 0; j < 7; j++) {
System.out.print(" | ");
switch (spielfeld[i][j]) {
case "":
System.out.print(" ");
break;
case "1":
System.out.print("X");
break;
case "2":
System.out.print("O");
break;
}
}
System.out.print(" |");
System.out.println();
}
System.out.println(" -----------------------------");
}
}Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
