Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- /*Se creara una funcion buscaminas con argumentos de mxn de valores de matriz, las coordenadas del click (x,y)
- 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
- * el valor de la variable global que sera cantidad. Si no hay, se colocara un cero y se llamara recursivamente a las casillas de
- * al lado a la funcion buscaminas. Pero con unos nuevos valores, es decir, los de a su alrededor. Y asi sucesivamente se iran
- * modificando cada uno de los valores de la matriz, para que despues en el principal, se vuelvan a imprimir. */
- char mat[50][50]; /*La matriz*/
- int cant; /*cantidad de bombas*/
- int hayYCantBombas(int m, int n, int cx, int cy){
- int a, b;
- for (a=-1; a<2; a++){
- for(b=-1; b<2; b++){/*aumenta cant cada vez que encuentra una bomba*/
- if(((cx+a)<=m)&&((cx+a)>=0)&&((cy+b)<=n)&&((cy+b)>=0)){
- if(mat[cx+a][cy+b]=='X')
- cant += 1;
- }
- }
- }
- if (cant == 0)
- return 0;
- else
- return 1;
- }
- void buscaminas(int m, int n, int cx, int cy){
- cant=0;
- int a, b;
- if(((mat[cx][cy])=='V')&&(hayYCantBombas(m,n, cx, cy)==1)){
- mat[cx][cy] = cant + '0';
- return;
- }
- if(((mat[cx][cy])=='V')&&(hayYCantBombas(m,n, cx, cy)==0)){
- mat[cx][cy] = '0';
- for (a=-1; a<2; a++){
- for(b=-1; b<2; b++){/*recorre los alrededores para hacer lo mismo y expandir*/
- if(((cx+a)<=m)&&((cx+a)>=0)&&((cy+b)<=n)&&((cy+b)>=0)){
- buscaminas(m, n, cx+a, cy+b);
- }
- }
- }
- }
- }
- int main(void) {
- int num, i, cx, cy, m, n, a,b ;
- scanf("%d", &num);
- for(i=0; i<num; i++){
- scanf("%d %d", &cx, &cy);
- scanf("%d %d", &m, &n);
- scanf("%c");
- for(a = 0; a < m; a++){/* Se reinicia la matriz*/
- for(b=0; b<n; b++){
- mat[m][n]= ' ';
- }
- }
- for(a = 0; a < m; a++){
- for(b=0; b<n; b++){
- scanf("%c", &mat[a][b]);
- }
- scanf("%c");
- }
- if(mat[cx][cy]=='X')
- printf("Perdiste");
- else{
- buscaminas(m, n, cx, cy);
- for(a = 0; a < m; a++){
- for(b=0; b<n; b++){
- printf("%c", mat[a][b]);
- }
- printf("\n");
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement