
		leoflores
		
		(usa Linux Mint)
		
		Enviado em 03/06/2015 - 10:45h 
		FIZ E TA DANDO UM ERRO E NAO TO CONSEGUINDO RESOLVER, ALGUEM AJUDA PF
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include<stdint.h>
#include<stdio.h>
#define MAX 1000
typedef struct campominado{
      int Matriz[15][15];
      int MatrizB[15][15];
      char recorde[10];
      double tempo;
            int bombas;
}
Minas;
Minas campo[MAX];
int Menu2(){
    int escolha=0;
    do{
        fflush(stdin);
    scanf("%d",&escolha);
    if(escolha<1 || escolha>3)
      printf("Opcao Invalida entre com outra.\n");
     
    }
while(escolha<1 || escolha>3);
    return escolha;
}
int main(){
    int opcao;
    do{
       fflush(stdin);
       scanf("%d",&opcao);
       if(opcao<1 || opcao>2)
  printf("Opcao Invalida entre com outra.\n");
      }while(opcao>1 || opcao<4);
    return opcao;
}
int menu1() {
    int opcao=0;
    printf(" _______________________________________\n");
    printf("|\t\t\t\t\t|\n");
    printf("|\tBem vindo ao campo minado !!\t|\n");
    printf("|\tO que deseja fazer \t\t|\n");
    printf("|\t1-Jogar 2-Sair 3-Recorde\t|\n");
    printf("|_______________________________________|\n\n");
    opcao=Menu2();
    return opcao;
}
char intChar(int i) {
    switch (i) {
           case 0: return '0';
           case 1: return '1';
           case 2: return '2';
           case 3: return '3';
           case 4: return '4';
           case 5: return '5';
           case 6: return '6';
           case 7: return '7';
           case 8: return '8';
    }
}
void Imprime(int cont){
      int i,j,lin,col;
      printf("\t 1  2  3  4  5  6  7  8  9  10 11 12 13 14 15\n");
      for(i=1;i<=15;i++){
    printf("%d",i);
        printf("\t");
    for( j=1;j<=15;j++)
       printf("[%c]",campo[cont].Matriz[i][j]);
    printf("\n");
      }
      printf("\n[#]vazio\t[3]Bombas ao redor\t[-]Nao visitado\n[BB]BOMBA\t99-Sair\n\n");
}
void  verificaVizinhanca(int i){
      int qntbombas,lin,col;
     
      for(lin=1;lin<11;lin++){
         for(col=1;col<11;col++){
              qntbombas=0;
              
              if(campo[i].MatrizB[lin][col+1]==9)
                   qntbombas++;
              if(campo[i].MatrizB[lin][col-1]==9)
                   qntbombas++;
              if(campo[i].MatrizB[lin+1][col]==9)
                   qntbombas++;
              if(campo[i].MatrizB[lin-1][col]==9)
                   qntbombas++;
              if(campo[i].MatrizB[lin-1][col+1]==9)
                   qntbombas++;
              if(campo[i].MatrizB[lin-1][col-1]==9)
                   qntbombas++;
              if(campo[i].MatrizB[lin+1][col+1]==9)
                   qntbombas++;
              if(campo[i].MatrizB[lin+1][col-1]==9)
                   qntbombas++;
        
        if(campo[i].MatrizB[lin][col]!=9)
           campo[i].MatrizB[lin][col]=qntbombas;
           }
          
      }
}
int verificaCasas(int i, int n, int livres,int c){
if((campo[c].MatrizB[i][n]>0)||(campo[c].MatrizB[i][n]==-1)||(campo[c].MatrizB[i][n]==9)){
return livres;
}else{
livres++;
campo[c].Matriz[i][n]=' ';
campo[c].MatrizB[i][n]=-1;
livres = verificaCasas(i+1,n,livres,c);
livres = verificaCasas(i-1,n,livres,c);
livres = verificaCasas(i,n+1,livres,c);
livres = verificaCasas(i,n-1,livres,c);
return livres;
}
}
void Sorteio(int c){
    int lin,col,arm,qnt=0;
    srand(time(NULL));
    do{
    do{
            
        lin=rand()%9+1;
        col=rand()%9+1;
       
               if(campo[c].MatrizB[lin][col]==9){
            arm=-1;
                }else{
             campo[c].MatrizB[lin][col]=9;
                 arm=0;
                     }
        }while(arm==-1);
  qnt++;
      }while(qnt<campo[c].bombas);
}
void inicializa(int cont){
     int i,j;
     
     for(i=0;i<15;i++)
        for(j=0;j<15;j++)
            campo[cont].MatrizB[i][j]=-1;
           
     
     for( i=0;i<15;i++)
    for( j=0;j<15;j++)
  campo[cont].Matriz[i][j]='-';
   
    
     for(i=1;i<15;i++)
        for(j=1;j<15;j++)
            campo[cont].MatrizB[i][j]=0;
}
void LER(FILE *f,int cont){
     int i;
     for(i=0;i<cont;i++){
        fread(&campo[i], sizeof(LER),1,f);
     }
}
void SalvaRecorde(int cont){
    
    do{
       fflush(stdin);
       printf("\nEntre com o Nome do Jogador!!\n");
       gets (campo[cont].recorde);
       }while(campo[cont].recorde[0]=='\0');
}
void Salva(FILE *f,int cont){
     int i;
    
    printf("\nSalvando informacoes...\n");
    fflush(f);
    rewind(f);
    fwrite(&cont,sizeof(int),1,f);
    for(i=0;i<cont;i++){
       fwrite(&campo[i],sizeof(LER),1,f);
       }
    fflush(f);
    fclose(f);
    printf("Informacoes salvas com sucesso.\n");
    system("pause");
}
void ImprimeRecorde(int cont){
     int i;
    
     for(i=0;i<cont;i++){
         if(campo[i].recorde[0]!='\0'){
             printf("nome: %s\n",campo[i].recorde);
             printf("tempo: %f segundos\n",campo[i].tempo);
             printf("bombas: %d\n",campo[i].bombas);
         }
     }
}
void ImprimeBombas(int cont){
    int lin,col;
     for(lin=1;lin<=10;lin++){
          for(col=1;col<=10;col++){
               if(campo[cont].MatrizB[lin][col]==9){
                     campo[cont].Matriz[lin][col]='#';
                  }
          }
      }
     Imprime(cont);
     system("pause");
}
int cor (int argc, char *argv[]){        
    int cont=0, opcao, lin, col, qnt=0, escolha, resto, total;
    char cell;
    system("color 0f");   
    FILE *f;
    
     if((f=fopen("CampoMinado.dat","r+b"))==NULL){
         printf("\nComo nao existe um arquivo de dados o programa ira criar um\n");
         if((f=fopen("CampoMinado.dat","w+b"))==NULL){
              printf("\nErro na leitura do arquivo.\n");
              exit(1);
         }
         else
              printf("\nArquivo criado com sucesso.\n");
    }
   
    else
         printf("\nArquivo aberto com sucesso.\n");  
    system("pause");
    system("cls");
    rewind(f);
    
    fread(&cont,sizeof(int),1,f);
    LER(f,cont);
    
    opcao=menu1();
    printf("opcao: %d\n",opcao);
      if(opcao==3)
          ImprimeRecorde(cont);
         
      
      while((opcao!=2 && opcao!=3)&& cont<MAX){
     
                   
      inicializa(cont);
     
      
      clock_t start_time, end_time;
     
      printf("\n\nEscolha a Dificuldade do jogo!!\n\n[1]Facil\t\t[2]Medio\t\t[3]Dificil\n\n");
       
      escolha = Menu2();
      system("cls");
    
      start_time = clock();
     
     
      if(escolha==1)
        campo[cont].bombas=10;
       else if(escolha==2)
          campo[cont].bombas=30;
          else
          campo[cont].bombas=50;
 
      printf("\t\t  BOA SORTE!!\n");
      Sorteio(cont);
      verificaVizinhanca(cont);
      Imprime(cont);
      do{
          total=100-campo[cont].bombas;
          system("color 0f");
          do{
              do{
                  
                 fflush(stdin);          
                 printf("Escolha uma linha\n");
                 scanf("%d",&lin);
                 }while((lin<1 || lin>10) && lin!=99);
              if(lin==99)
                 break;
              do{
                 fflush(stdin);
                 printf("Escolha uma coluna\n");
                 scanf("%d",&col);
                 }while((col<1 || col>10)&& col!=99);
              if(col==99)
                 break;
              escolha = campo[cont].MatrizB[lin][col]; 
             
              if(campo[cont].Matriz[lin][col]!='-'){
                 system("cls");
                 Imprime(cont);
                 printf("\n\nCampo ja visitado entre com outro!!\n\n");
                 }
              }while(campo[cont].Matriz[lin][col]!='-');
             
              if(lin==99 || col==99)
                   break;
          if(escolha==9){
                campo[cont].Matriz[lin][col] ='#';
                system("cls");
                system("color 2A");
                system("color 3C");
                system("color 4D");
                system("color 1E");
                system("color 4B");
                Imprime(cont);
               
                printf("\nVOCE PERDEU!!! \n\n\a\a");
                system("pause");
                system("cls");
                ImprimeBombas(cont);
                break;
                }else if(escolha!=0){
               
                     cell= intChar(campo[cont].MatrizB[lin][col]);
                     
                     campo[cont].Matriz[lin][col] = cell; 
                     system("cls");
                     Imprime(cont);
                     qnt++;
                     }else{
                           
                           escolha=verificaCasas(lin, col,0,cont);
                           system("cls");
                           Imprime(cont);
                           qnt+=escolha;
                     }
          resto=(100-qnt)-campo[cont].bombas;
          printf("\nJogadas restantes: %d\n",resto);
         }while(resto>0);
           
         
        
         if(lin==99 || col==99)
             break;
        
         campo[cont].tempo = (end_time=clock()/600)-start_time/600;
         qnt=0;
     
      
      if(resto==0){
        printf("\n\nPARABENS VOCE GANHOU!!\n\n");
        system("pause");
        system("cls");
        ImprimeBombas(cont);
        }
      printf("Tempo total gasto %.2f segundos\n",campo[cont].tempo);
      printf("deseja continuar com o jogo 1- Sim 2-nao\n");
      opcao=escolha;
     
      printf("\nDeseja listar Os Records!! \n[1]Sim [2]Nao\n");
      escolha=escolha;
      system("cls");
      printf("%d\n",escolha);
      system("cls");
      if(escolha==1){
          ImprimeRecorde(cont);
          }
      if(resto==0)
         SalvaRecorde(cont);
         
      system("pause");
      system("cls");
      if(resto==0);
         cont++;
  }
   
    Salva(f,cont);
    return EXIT_SUCCESS;
}