Hola de nuevo :) !
He hecho un procedimiento que mueva fichas hacia la derecha basándome en un array bidimensional de dimensión 4x4. Lo he probado y me funciona pero solo en el caso de las filas 0 y 1 ,en las filas 2 y 3 no .He estado pensando y no encuentro mi error ,podrían ayudarme :) ?
el orden de las filas y columnas va así :
columna: 0 1 2 3
fila 0
fila 1
fila 2
fila 3
Este es mi código :
Código C++:
Ver originalvoid moverDerecha(tTablero tablero){
bool encontradoValor = false;
for(int fila = 0; fila < N;fila++){
for(int col = N -1; col > 0; col--){ //El movimiento se realiza de la columna 3 hasta la columna 1.
if( tablero[fila][col] == VACIO ){ //Si la celda está vacía...
int j = col -1; //Entramos en la celda de la columna anterior pero misma fila.
while( (j >= 0) && (!encontradoValor) ){ //Mientras no se haya encontrado un valor(!= VACIO) y no se haya llegado hasta la columna 0.
if(tablero[fila][j] != VACIO){ //Si la celda de la columna anterior pero misma fila tiene un dato distinto de VACIO...
encontradoValor = true;
//Intercambio los valores:
tablero[fila][col] = tablero[fila][j];
tablero[fila][j] = VACIO;
}
else{ //Paso a analizar si la columna anterior en la misma fila tiene un dato distinto de VACIO.
j--;
}
}
}
}
}
}