Hallo ich habe ein Problem, an dem ich schon seit ein paar Tagen dran sitze und es nicht gelöst bekomme
Aber da ja hier in der Java-Community einem garantiert geholfen wird (s.o.) bin ich hier doch bestimmt richtig.
So jetzt etwas zur Ausgangslage:
Ich habe ein simples Programm geschrieben. Es handelt von dem Spiel 4-Gewinnt.
Ich bin Student im ersten Semester und dies ist unser Abschlussprojekt.
Wir dürfen nur einmal static benutzen und dies nur im Zusammenhang public static void main().
Hier habe ich einmal die Klasse Main in der ich das "verbotene" static habe.
Und dann habe ich noch hier die Klasse Spieler, worin geprüft wird, ob einer gewonnen hat oder nicht. Wenn er gewonnen hat, dann setzte die "verbotene" static Variable auf true.
Ich hoffe es kann mir wirklich jemand helfen!
Gruß, Christopher
Aber da ja hier in der Java-Community einem garantiert geholfen wird (s.o.) bin ich hier doch bestimmt richtig.
So jetzt etwas zur Ausgangslage:
Ich habe ein simples Programm geschrieben. Es handelt von dem Spiel 4-Gewinnt.
Ich bin Student im ersten Semester und dies ist unser Abschlussprojekt.
Wir dürfen nur einmal static benutzen und dies nur im Zusammenhang public static void main().
Hier habe ich einmal die Klasse Main in der ich das "verbotene" static habe.
Code:
public class Main {
// darf das nicht verwenden
public static boolean isGEWONNEN = false;
/**
* @param args -> wird nicht benutzt
*/
public static void main(String[] args) {
// Erzeugen der Standardobjekte
Ausgabe Ausgaben = new Ausgabe();
Mensch Spieler1 = new Mensch();
Eingabe Eingaben = new Eingabe();
while(Eingaben.getIsWeiterspielen()){
// Ein neues Spielfeld erzeugen
Spielfeld Spielfeld = new Spielfeld();
// Begruessungsbildschirm
Ausgaben.printBegruessung();
// Den Zaehler auf 0 setzen. Dieser zaehlt die Spielzuege
int zaehler = 0;
// Die Anzahl der Spieler eingeben
Eingaben.eingabeSpieler();
// Abbruchbedingungen und zuruecksetzten der Werte
boolean unentschieden = true;
isGEWONNEN = false;
while (zaehler < 7 * 6 && Eingaben.getIsWeiterspielen() == true) {
// Unentschieden setzte ich auf false, damit er in diese Schleife bleibt
unentschieden = false;
if(Eingaben.getIsWeiterspielen() == true){
Ausgaben.printSpielfeld(Spielfeld.getFeld());
Ausgaben.printSpielerAmZug(Spieler1.getSpieler1());
Spieler1.eingabeZug();
Spieler1.setSpielstein(Spielfeld.getFeld(), Spieler1.getZug(),
Spieler1.getStein1());
if(isGEWONNEN == true)
break;
Ausgaben.printSpielfeld(Spielfeld.getFeld());
}
zaehler++;
// Wenn die Anzahl 2 ist, dann erzeuge 2.Spieler
if (Eingaben.anzahlSpieler() == 2) {
if(Eingaben.getIsWeiterspielen() == true){
Mensch Spieler2 = new Mensch();
Ausgaben.printSpielerAmZug(Spieler2.getSpieler2());
Spieler2.eingabeZug();
Spieler2.setSpielstein(Spielfeld.getFeld(), Spieler2.getZug(),
Spieler2.getStein2());
if(isGEWONNEN == true)
break;
Ausgaben.printSpielfeld(Spielfeld.getFeld());
}
// Andernfalls nur 1 und der andere Spieler ist der Computer
} else {
Computer Spieler2 = new Computer();
Ausgaben.printSpielerAmZug(Spieler2.getSpieler2());
Ausgaben.printComputerZug();
Spieler2.setSpielstein(Spielfeld.getFeld(), Spieler2.Zug(),
Spieler2.getStein2());
if(isGEWONNEN == true)
break;
Ausgaben.printSpielfeld(Spielfeld.getFeld());
}
zaehler++;
if (zaehler >= 7*6)
unentschieden = true;
}
// Wenn der Zaehler max. 42 Zuege erreicht hat, bricht er das Spiel ab
// Ausgabe Untenschieden wenn das Spielbrett voll ist
if (unentschieden == true && zaehler > 0){
Ausgaben.printUnentschieden();
Eingaben.isSpielbeenden();
}
}
Ausgaben.printExit();
}
}
Und dann habe ich noch hier die Klasse Spieler, worin geprüft wird, ob einer gewonnen hat oder nicht. Wenn er gewonnen hat, dann setzte die "verbotene" static Variable auf true.
Code:
public class Spieler {
private char spielstein1 = 'X';
private char spielstein2 = 'O';
private String spieler1 = "Spieler 1";
private String spieler2 = "Spieler 2";
private String computer = "Computer";
private char leeres_feld = ' ';
Eingabe e = new Eingabe();
Ausgabe a = new Ausgabe();
Pruefung p = new Pruefung();
/**
* Mit dieser Funktion werden die Eingaben ins Spielfeld gesetzt.
* Es erfolg nach jedem Zug eine Pruefung, ob ein Spieler gewonnen hat.
* Wenn die Reihe voll ist, wird eine Fehlermeldung ausgegeben.
* @param spielfeld -> das Array wird immer uebergeben
* @param eingabe -> Die Zahl, welche man eingegeben hat, wird hier der Spalte eingetragen
* @param _spielstein -> der Spielstein vom aktuellen Spieler wird ins Spielfeld eingetragen
*/
public void setSpielstein(char spielfeld[][], int eingabe, char _spielstein){
if(spielfeld[0][eingabe] != leeres_feld){
a.printReiheVoll();
} else {
// ueber dem Spielfeld
int i = -1;
// Speilstein faellt von oben nach unten solange das naechste Feld frei ist
while(spielfeld[i+1][eingabe] == leeres_feld){
// naechste Feld
i++;
// wenn er unten angekommen ist, höre auf
if(i+1 == spielfeld.length)
break;
}
// setzte den Spielstein in das letzte leere Feld
spielfeld[i][eingabe] = _spielstein;
if(p.pruefungZug(spielfeld, i, eingabe, _spielstein)) {
a.printSpielerGewonnen(_spielstein);
Main.isGEWONNEN = true;
e.isSpielbeenden();
}
}
}
}
Ich hoffe es kann mir wirklich jemand helfen!
Gruß, Christopher