Recursivity in the adjacencies of a matrix

1

I am trying to get my game to take the adjacent positions recursively, both on the sides (up, down, right, left) and on the diagonals.

However, when calling the recursive function again I can not pass the row or the column as a parameter.

Here my code:

//Comprueba que no se salga de la matriz, mira las posiciones adyacentes para ver si son iguales, si son iguales le suma la puntuación y pone el numero a cero.

public static int obtenerPuntuacion(int numeros[][], String coordenada) {

    int numeroPosicion = ObtenerNumero(numeros, coordenada);

    int fila = ObtenerFila(coordenada);
    int columna = ObtenerColumna(coordenada);

    int puntuacion = 0;

    if (columna != 0 && numeroPosicion == numeros[fila][columna -1]) {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila][columna -1] = 0;
    }

    if (columna != 8 && numeroPosicion == numeros[fila][columna +1]) {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila][columna +1] = 0;
    }

    if (fila != 0 && numeroPosicion == numeros[fila -1][columna]) {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila -1][columna] = 0;
    }

    if (fila != 8 && numeroPosicion == numeros[fila +1][columna]) {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila +1][columna] = 0;
    }

    if (fila != 0 && columna !=8 && numeroPosicion == numeros[fila -1][columna+1]) {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila -1][columna+1] = 0;
    }

    if (fila != 8 && columna !=8 && numeroPosicion == numeros[fila +1][columna+1]) {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila +1][columna+1] = 0;
    }

    if (fila != 8 && columna !=0 && numeroPosicion == numeros[fila +1][columna-1]) {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila +1][columna-1] = 0;
    }

    if (fila != 0 && columna !=0 && numeroPosicion == numeros[fila -1][columna-1]) {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila -1][columna-1] = 0;
    }

    if (puntuacion == 0) {
        puntuacion = puntuacion - numeroPosicion;
    } else {
        puntuacion = puntuacion + numeroPosicion;
        numeros[fila][columna] = 0;
    }

    return puntuacion;
}

Recursive function:

public static void puntuacionRecursiva(int numeros[][], String coordenada) {

    int numeroPosicion = ObtenerNumero(numeros, coordenada);

    int fila = ObtenerFila(coordenada);
    int columna = ObtenerColumna(coordenada);

     if ( fila<0 || columna<0 || fila>=numeros.length || columna>=numeros[fila].length )
          return;
        if ( numeros[fila][columna]!=numeroPosicion )
          return;
        puntuacionRecursiva(numeros[fila][columna -1]);
        puntuacionRecursiva(numeros[fila][columna +1]);
        puntuacionRecursiva(numeros[fila-1][columna]);
        puntuacionRecursiva(numeros[fila+1][columna]);
        puntuacionRecursiva(numeros[fila+1][columna -1]);
        puntuacionRecursiva(numeros[fila-1][columna +1]);
        puntuacionRecursiva(numeros[fila-1][columna -1]);
        puntuacionRecursiva(numeros[fila+1][columna +1])
}
    
asked by ElectronicYogurt3 15.11.2018 в 11:06
source

0 answers