Ir ao conteúdo
  • Cadastre-se

Campo minado


kalebes

Posts recomendados

Olá pessoal.

Eu tenho um projeto pra fazer(o ultimo do semestre)

É o campo minado, então eu não terminei ainda,estou bem no começo

mas é que tem uma parte do meu sw que está dando problema.

Eu comentei, é a parte sobre a disposição das bombas. Se alguém puder me ajudar fico muito grato.Segue abaixo.

#include <stdio.h>

#include<stdlib.h>

#include <time.h>

int main()

{

int op=0,i=0,j=0; // variáveis auxiliares

int lin=0,col=0,**mat; // variáveis da matriz

int lan=0,can=0;

int bomba=0,blinha=0,bcoluna=0,qtdebomba=0,maxbomba=0,somabomba=0; // qtde de bombas e suas auxiliares

do

{

srand( (unsigned)time(NULL) );

printf("###################################\n");

printf("#..Bem-vindo ao jogo campo minado.#\n");

printf("#1..........................Regras#\n");

printf("#2..................Comecar o jogo#\n");

printf("#3............................Sair#\n");

printf("###################################\n");

printf("Escolha a opcao: ");

scanf("%i",&op);

system("cls");

switch(op)

{

case 1:

printf("Opcao 1\n");

printf("Regras do jogo: \n");

printf("1.Se voce descobrir uma mina, o jogo acaba.\n");

printf("2.Se descobrir um quadrado vazio, voce continua jogando.\n");

printf("3.Se parecer um numero, ele informara quantas minas\nestao escondidas nos oito quadrados que o cercam\n");

printf("voce usa essa informacao para deduzir\nem que quadrados proximos é seguro clicar\n\n\n");

break;

//..............COMEÇO DO PROGRAMA CAMPO MINADO...............

case 2:

//..............LINHAS COLUNAS.......................

printf("Defina o tamanho do campo\n\n");

do

{

printf("Escolha um quantidade razoavel de linhas\n");

printf("para o campo\n");

scanf("%i",&lin);

system("cls");

}while(lin > 70 || lin < 5);

printf("Defina o tamanho do campo\n\n");

do

{

printf("Escolha um quantidade razoavel de colunas\n");

printf("para o campo\n");

scanf("%i",&col);

system("cls");

}while(col > 20 || col < 5);

//...................ALOCAÇÃO DINÂMICA DA MATRIZ..................

mat = (int **) malloc(lin *sizeof(int));

if(mat == NULL)

{

printf("!!!!!Memória Insuficiente!!!!!\n");

system("pause");

exit(1);

}

for(i = 0; i < col;i++)

{

mat = (int *) malloc(col * sizeof(int));

if (mat == NULL)

{

printf("!!!!!Memória Insuficiente!!!!!\n");

system("pause");

exit(1);

}

}

//****************BOMBAS******************************

maxbomba = (lin * col) - 1;

lan = lin -1;

can = col -1;

do

{

printf("Digite a quantidade de bombas\n");

printf("Minimo 5, maximo %i\n",maxbomba);

scanf("%i",&qtdebomba);

system("cls");

}while(qtdebomba > maxbomba || qtdebomba < 5);

//..........DISPOSIÇÃO ALEATÓRIA DAS BOMBAS................

for(i =0; i < lin; i++) // DEIXA TODOS OS CAMPOS VAZIOS

{

for (j =0; j< col; j++)

{

mat[j] = 0;

}

}

for(i =0; i < lin; i++)

{

printf("\n\n");

for (j =0; j< col; j++)

{

printf(" %i ",mat[j]);

}

}

printf("\n\n");

do //...........COLOCAR TODAS AS BOMBAS EM LUGARES DIFERENTES

{

somabomba = 0;

for(i = 0; i <= qtdebomba; i++)

{

blinha = rand() % lan;

bcoluna = rand() % can;

if(blinha == -1)

blinha = 0;

if(bcoluna == -1)

bcoluna = 0;

mat[blinha][bcoluna] = 1; // o nro 1 siginifica bomba

}

for(i = 0; i < lin; i++)

{

for (j =0; j < col; j++)

{

somabomba = mat[j] + somabomba;

}

}

}while(somabomba != qtdebomba);

for(i =0; i < lin; i++)

{

printf("\n\n");

for (j =0; j< col; j++)

{

printf(" %i ",mat[j]);

}

}

printf("\n\n");

free( mat);

break;

//fim do programa campo minado

case 3:

exit(1);

break;

default:

printf("!!!!Opcao nao presente!!!!\n");

printf("Escolha outra opcao\n\n\n");

break;

}

}while(op != 3);

}

valeu!!!!

Link para o comentário
Compartilhar em outros sites

voce pode criar a matriz.

e digamos, dar um numero X de minas.

após isso, usar 2 randons, um para linha e outro para coluna

e alocar em uma segunda matriz de "teste", pra mapear que naquela posição, tem uma mina

a lógica dos números do jogo (do windows, etc) não sei direito kk, nunca eentendi a moral dos números,

mas você pode começar com isso, randomizar as linhas e colunas pra colocar as minas

e sempre verificando se essa coluna já não tem uma mina.

qualquer dúvida, só perguntar

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...