Tach auch,
irgendwie ein merkwürdiges Problem... Der inhalt einer Variable verschwindet, wenn ich sie an eine 2. Prozedure übergebe..
So er prüft er ob das komplette Array Feld voll ist, dann nimmt er das ergebniss mit nach checkSenkrecht, wenn dort kein Gewinner feststeht, wird auch nix in die Variable geschrieben und das was ich übergeben habe, kommt auch so ins return..
so nun soweit, klappt das auch, aber sobald er dann in die checkWaagerecht geht (gleiche Spiel zuvor), schluckt er den Inhalt der Variable... also sollte nen sieger oder nen unentschieden vorher gewesen sein.
Hatte vorher beide for schleifen in zeigeErgebniss() und dort war es das selbe. daher hab ich se mal getrennt..
ps: nicht wundern über die Abfrage... geht wahrscheinlich viel einfacher, aber irgendwie fehlt mir da die phantasie.. ;D
irgendwie ein merkwürdiges Problem... Der inhalt einer Variable verschwindet, wenn ich sie an eine 2. Prozedure übergebe..
Java:
public static char zeigeErgebniss() {
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 = '?';
}
sieger = checkSenkrecht(sieger);
sieger = checkWaagerecht(sieger);
return sieger;
}
Java:
public static char checkSenkrecht(char sieger) {
for (int k = 6;k>=0;k--) {
if (spielfeld[0][k] == spielfeld[1][k]
&& spielfeld[1][k] == spielfeld[2][k]
&& spielfeld[2][k] == spielfeld[3][k]) {
sieger = spielfeld[0][k];
}
if ((spielfeld[1][k] == spielfeld[2][k]
&& spielfeld[2][k] == spielfeld[3][k]
&& spielfeld[3][k] == spielfeld[4][k])) {
sieger = spielfeld[1][k];
}
if ((spielfeld[2][k] == spielfeld[3][k]
&& spielfeld[3][k] == spielfeld[4][k]
&& spielfeld[4][k] == spielfeld[5][k])) {
sieger = spielfeld[2][k];
}
}
return sieger;
}
/** ******************************************
* Prüft ob Waagerecht ein Spieler 4 Steine nebeneinander hat
* @return sieger - Gibt den Sieger zurück
************************************************/
public static char checkWaagerecht(char sieger) {
for (int k = 5;k>=0;k--) {
if (spielfeld[k][0] == spielfeld[k][1]
&& spielfeld[k][1] == spielfeld[k][2]
&& spielfeld[k][2] == spielfeld[k][3]) {
sieger = spielfeld[k][0];
}
if ((spielfeld[k][1] == spielfeld[k][2]
&& spielfeld[k][2] == spielfeld[k][3]
&& spielfeld[k][3] == spielfeld[k][4])) {
sieger = spielfeld[k][1];
}
if ((spielfeld[k][2] == spielfeld[k][3]
&& spielfeld[k][3] == spielfeld[k][4]
&& spielfeld[k][4] == spielfeld[k][5])) {
sieger = spielfeld[k][2];
}
if ((spielfeld[k][3] == spielfeld[k][4]
&& spielfeld[k][4] == spielfeld[k][5]
&& spielfeld[k][5] == spielfeld[k][6])) {
sieger = spielfeld[k][3];
}
}
return sieger;
}
So er prüft er ob das komplette Array Feld voll ist, dann nimmt er das ergebniss mit nach checkSenkrecht, wenn dort kein Gewinner feststeht, wird auch nix in die Variable geschrieben und das was ich übergeben habe, kommt auch so ins return..
so nun soweit, klappt das auch, aber sobald er dann in die checkWaagerecht geht (gleiche Spiel zuvor), schluckt er den Inhalt der Variable... also sollte nen sieger oder nen unentschieden vorher gewesen sein.
Hatte vorher beide for schleifen in zeigeErgebniss() und dort war es das selbe. daher hab ich se mal getrennt..
ps: nicht wundern über die Abfrage... geht wahrscheinlich viel einfacher, aber irgendwie fehlt mir da die phantasie.. ;D
Zuletzt bearbeitet: