SHARE
TWEET

Untitled

a guest Apr 21st, 2017 47 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. /*Se creara una funcion buscaminas con argumentos de mxn de valores de matriz, las coordenadas del click (x,y)
  4.  Cada vez que haya una V donde se da click, entrara a una nueva funcion para verificar si a su alrededor hay bombas y para modificar
  5.  * el valor de la variable global que sera cantidad. Si no hay, se colocara un cero y se llamara recursivamente a las casillas de
  6.  * al lado a la funcion buscaminas. Pero con unos nuevos valores, es decir, los de a su alrededor. Y asi sucesivamente se iran
  7.  * modificando cada uno de los valores de la matriz, para que despues en el principal, se vuelvan a imprimir. */
  8. char mat[50][50]; /*La matriz*/
  9. int cant; /*cantidad de bombas*/
  10. int hayYCantBombas(int m, int n, int cx, int cy){
  11.    int a, b;
  12.    for (a=-1; a<2; a++){
  13.             for(b=-1; b<2; b++){/*aumenta cant cada vez que encuentra una bomba*/
  14.                 if(((cx+a)<=m)&&((cx+a)>=0)&&((cy+b)<=n)&&((cy+b)>=0)){
  15.                     if(mat[cx+a][cy+b]=='X')
  16.                         cant += 1;
  17.                 }
  18.             }
  19.         }
  20.    if (cant == 0)
  21.        return 0;
  22.    else
  23.        return 1;
  24. }
  25. void buscaminas(int m, int n, int cx, int cy){
  26.     cant=0;
  27.     int a, b;
  28.     if(((mat[cx][cy])=='V')&&(hayYCantBombas(m,n, cx, cy)==1)){
  29.         mat[cx][cy] = cant + '0';
  30.         return;
  31.     }
  32.     if(((mat[cx][cy])=='V')&&(hayYCantBombas(m,n, cx, cy)==0)){
  33.         mat[cx][cy] = '0';
  34.         for (a=-1; a<2; a++){
  35.             for(b=-1; b<2; b++){/*recorre los alrededores para hacer lo mismo y expandir*/
  36.                 if(((cx+a)<=m)&&((cx+a)>=0)&&((cy+b)<=n)&&((cy+b)>=0)){
  37.                     buscaminas(m, n, cx+a, cy+b);
  38.                 }
  39.             }
  40.         }
  41.     }
  42. }
  43. int main(void) {
  44.     int num, i, cx, cy, m, n, a,b ;
  45.     scanf("%d", &num);
  46.     for(i=0; i<num; i++){
  47.         scanf("%d %d", &cx, &cy);
  48.         scanf("%d %d", &m, &n);
  49.         scanf("%c");
  50.         for(a = 0; a < m; a++){/* Se reinicia la matriz*/
  51.            for(b=0; b<n; b++){
  52.                mat[m][n]= ' ';
  53.             }
  54.         }
  55.         for(a = 0; a < m; a++){
  56.             for(b=0; b<n; b++){
  57.                 scanf("%c", &mat[a][b]);
  58.             }
  59.             scanf("%c");
  60.         }
  61.         if(mat[cx][cy]=='X')
  62.             printf("Perdiste");
  63.         else{
  64.             buscaminas(m, n, cx, cy);
  65.             for(a = 0; a < m; a++){
  66.                 for(b=0; b<n; b++){
  67.                     printf("%c", mat[a][b]);
  68.                 }
  69.                 printf("\n");
  70.             }
  71.         }
  72.     }
  73.     return 0;
  74. }
RAW Paste Data
Top