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 original
void 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--; } } } } } }