das ganze programm oder die klasse?!
Es funktionierte noch, als das Programm in einer Klasse war.. nachdem Aufteilen in Klassen klappte es aufeinmal nicht mehr..
Das ganze Programm, wo es in einer Klasse war, hat ca. 450 zeilen..
Die Klasse Spielfeld nun, wo es drinnen steht 216..
ist die Spielfeld klasse.. ist das wichtigere..
Mein Prof meinte vorhin, dass es an meinem "Laptop" liegt, dass ich was falsch eingestellt habe. Hab aber nix umgestellt....
Es funktionierte noch, als das Programm in einer Klasse war.. nachdem Aufteilen in Klassen klappte es aufeinmal nicht mehr..
Das ganze Programm, wo es in einer Klasse war, hat ca. 450 zeilen..
Die Klasse Spielfeld nun, wo es drinnen steht 216..
Java:
ackage viergewinnt_aufgabe2;
/** ******************************************
* Klasse die das Spielfeld setzt, anzeigt und den Spieler setzt
************************************************/
public class Spielfeld {
private char[][] spielfeld = new char [6][7];
/** ******************************************
* Sezt das Spielfeld
************************************************/
public void setzeSpielfeld() {
for(int i = spielfeld.length - 1; i >= 0; i--) {
for(int j = spielfeld[i].length - 1; j >= 0; j--) {
spielfeld[i][j] = ' ';
}
}
zeigeSpielfeld();
}
/** ******************************************
* Zeigt das Spielfeld an
************************************************/
public void zeigeSpielfeld() {
for (int i=0;i<6;i++) {
for (int j=0;j<7;j++) {
System.out.print("|"+spielfeld[i][j]);
}
System.out.println();
System.out.println("--------------");
}
for (int j=1;j<8;j++) {
System.out.print("|"+j);
}
System.out.println("");
System.out.println();
}
/** ******************************************
* Prüft Senkrechte, Waagerechte und Diagonale Zeilen ob es ein Sieger gibt
* oder ob es Unentschieden endett
* @param feld - Feld des Arrays
* @param reihe - Reihe des Arrays
* @param spieler - Aktueller Spieler
************************************************/
public char hatGewonnen(int feld, int reihe, char spieler) {
boolean istunentschieden = true;
char sieger = ' ';
for(int i = spielfeld.length - 1; i >= 0; i--) {
for(int j = spielfeld[i].length-1; j >= 0; j--) {
if(spielfeld[i][j] == ' ')
istunentschieden = false;
}
}
if (istunentschieden) {
sieger = '?';
}
//vertikal nach unten
int zaehler=0;
int _reihe = reihe;
int _feld = feld;
for (int i = reihe; i<6;i++) {
if (spielfeld[_reihe][_feld] == spieler) {
_reihe++;
zaehler++;
}
}
if (zaehler>=4){
sieger = spielfeld[reihe][feld];
return sieger;
}
sieger = hatGewonnenHor(feld, reihe, spieler, sieger);
sieger = hatGewonnenDia(feld, reihe, spieler, sieger);
return sieger;
}
/** ******************************************
* Prüft Horizontal ob ein Gewinner feststeht
* @param feld - Feld im Array
* @param reihe - reihe die der Spieler angegeben hat
* @param spieler - Aktueller Spieler
* @param sieger - Zeigt den Sieger an
************************************************/
public char hatGewonnenHor(int feld, int reihe, char spieler, char sieger) {
//horizontal nach rechts
int _reihe = reihe;
int _feld = feld;
int z = feld;
int zaehler = 0;
for (int i = feld; i<7;i++) {
if (spielfeld[_reihe][_feld] == spieler) {
_feld++;
zaehler++;
}
}
//nach links
for (int c = feld; c>0;c--) {
if (spielfeld[_reihe][z-1] == spieler) {
z--;
zaehler++;
}
}
if (zaehler>=4){
sieger = spielfeld[reihe][feld];
return sieger;
}
return sieger;
}
/** ******************************************
* Prüft Diagonal ob ein Gewinner feststeht
* @param feld - Feld im Array
* @param reihe - reihe die der Spieler angegeben hat
* @param spieler - Aktueller Spieler
* @param sieger - wenn Aktueller sieger ist, wirds in Sieger gespeichert
************************************************/
public char hatGewonnenDia(int feld, int reihe, char spieler, char sieger) {
//diagonal nach links unten
int _reihe = reihe;
int _feld = feld;
int z = feld;
int j = reihe;
int zaehler = 0;
for (int i = feld, c = reihe;i>=0 && c<6;i--,c++) {
if (spielfeld[_reihe][_feld] == spieler) {
_reihe++;
_feld--;
zaehler++;
}
}
// rechts oben
for (int i = reihe, c = feld;i>0 && c<6;i--,c++) {
if (spielfeld[j-1][z+1] == spieler) {
j--;
z++;
zaehler++;
}
}
if (zaehler>=4){
sieger = spielfeld[reihe][feld];
return sieger;
}
//diagonal nach rechts unten
_reihe = reihe;
_feld = feld;
z = feld;
j = reihe;
zaehler = 0;
for (int i = reihe, c = feld; i<6 && c<7;i++,c++) {
if (spielfeld[_reihe][_feld] == spieler) {
_reihe++;
_feld++;
zaehler++;
}
}
//links oben
for (int i = feld, c = reihe;i>0 && c>0;i--,c--) {
if (spielfeld[j-1][z-1] == spieler) {
j--;
z--;
zaehler++;
}
}
if (zaehler>=4){
sieger = spielfeld[reihe][feld];
return sieger;
}
return sieger;
}
/** ******************************************
* Eingabe des Spielers wird in das Spielfeld gesetzt
* @param feld - Feld des Arrays
* @param spieler - Der Spieler, der am Zug ist
************************************************/
public int setzeSpielstein(int feld, char spieler) {
boolean istWahr = false;
int reihe = 0;
for (int i = spielfeld.length - 1; i >= 0 && !istWahr; i--) {
if (spielfeld[i][feld]== ' ') {
spielfeld[i][feld] = spieler;
istWahr = true;
reihe = i;
}
}
zeigeSpielfeld();
return reihe;
}
public boolean reiheVoll(int eingabe) {
boolean istVoll = true;
for (int i = 5; i >=0; i--) {
if (spielfeld[i][eingabe]== ' ') {
istVoll = false;
}
}
return istVoll;
}
}
ist die Spielfeld klasse.. ist das wichtigere..
Mein Prof meinte vorhin, dass es an meinem "Laptop" liegt, dass ich was falsch eingestellt habe. Hab aber nix umgestellt....