Ir ao conteúdo

Posts recomendados

Postado

Faço curso de TI na escola, e o professor deu uma atividade que era fazer um campo minado em C, sem muito problemas eu consegui fazer do meu jeito, porém o professor disse que não poderia fazer a atividade utilizando duas matrizes, o que me quebrou bastante, então se alguém puder me ajudar ou me dizer uma forma melhor de desenvolver o código, eu agradeço. O professor disse que é possível fazer o campo minado utilizando apenas um Do. Vou postar o código que fiz aqui:

#include <iostream>

int main (){
char matriz[5][5];
char matrizera[5][5];
int ponto = 0;
int bomba=0;
int vencer=0;
int lin;
int col;
int linha;
int coluna;

for(linha=0;linha<5;linha++){
    for(coluna=0;coluna<5;coluna++){
        matriz[linha][coluna] = 'o';
        matrizera[linha][coluna] = 'o';
    }
}
for(linha=0;linha<3;linha++){
    do{
        do{
            printf("Linha da bomba: ");
            scanf("%d",&lin);
        } while(lin<0 || lin>4);
        do{
            printf("Coluna da bomba: ");
            scanf("%d",&col);
        } while(col<0 || col>4);
    if (matrizera[lin][col] == 'x'){
        printf ("\nPosicao repitida\n");
        }
    } while (matrizera[lin][col] == 'x');
matrizera[lin][col] = 'x';
}


do{
    do{
    for(linha=0;linha<5;linha++){
        for(coluna=0;coluna<5;coluna++){
            printf("%c",matriz[linha][coluna]);
        }
        printf("\n");
    }
    do{
        printf("Linha da bomba: ");
        scanf("%d",&lin);
    } while(lin<0 || lin>4);
    do{
        printf("Coluna da bomba: ");
        scanf("%d",&col);
    } while(col<0 || col>4);
    if (matriz[lin][col] == '*'){
        printf ("\nPosicao Repitida\n");
    }
    } while(matriz[lin][col] == '*');
    if(matrizera[lin][col] == 'x'){
        bomba++;
    } else {
        ponto ++;
        matriz[lin][col]='*';
        matrizera[lin][col]='*';
    }
system("cls");
} while (ponto  < 10 && bomba != 1);

if (bomba > 0 ){
    printf ("O jogador 1 foi o vencedor: \n");
}else{
    printf ("O jogador 2 foi o vencedor: \n");
}
for(linha=0;linha<5;linha++){
        for(coluna=0;coluna<5;coluna++){
            printf("%c",matrizera[linha][coluna]);
        }
        printf("\n");
    }

system ("pause");
return 0;
}

 

  • Curtir 1
  • Membro VIP
Postado
12 horas atrás, Ruvik Withers disse:

[...] o professor disse que não poderia fazer a atividade utilizando duas matrizes, o que me quebrou bastante


Creio que o ideal seria você tentar descobrir formas, e os colaboradores tentarem ajudar com a implementação e/ou análise de viabilidade, pois faz parte do desenvolvimento esse processo de descoberta.

 

 

 

12 horas atrás, Ruvik Withers disse:

O professor disse que é possível fazer o campo minado utilizando apenas um Do. Vou postar o código que fiz aqui:

 

Creio que esse "Do" se refere ao "Do/While" (o comando em si é o While - laço de repetição), correto?.  Nesse caso, precisaria definir o que quer dizer com "apenas um". Seria um do/while só para todo o algoritmo ou um do/while para percorrer a matriz? ou seria outra coisa? De certo modo acho estranho essa limitação.

 

No aguardo.

  • Curtir 1
Postado

O professor apenas não quer que seja feito com duas matrizes(caso fizer, sera descontado nota), no entanto ele disse que o campo minado poderia ser feito ultilizando um "Do/While", porém nós não necessariamente teríamos que fazer com apenas um "Do/While", ele só disse isso pra deixar claro que nós poderíamos. :3

  • Curtir 2
Postado

@Ruvik Withers    você pode usar apenas uma matriz que dará certo sim, eu também fiz esse jogo de campo minado , pois meu professor de lógica de programação aqui do senac pediu para fazermos, e usei só uma matriz e consegui fazer o jogo bem parecido com o original , ele mostra quantas posições está a bomba próximo da posição que o usuário escolheu, e usei a própria matriz para guardar os caracteres do jogo como a bomba que é um " x "  e onde não é bomba é um " . " e também um número referente a distancia que se está da bomba, e a cada jogada é desenhada a matriz na tela .    mas seu código precisa ser todo modificado pois do jeito que está não conseguirá funcionar assim, começar do zero .

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!