F
Fataly
Gast
Hallo ich beötige hilfe bei diesem spiel ich möchte gleich von vornerrein sagen das dieser code nicht von mri selbst geschrieben ist.
nun zu meiner frage ich möchte gerne diesem spiel eine grafische oberfläche verleihen nur hab ich keine ahnung wie das funktioniert bisher läuft es nur in der konsole.
Über Hilfe wäre ich sehr dankbar
package src
public class A07_Vier_gewinnt {
static String SPIELER; // der aktuelle Spielername -> für die Gewinner Ausgabe
/**
* @param args -> unbenutzt
*/
public static void main(String[] args) {
int columns, rows, zaehler = 0, eingabe;
String player1, player2;
char zeichen;
char[][] spielfeld;
//Abfragen des Spielernamens
player1 = eingabeString("Name von SpielerIn A\t\t\t: ");
do {
player2 = eingabeString("Name von SpielerIn B\t\t\t: ");
} while(player1.equals(player2)); //Frage erneut, wenn die Spielernamen gleich sind
//Abfragen der Maße
do {
columns = eingabeInt("Breite des Spielfeldes (mindestens 4)\t: ");
} while (columns < 4); //Frage erneut, wenn die Breite zu klein gewählt wurde
do {
rows = eingabeInt("Hoehe des Spielfeldes (mindestens 4)\t: ");
} while (rows < 4); //Frage erneut, wenn die Höhe zu klein gewählt wurde
spielfeld = new char[rows][columns];
while (zaehler < columns*rows) {
zeichen = (zaehler % 2 == 0) ? 'o' : '+';
SPIELER = (zaehler % 2 == 0) ? player1 : player2;
showSpielfeld(spielfeld);
eingabe = eingabeInt("\n" + SPIELER + "(" + zeichen
+ ") ist am Zug. Bitte gib die Spalte ein: ");
if (eingabe > columns || eingabe < 1)
System.err.println("Feld existriert nicht.. Bitte versuch es nochmal!");
else {
zaehler++; // naechster Bitte
setzeFeld(spielfeld, eingabe, zeichen);
}
}
showSpielfeld(spielfeld);
System.err.println("Unentschieden!");
}
/**
* @param text -> Bildschirmausgabe
* @return -> Tastatureingabe
*/
static int eingabeInt(String text) {
System.out.print(text);
java.util.Scanner input = new java.util.Scanner(System.in);
return input.nextInt();
}
/**
* @param text -> Bildschirmausgabe
* @return -> Tastatureingabe
*/
static String eingabeString(String text) {
System.out.print(text);
java.util.Scanner input = new java.util.Scanner(System.in);
return input.next();
}
/**
* Spalte wird übergeben und das Feld wird gesetzt
* @param spielfeld -> Das Spielfeld mit allen benötigten Daten
* @param column -> eingegebene Spalte
* @param zeichen -> jeder Spieler hat ein Zeichen (*) oder (+)
*/
static void setzeFeld(char[][] spielfeld, int column, char zeichen) {
column--; // Weil der gemeine Mensch denkt, der Zahlenbereich würde sich von 1 bis 4 erstrecken
int pos2check;
if (spielfeld[0][column] != '\0')
System.err.println("Die Reihe ist voll.. Pech!");
else
for (int i = 0; i < spielfeld.length; i++) { //Iteriere durch die Zeilen
if (i + 1 == spielfeld.length) {
// Nach der letzten Zeile kommt nichts mehr..
// also darf in das aktuelle Kästchen geschrieben werden, obwohl im
// nächsten nichts steht
pos2check = i;
if (spielfeld[pos2check][column] == '\0') {
spielfeld[column] = zeichen;
if(IsGameOver(spielfeld, i, column, zeichen)) {// Hat jmd gewonnen?
System.out.println("Spieler mit "+zeichen+"hat gewonnen");
System.exit(0);
}
break;
}
} else {
//Überprüfe immer das folgende Feld
pos2check = i+1;
if (spielfeld[pos2check][column] != '\0') {
spielfeld[column] = zeichen;
if(IsGameOver(spielfeld, i, column, zeichen)) {// Hat jmd gewonnen?
System.out.println("Spieler mit "+zeichen+"hat gewonnen");
System.exit(0);
}
break;
}
}
}
}
/**
* Sammelstelle für die Funktionen, die überprüfen ob jmd. gewonnen hat
* @param spielfeld -> Das Spielfeld mit allen benötigten Daten
* @param column -> die Spalte an der das Zeichen gesetzt wurde
* @param row -> die Reihe an der das Zeichen gesetzt wurde
* @param zeichen -> das Zeichen
*/
static boolean IsGameOver(char[][] spielfeld, int column, int row, char zeichen) {
boolean b1 = GameIsOver_row(spielfeld, column, row, zeichen);
boolean b2 = GameIsOver_column(spielfeld, column, row, zeichen);
boolean b3 = GameIsOver_straight1(spielfeld, column, row, zeichen);
boolean b4 = GameIsOver_straight2(spielfeld, column, row, zeichen);
return (b1||b2||b3||b4);
}
static boolean GameIsOver_row(char[][] spielfeld, int column, int row, char zeichen) {
// nach links
int go = row - 1; // mit dem Punkt links neber dem gesetzten beginne
// ich
int i = 1; // der gesetzte Punkt = 1 Treffer
while (go >= 0) {
if (spielfeld[column][go] != zeichen)
break;
go--;
i++;
}
// nach rechts
go = row + 1;
while (go < spielfeld.length) {
if (spielfeld[column][go] != zeichen)
break;
go++;
i++;
}
return (i > 3);
}
static boolean GameIsOver_column(char[][] spielfeld, int column, int row, char zeichen) {
// nach oben
int go = column - 1;
int i = 1;
while (go >= 0) {
if (spielfeld[go][row] != zeichen)
break;
go--;
i++;
}
// nach unten
go = column + 1;
while (go < spielfeld.length) {
if (spielfeld[go][row] != zeichen)
break;
go++;
i++;
}
return (i > 3);
}
static boolean GameIsOver_straight1(char[][] spielfeld, int column, int row, char zeichen) {
// nach links oben
int go = row - 1;
int go2 = column - 1;
int i = 1;
while (go >= 0 && go2 >= 0) {
if (spielfeld[go2][go] != zeichen)
break;
go--;
go2--;
i++;
}
// nach rechts unten
go = row + 1;
go2 = column + 1;
while (go < spielfeld[0].length && go2 < spielfeld.length) {
if (spielfeld[go2][go] != zeichen)
break;
go++;
go2++;
i++;
}
return (i > 3);
}
static boolean GameIsOver_straight2(char[][] spielfeld, int column, int row, char zeichen) {
// nach links unten
int go = row - 1;
int go2 = column + 1;
int i = 1;
while (go >= 0 && go2 < spielfeld.length) {
if (spielfeld[go2][go] != zeichen)
break;
go--;
go2++;
i++;
}
// nach rechts oben
go = row + 1;
go2 = column - 1;
while (go < spielfeld[0].length && go2 >= 0) {
if (spielfeld[go2][go] != zeichen)
break;
go++;
go2--;
i++;
}
return (i > 3);
}
/**
* Bricht das Programm ab und liefert den Gewinner
* @param spielfeld -> Das Spielfeld mit allen benötigten Daten
*/
static void spielFertig(char[][] spielfeld) {
showSpielfeld(spielfeld);
System.out.println(SPIELER + " hat gewonnen\n");
System.exit(1);
}
/**
* Zeigt das komplette Spielfeld auf dem Bildschirm
* @param spielfeld -> Das Spielfeld mit allen benötigten Daten
*/
static void showSpielfeld(char[][] spielfeld) {
StringBuffer Geruest = new StringBuffer();
StringBuffer row_start = new StringBuffer(" "); // erste Zeile 1 2 3 4
StringBuffer row_divide = new StringBuffer("|"); // Trennzeile |-----|
StringBuffer row_end = new StringBuffer("-"); // letzte Zeile -------
if (spielfeld[0].length > 9) {
for (int i = 1; i <= spielfeld[0].length; i++)
row_start.append((i/10==0) ? " " : i/10).append(" ");
row_start.append("\n ");
}
for (int i = 1; i <= spielfeld[0].length; i++) {
row_start.append(i%10).append(" ");
row_divide.append((i==spielfeld[0].length)? "-|" : "--");
row_end.append("--");
}
System.out.println(row_start);
System.out.println(row_divide);
for (char[] arrZeile : spielfeld) { //iteriere durch alle Zeilen
for (char arrSpalte : arrZeile) { //iteriere durch alle Spalten
Geruest.append("|");
Geruest.append((arrSpalte == '\0') ? ' ' : arrSpalte);
}
Geruest.append("|\n");
}
Geruest.append(row_end).append("\n");
System.out.println(Geruest);
}
}
nun zu meiner frage ich möchte gerne diesem spiel eine grafische oberfläche verleihen nur hab ich keine ahnung wie das funktioniert bisher läuft es nur in der konsole.
Über Hilfe wäre ich sehr dankbar
package src
public class A07_Vier_gewinnt {
static String SPIELER; // der aktuelle Spielername -> für die Gewinner Ausgabe
/**
* @param args -> unbenutzt
*/
public static void main(String[] args) {
int columns, rows, zaehler = 0, eingabe;
String player1, player2;
char zeichen;
char[][] spielfeld;
//Abfragen des Spielernamens
player1 = eingabeString("Name von SpielerIn A\t\t\t: ");
do {
player2 = eingabeString("Name von SpielerIn B\t\t\t: ");
} while(player1.equals(player2)); //Frage erneut, wenn die Spielernamen gleich sind
//Abfragen der Maße
do {
columns = eingabeInt("Breite des Spielfeldes (mindestens 4)\t: ");
} while (columns < 4); //Frage erneut, wenn die Breite zu klein gewählt wurde
do {
rows = eingabeInt("Hoehe des Spielfeldes (mindestens 4)\t: ");
} while (rows < 4); //Frage erneut, wenn die Höhe zu klein gewählt wurde
spielfeld = new char[rows][columns];
while (zaehler < columns*rows) {
zeichen = (zaehler % 2 == 0) ? 'o' : '+';
SPIELER = (zaehler % 2 == 0) ? player1 : player2;
showSpielfeld(spielfeld);
eingabe = eingabeInt("\n" + SPIELER + "(" + zeichen
+ ") ist am Zug. Bitte gib die Spalte ein: ");
if (eingabe > columns || eingabe < 1)
System.err.println("Feld existriert nicht.. Bitte versuch es nochmal!");
else {
zaehler++; // naechster Bitte
setzeFeld(spielfeld, eingabe, zeichen);
}
}
showSpielfeld(spielfeld);
System.err.println("Unentschieden!");
}
/**
* @param text -> Bildschirmausgabe
* @return -> Tastatureingabe
*/
static int eingabeInt(String text) {
System.out.print(text);
java.util.Scanner input = new java.util.Scanner(System.in);
return input.nextInt();
}
/**
* @param text -> Bildschirmausgabe
* @return -> Tastatureingabe
*/
static String eingabeString(String text) {
System.out.print(text);
java.util.Scanner input = new java.util.Scanner(System.in);
return input.next();
}
/**
* Spalte wird übergeben und das Feld wird gesetzt
* @param spielfeld -> Das Spielfeld mit allen benötigten Daten
* @param column -> eingegebene Spalte
* @param zeichen -> jeder Spieler hat ein Zeichen (*) oder (+)
*/
static void setzeFeld(char[][] spielfeld, int column, char zeichen) {
column--; // Weil der gemeine Mensch denkt, der Zahlenbereich würde sich von 1 bis 4 erstrecken
int pos2check;
if (spielfeld[0][column] != '\0')
System.err.println("Die Reihe ist voll.. Pech!");
else
for (int i = 0; i < spielfeld.length; i++) { //Iteriere durch die Zeilen
if (i + 1 == spielfeld.length) {
// Nach der letzten Zeile kommt nichts mehr..
// also darf in das aktuelle Kästchen geschrieben werden, obwohl im
// nächsten nichts steht
pos2check = i;
if (spielfeld[pos2check][column] == '\0') {
spielfeld[column] = zeichen;
if(IsGameOver(spielfeld, i, column, zeichen)) {// Hat jmd gewonnen?
System.out.println("Spieler mit "+zeichen+"hat gewonnen");
System.exit(0);
}
break;
}
} else {
//Überprüfe immer das folgende Feld
pos2check = i+1;
if (spielfeld[pos2check][column] != '\0') {
spielfeld[column] = zeichen;
if(IsGameOver(spielfeld, i, column, zeichen)) {// Hat jmd gewonnen?
System.out.println("Spieler mit "+zeichen+"hat gewonnen");
System.exit(0);
}
break;
}
}
}
}
/**
* Sammelstelle für die Funktionen, die überprüfen ob jmd. gewonnen hat
* @param spielfeld -> Das Spielfeld mit allen benötigten Daten
* @param column -> die Spalte an der das Zeichen gesetzt wurde
* @param row -> die Reihe an der das Zeichen gesetzt wurde
* @param zeichen -> das Zeichen
*/
static boolean IsGameOver(char[][] spielfeld, int column, int row, char zeichen) {
boolean b1 = GameIsOver_row(spielfeld, column, row, zeichen);
boolean b2 = GameIsOver_column(spielfeld, column, row, zeichen);
boolean b3 = GameIsOver_straight1(spielfeld, column, row, zeichen);
boolean b4 = GameIsOver_straight2(spielfeld, column, row, zeichen);
return (b1||b2||b3||b4);
}
static boolean GameIsOver_row(char[][] spielfeld, int column, int row, char zeichen) {
// nach links
int go = row - 1; // mit dem Punkt links neber dem gesetzten beginne
// ich
int i = 1; // der gesetzte Punkt = 1 Treffer
while (go >= 0) {
if (spielfeld[column][go] != zeichen)
break;
go--;
i++;
}
// nach rechts
go = row + 1;
while (go < spielfeld.length) {
if (spielfeld[column][go] != zeichen)
break;
go++;
i++;
}
return (i > 3);
}
static boolean GameIsOver_column(char[][] spielfeld, int column, int row, char zeichen) {
// nach oben
int go = column - 1;
int i = 1;
while (go >= 0) {
if (spielfeld[go][row] != zeichen)
break;
go--;
i++;
}
// nach unten
go = column + 1;
while (go < spielfeld.length) {
if (spielfeld[go][row] != zeichen)
break;
go++;
i++;
}
return (i > 3);
}
static boolean GameIsOver_straight1(char[][] spielfeld, int column, int row, char zeichen) {
// nach links oben
int go = row - 1;
int go2 = column - 1;
int i = 1;
while (go >= 0 && go2 >= 0) {
if (spielfeld[go2][go] != zeichen)
break;
go--;
go2--;
i++;
}
// nach rechts unten
go = row + 1;
go2 = column + 1;
while (go < spielfeld[0].length && go2 < spielfeld.length) {
if (spielfeld[go2][go] != zeichen)
break;
go++;
go2++;
i++;
}
return (i > 3);
}
static boolean GameIsOver_straight2(char[][] spielfeld, int column, int row, char zeichen) {
// nach links unten
int go = row - 1;
int go2 = column + 1;
int i = 1;
while (go >= 0 && go2 < spielfeld.length) {
if (spielfeld[go2][go] != zeichen)
break;
go--;
go2++;
i++;
}
// nach rechts oben
go = row + 1;
go2 = column - 1;
while (go < spielfeld[0].length && go2 >= 0) {
if (spielfeld[go2][go] != zeichen)
break;
go++;
go2--;
i++;
}
return (i > 3);
}
/**
* Bricht das Programm ab und liefert den Gewinner
* @param spielfeld -> Das Spielfeld mit allen benötigten Daten
*/
static void spielFertig(char[][] spielfeld) {
showSpielfeld(spielfeld);
System.out.println(SPIELER + " hat gewonnen\n");
System.exit(1);
}
/**
* Zeigt das komplette Spielfeld auf dem Bildschirm
* @param spielfeld -> Das Spielfeld mit allen benötigten Daten
*/
static void showSpielfeld(char[][] spielfeld) {
StringBuffer Geruest = new StringBuffer();
StringBuffer row_start = new StringBuffer(" "); // erste Zeile 1 2 3 4
StringBuffer row_divide = new StringBuffer("|"); // Trennzeile |-----|
StringBuffer row_end = new StringBuffer("-"); // letzte Zeile -------
if (spielfeld[0].length > 9) {
for (int i = 1; i <= spielfeld[0].length; i++)
row_start.append((i/10==0) ? " " : i/10).append(" ");
row_start.append("\n ");
}
for (int i = 1; i <= spielfeld[0].length; i++) {
row_start.append(i%10).append(" ");
row_divide.append((i==spielfeld[0].length)? "-|" : "--");
row_end.append("--");
}
System.out.println(row_start);
System.out.println(row_divide);
for (char[] arrZeile : spielfeld) { //iteriere durch alle Zeilen
for (char arrSpalte : arrZeile) { //iteriere durch alle Spalten
Geruest.append("|");
Geruest.append((arrSpalte == '\0') ? ' ' : arrSpalte);
}
Geruest.append("|\n");
}
Geruest.append(row_end).append("\n");
System.out.println(Geruest);
}
}