Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Recursividad "Buscaminas"

Estas en el tema de Recursividad "Buscaminas" en el foro de C/C++ en Foros del Web. Buenas tengo hecho el juego del buscaminas en c++; y ahora intento implementar la recursividad en la hora de destapar las casillas, pero no me ...
  #1 (permalink)  
Antiguo 05/05/2011, 10:44
Avatar de mihina  
Fecha de Ingreso: mayo-2010
Ubicación: Girona
Mensajes: 32
Antigüedad: 14 años
Puntos: 1
Pregunta Recursividad "Buscaminas"

Buenas tengo hecho el juego del buscaminas en c++; y ahora intento implementar la recursividad en la hora de destapar las casillas, pero no me sale. Haver si alguien me puede ayudar! Gracias:

Código C++:
Ver original
  1. bool Taulell::preDestaparMarcar(char jugada)
  2.         {
  3.             bool sortir=false;
  4.  
  5.             cout << "INTRODUEIX LA POSICIO" << endl;
  6.             char posicio1, posicio2;
  7.  
  8.             cin >> posicio1;
  9.             cin >> posicio2;
  10.  
  11.             int x=posicio1-97;
  12.             int y=posicio2-65;
  13.  
  14.             if(x<a_files && x>=0 && y<a_colum && y>=0)
  15.             {
  16.                 if(jugada=='d') //DESTAPAR
  17.                 {
  18.                     if(a_Casella[x][y].obtEstat()==3) {
  19.                        bool mina=a_Casella[x][y].obtHiHaMina();
  20.  
  21.                         if(mina==false){
  22.                             destaparCasella(x,y);
  23.                             sortir=fiJoc();
  24.                         }   else{
  25.                             char continuar;
  26.  
  27.                             cout << "HAS TROBAT UNA MINA!" << endl;
  28.                             cout << "VOLS FER UNA NOVA PARTIDA? (s/n)" << endl;
  29.                             cin >> continuar;
  30.  
  31.                             if(continuar=='s')
  32.                             {
  33.                                 eliminarCasella();
  34.                                 preJugar();
  35.                             }
  36.                             else
  37.                             {
  38.                                 cout << "FI PESCAMINES" << endl;
  39.                                 sortir=true;
  40.                             }
  41.                         }
  42.                     }
  43.                 }
  44.                 else //MARCAR O DESMARCAR{
  45.                     marcaCasella(x,y);
  46.                 }
  47.             }
  48.             else{
  49.                 cout << "POSICIO INCORRECTA" << endl;
  50.             }
  51.             return sortir;
  52.         }

Código C++:
Ver original
  1. void Taulell::destaparCasella(int x,int y)
  2.         {
  3.             for(int f=-1; f<=1; f++)
  4.             {
  5.                 for(int c=-1; c<=1; c++)
  6.                 {
  7.                     if((f>=0 && f<a_files) && (c>=0 && c<a_colum))
  8.                     {
  9.                         if(!a_Casella[x+f][y+c].obtHiHaMina() && a_Casella[x+f][y+c].obtEstat()==3)
  10.                         {
  11.                             if (a_Casella[x+f][x+c].obtNumDeMines()>0)
  12.                             {
  13.                                  a_Casella[x][y].modEstat(1);
  14.                                  a_CasellesTapades--;
  15.                             }
  16.                             else
  17.                             {
  18.                                 a_Casella[x][y].modEstat(1);
  19.                                 a_CasellesTapades--;
  20.                                 destaparCasella(x+f,y+c);
  21.                             }
  22.                         }
  23.                     }
  24.                 }
  25.             }
  26.         }
  #2 (permalink)  
Antiguo 05/05/2011, 14:16
Avatar de mihina  
Fecha de Ingreso: mayo-2010
Ubicación: Girona
Mensajes: 32
Antigüedad: 14 años
Puntos: 1
Respuesta: Recursividad "Buscaminas"

Lo he solucionado: pongo la solucion por si a alguien le interesa; el primer metodo no he tocado nada solo he modificado el segundo.

Código C++:
Ver original
  1. void Taulell::destaparCasella(int x,int y, int f, int c)
  2.         {
  3.             if((x+f>=0 && x+f<a_files) && (y+c>=0 && y+c<a_colum)){
  4.                 if(!a_Casella[x+f][y+c].obtHiHaMina() && a_Casella[x+f][y+c].obtEstat()==3){
  5.                     if (a_Casella[x+f][y+c].obtNumDeMines()>0){
  6.                        
  7.                         a_Casella[x][y].modEstat(1);
  8.                         a_CasellesTapades--;
  9.                     }
  10.                     if (a_Casella[x+f][y+c].obtNumDeMines()==0){
  11.                        
  12.                         for(int f=-1; f<=1; f++){
  13.                             for(int c=-1; c<=1; c++){
  14.                                
  15.                                 a_Casella[x][y].modEstat(1);
  16.                                 a_CasellesTapades--;
  17.                                 destaparCasella(x+f,y+c,0,0);
  18.                             }
  19.                         }
  20.                     }
  21.                 }
  22.             }
  23.         }

Etiquetas: recursividad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:35.