Diagonale von 2DArray auf gleichheit überprüfen

Taso44

Aktives Mitglied
Hallo zusammen,
ich bin gerade dabei ein vier gewinnt spiel zu programmieren.
Ich komme leider nicht mit der Überprüfung klar, ob ein Spieler gewonnen hat.

Bei der Überprüfung auf die Diagonale habe ich folgende Methode:

Java:
    public static boolean win(char[][] feld) {
        for (int i = 1; i < feld.length - 1; i++) {
            for (int e = 1; e < feld[i].length - 1; e++) {
                if (feld[i][e] == feld[i - 1][e - 1]) {
                    return true;
                }
            }
        }
        return false;
    }

Das Problem darin sehe ich so, dass die Zeichen an den "Rändern" nicht überprüft werden.
Außerdem gibt er einige werte als false aus obwohl true rauskommen sollte. (Ich denke eben genau wegen meines letzten Satzes)
Z.B.:
2D-Array:
a b c
e e b
k l m

Hier sollte true rauskommen wegen 'b', tut es aber nicht.
Danke schonmal für die Antworten.
MfG, Taso44
 
Im konkreten Fall macht es keinen Sinn nach oben auf length-1 zu beschränken. Grundsätzlich muss Dir aber klar sein, dass Du in jede Richtung mehrere "Diagonalen" prüfen musst. Z. B. könnte das l oder m auch ein e sein.
 

Zurück
Oben