Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/08/2014, 10:58
Avatar de anggiebs
anggiebs
 
Fecha de Ingreso: julio-2014
Ubicación: Madrid
Mensajes: 35
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta Arrays bidimensionales

Hola a todos :)
Tengo que hacer el juego Candy Crush en c++.
El array bidimensional tTablero tablero está dentro del struct tJuego juego,así:

typedef struct{
tTablero tablero;
int intentos;
int puntos;
}tJuego;

Al buscar si hay 3 o más elementos iguales en el array bidimensional (juego.tablero[filas][columnas]) tanto en filas como en las columnas,es decir,cuando se forman grupos,tengo que marcar a true estas posiciones en un array bidimensional de booleanos.
He hecho esto pero cuando compruebo en el array bidimensional de booleanos(tArrayBool grupo) si me reconoce los grupos que se han formado,siempre me sale el mismo resultado :

0000011100000111 .... (5 ceros y 3 unos)

Este es mi código :) :

Código C++:
Ver original
  1. const int FILAS=9;
  2. const int COLUMNAS=9;
  3.  
  4. [....]
  5.  
  6. void verGrupos(tJuego juego,tArrayBool grupo){
  7.     boolGrupos(grupo);//Inicializo el array bidimensional de booleanos a false.
  8.     int cont=1;
  9.  
  10.     for(int f=0; f< FILAS-1;){
  11.         for(int c=0; c< COLUMNAS-1; c++){
  12.             //Primero comprobar si hay grupos en horizontal
  13.             if(juego.tablero[f][c] == juego.tablero[f][c+1]){
  14.                 cont++;
  15.                 if(cont >=3){
  16.                     int i=c;//Asigno el valor de la columna en que me encuentro actualmente a i.
  17.                     int num=0;
  18.                     while(cont>num){//Siempre me va comparar con 0.
  19.  //Pongo a true la posición en la que estoy;la fila es constante cierto tiempo,lo que varía en cada momento es la columna.
  20.                                                 grupo[f][i] = true;
  21. //Disminuyo el contador porque ya he ido poniendo las posiciones anteriores a true en el array de booleanos.
  22.                                                cont--;
  23. //Disminuyo para que vaya a la columna anterior.
  24.                                                i--;
  25.                     }
  26.                 }
  27.             }
  28.             //else
  29.         }
  30.         f++;
  31.     }
  32. //Muestra lo que guarda el array de booleanos.
  33.     for(int f=0; f< FILAS-1; f++){
  34.         for(int c=0; c< COLUMNAS-1; c++){
  35.             cout << grupo[0][c] ;
  36.         }
  37.     }

Alguna idea de dónde puede estar mi error ?
Gracias :)