Methoden Moving a n integer matrix

Jue

Mitglied
Hallo, ich versuche gerade eine 4x4 große Matrix innerhalb einer 20x20 Matrix zu bewegen. Beide sind binär, also die Felder können nur die Werte 1 oder 0 annehmen. Die 4x4 Matrix soll sich natürlich nur im Rahmen der größeren bewegen dürfen und auch nur, wenn dadurch keine anderen 1en "im Weg" sind.

Java:
private boolean tryMove(int[][] form, int newX, int newY) {
    if (newX < 0 || newY < 0)
        return false;
    for (int i = 0; i < shape[0].length; i++){
        for (int j = 0; j < shape.length; j++) {
            if (shape[i][j] == 1) {
                if (board[newY + i][newX + j] == 0){
                    board[curY + i][curX + i] = 0;
                    board[newY + i][newX + j] = 1;
                } else {
                    return false;
                }
            }
        }
    }
    return true;
}

Die Matrix wird mit einem KeyListener kontrolliert, hier ein Beispiel:

Java:
case KeyEvent.VK_LEFT:
     tryMove(shape, curX - 1, curY);
     break;

Vielen Dank für eure Hilfe!!
 
Oh ja, das habe ich tatsächlich vergessen zu erwähnen. Ich habe Probleme mit der Methode tryMove() - ich bekomme das irgendwie nicht hin, die kleine Matrix innerhalb der großen zu bewegen. Kann mir da jemand helfen?
 
Dan habe ich erstmal Gegenfragen. Du sagst du hast ein 4x4 und ein 20x20 Feld. Was ist was? Ich sehe form[][], shape[][] und board[][]. Das board 20x20 ist kann ich mir ja noch denken, aber welches ist die zu bewegende Figur? Was bedeudet das 3. Feld? Gibt es hier vielleicht eine Diskrepanz zwischen Klassen- und Funktionsvariablen?

Java:
if (newX < 0 || newY < 0)
Die Überprüfung ist sicherlich gut, aber bräuchtest du dann nicht auch eine Überprüfung auf ein Maximum?
 

Neue Themen


Zurück
Oben