Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int main(int argc, char *argv[])
- {
- if(argc>1)
- {
- int linha,coluna;
- FILE *jogobase= fopen(argv[1], "r");
- fscanf(jogobase,"%d %d\n\n",&linha,&coluna);
- char matrizpronta[26][26];
- int i,j;
- for(i=0;i<=linha;i++)
- {
- for(j=0;j<=coluna;j++)
- {
- fscanf(jogobase, "%c", &matrizpronta[i][j] );
- }
- }
- int lin,col;
- printf("\n\n ");
- for (int i = 0; i < coluna; i++)
- printf(" %d", i);
- printf("\n");
- for(lin=0;lin<linha;lin++)
- {
- printf(" %1d ",lin );
- for(col=0;col<coluna;col++)
- {
- printf(" - ");
- }
- printf("\n");
- }
- while(i==0)
- {
- printf("\n\n Digite 1 para resolver o campo minado:");
- scanf("%d",&i);
- }
- printf("\n\n ");
- for (int i = 0; i < coluna; i++)
- printf(" %d", i);
- printf("\n");
- for(lin=0;lin<linha;lin++)
- {
- printf(" %2d ",lin);
- for(col=0;col<coluna;col++)
- {
- printf("%3c ",matrizpronta[lin][col]);
- }
- printf("\n");
- }
- fclose(jogobase);
- }
- else
- {
- int cm1,lm1,contacelula=1,contvet=0,mina,a,diferente;
- int minas[10];
- int m1[10][10];
- srand(time(NULL));
- //atribui numeros inteiro a todas as celulas da matriz
- for ( cm1 = 0; cm1 < 10; cm1++)
- {
- for ( lm1 = 0; lm1 < 10; lm1++)
- {
- m1[cm1][lm1]=contacelula;
- contacelula++;
- }
- }
- printf("\n\n");
- //gera mina
- while (contvet<10)
- {
- mina=rand()%100+1;
- diferente=0;
- for (a=0;a<10;a++)
- {
- if (mina == minas[a])
- {
- contvet--;
- diferente=1;
- }
- }
- if (diferente ==0 )
- {
- minas[contvet]=mina;
- }
- contvet++;
- }
- //atribui as minas na martiz original
- for ( cm1 = 0; cm1 < 10; cm1++)
- {
- for ( lm1 = 0; lm1 < 10; lm1++)
- {
- for(contvet=0;contvet<10;contvet++)
- {
- if (minas[contvet]==m1[cm1][lm1])
- {
- m1[cm1][lm1]= 0;
- }
- }
- }
- }
- printf("\n\n");
- // tabela de bombas do usuaria
- char bombas[10][10];
- int cmb,lmb;
- //atribui bombas na tabela ( o para espaço vazio e x para bomba)
- for ( cm1 = 0; cm1 < 10; cm1++)
- {
- for ( lm1 = 0; lm1 < 10; lm1++)
- {
- for ( cmb = 0; cmb < 10; cmb++)
- {
- for ( lmb = 0; lmb < 10; lmb++)
- {
- if(cm1==cmb &&lm1==lmb)
- {
- if (m1[cm1][lm1]==0)
- {
- bombas[cmb][lmb]='x';
- }
- else
- {
- bombas[cmb][lmb]='o';
- }
- }
- }
- }
- }
- }
- //montando a tabela
- int auxlinha=0,auxcol=0,lin,col,linmax,colmax;
- int contabomba=0;
- cmb=0;
- lmb=0;
- int matrizpronta[10][10];
- while(cmb<10)
- {
- lmb=0;
- while(lmb<10)
- {
- if (bombas[cmb][lmb]=='o')
- {
- contabomba=0;
- if(lmb==0)
- {
- lin=cmb-1;
- col=lmb;
- linmax=cmb+2;
- colmax=lmb+2;
- for(auxlinha=lin;auxlinha<linmax;auxlinha++)
- {
- for(auxcol=col;auxcol<colmax;auxcol++)
- {
- if(bombas[auxlinha][auxcol]=='x')
- {
- contabomba++;
- }
- }
- }
- matrizpronta[cmb][lmb]=contabomba;
- }
- else if(lmb<9)
- {
- lin=cmb-1;
- col=lmb-1;
- linmax=cmb+2;
- colmax=lmb+2;
- for(auxlinha=lin;auxlinha<linmax;auxlinha++)
- {
- for(auxcol=col;auxcol<colmax;auxcol++)
- {
- if(bombas[auxlinha][auxcol]=='x')
- {
- contabomba++;
- }
- }
- }
- matrizpronta[cmb][lmb]=contabomba;
- }
- else if(lmb==9)
- {
- lin=cmb-1;
- col=lmb-1;
- linmax=cmb+2;
- colmax=lmb+1;
- for(auxlinha=lin;auxlinha<linmax;auxlinha++)
- {
- for(auxcol=col;auxcol<colmax;auxcol++)
- {
- if(bombas[auxlinha][auxcol]=='x')
- {
- contabomba++;
- }
- }
- }
- matrizpronta[cmb][lmb]=contabomba;
- }
- }
- else
- {
- matrizpronta[cmb][lmb]=9;
- }
- lmb++;
- }
- cmb++;
- }
- printf("\n\n");
- printf(" 0 1 2 3 4 5 6 7 8 9\n\n");
- for(lin=0;lin<10;lin++)
- {
- printf(" %1d ",lin );
- for(col=0;col<10;col++)
- {
- printf(" - ");
- }
- printf("\n");
- }
- int i=0;
- while(i==0)
- {
- printf("\n\n Digite 1 para resolver o campo minado:");
- scanf("%d",&i);
- }
- printf("\n\n");
- printf(" 0 1 2 3 4 5 6 7 8 9\n\n");
- for(lin=0;lin<10;lin++)
- {
- printf(" %2d ",lin);
- for(col=0;col<10;col++)
- {
- if ( matrizpronta[lin][col]<9 )
- {
- printf("%3d ",matrizpronta[lin][col]);
- }
- else if ( matrizpronta[lin][col]==9)
- {
- printf(" X ");
- }
- else
- {
- printf(" - ");
- }
- }
- printf("\n");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement