Hallo Leute,
ich sitze seit nun 2 Tagen an einer Methode, die ein Array diagonal abfragt ob ob entweder ein X , O oder ein Leerzeichen in dem Feld gespeichert ist. Es handelt sich um das Spiel Vier Gewinnt. Wenn Diagonal vier Gleiche Zeichen hintereinander erscheinen, wird ein boolean auf true gesetzt und der Main übergeben.
Bisher habe ich es mit einer For-Schleife versucht, jedoch bin ich immer auf Fehler gelaufen...
Da der Nutzer am Anfang des Programms, selbständig eingeben kann wie groß das Array werden soll, muss ich die Abfrage anhand der Arraygröße abhängig machen.
Wenn ich die Prüfung bei REIHE und SPALTE 0 beginnen lasse, bekomme ich eine out of Bounds Exception. Deswegen möchte ich die Prüfung in REIHE 3 starten lassen, da ab dieser position, wenn ich von links unten nach rechts oben prüfe, das erste mal möglich ist 4 gleiche Zeichen diagonal hintereinander zu setzten. Nachdem einmal durch geprüft wurde, muss die Reihe +1 genommen werden und wieder diagonal geprüft werden. Die Reihen werden so lange erhöht bis die letzte Reihe geprüft wurde.
Anschließend Startet eine zweite For schleife die an der letzten Reihe und letzte SPALTE - 3 startet. Sie Prüft zuerst diagonal von links unten nach rechts oben. Anschließend wird die Spalte -1 genommen. Diese For schleife läuft wiederum bis die position an der Spalte 0 angekommen ist.
Ich bitte euch um Hilfe... Ich kann die Bedingungen in Worte fassen, jedoch habe ich es leider nicht geschafft sie in Java umzuwandeln. Das ist mein bisheriger code:
ich sitze seit nun 2 Tagen an einer Methode, die ein Array diagonal abfragt ob ob entweder ein X , O oder ein Leerzeichen in dem Feld gespeichert ist. Es handelt sich um das Spiel Vier Gewinnt. Wenn Diagonal vier Gleiche Zeichen hintereinander erscheinen, wird ein boolean auf true gesetzt und der Main übergeben.
Bisher habe ich es mit einer For-Schleife versucht, jedoch bin ich immer auf Fehler gelaufen...
Da der Nutzer am Anfang des Programms, selbständig eingeben kann wie groß das Array werden soll, muss ich die Abfrage anhand der Arraygröße abhängig machen.
Wenn ich die Prüfung bei REIHE und SPALTE 0 beginnen lasse, bekomme ich eine out of Bounds Exception. Deswegen möchte ich die Prüfung in REIHE 3 starten lassen, da ab dieser position, wenn ich von links unten nach rechts oben prüfe, das erste mal möglich ist 4 gleiche Zeichen diagonal hintereinander zu setzten. Nachdem einmal durch geprüft wurde, muss die Reihe +1 genommen werden und wieder diagonal geprüft werden. Die Reihen werden so lange erhöht bis die letzte Reihe geprüft wurde.
Anschließend Startet eine zweite For schleife die an der letzten Reihe und letzte SPALTE - 3 startet. Sie Prüft zuerst diagonal von links unten nach rechts oben. Anschließend wird die Spalte -1 genommen. Diese For schleife läuft wiederum bis die position an der Spalte 0 angekommen ist.
Ich bitte euch um Hilfe... Ich kann die Bedingungen in Worte fassen, jedoch habe ich es leider nicht geschafft sie in Java umzuwandeln. Das ist mein bisheriger code:
Java:
static boolean spielIstGewonnen_diagonal1(String spielfeld[][], int row, int eingegebeneSpalte, int colum, String aktuellesSpielerzeichen) {
boolean spielIstGewonnen = false;
int o = 0; // der gesetzte Punkt = 1 Treffer
int won = 0;
for (int i = 3; i < row-1; i++) {
for (int k = 0; k < colum-1; k++) {
if (spielfeld[i][k] != aktuellesSpielerzeichen) { //Wenn an der Stelle [i][k] kein aktueller Spielstein liegt, o = 0
o = 0;
i--;
}else{
o++;
i--;
if (won > 3){
spielIstGewonnen = true;
}
}
}
row++;
colum++;
i = 4;
}
for (int k = colum-4; k < 0; k--) {
for (int i = row; i < row-1; i--) {
if (spielfeld[i][k] != aktuellesSpielerzeichen) { //Wenn an der Stelle [i][k] kein aktueller Spielstein liegt, o = 0
o = 0;
k++;
}else{
o++;
k++;
if (won > 3){
spielIstGewonnen = true;
}
}
}
row++;
colum++;
}
return spielIstGewonnen;
}
Zuletzt bearbeitet von einem Moderator: